2013-09-11 11 views
1

Я начинаю новый проект, поэтому пришло время переоценить, как я это делаю.Инкапсуляция слоя без перегрузки модели?

В последнее время я создал проект уровня 3 уровня/уровня (UI, Domain, Data) с каждым уровнем с собственной отдельной моделью. У DAL есть данные, используемые объектом Domain, который сопоставил их с моделями домена, которые были использованы пользовательским интерфейсом, который сопоставил их с ViewModels.

Это позволило провести некоторую дифференциацию на каждом уровне (особенно в пользовательском интерфейсе), но отображение было крайне утомительным (Automapper помог немного), а уровни домена и данных были в основном 1: 1, при этом наиболее подходящими были модели представления пользовательского интерфейса. ,

Я пытаюсь понять, как упростить для моего следующего проекта, и я мог бы использовать некоторые предложения.

Редактировать: Как бы то ни было, я рассматриваю возможность использования набора dto между уровнем домена и уровнем данных. Он больше блокирует меня в структуре datbase, но сохраняет много сопоставлений между идентичными типами.

ответ

1

Я думаю, вы могли бы взглянуть на MVVM, тем более что это для разделения интерфейса/модели, которое вы уже считаете полезным. Он меньше фокусируется на данных (по крайней мере, не для разделения данных).

Также многие люди разделяют данные (называемые моделью в MVVM) и сериализацию данных.

Насколько я могу судить, Домен и данные настолько тесно связаны, что вы не должны его разделять (я никогда этого не делаю). Но, может быть, ваше определение домена и данных немного отличается.

+0

Недостатком является то, что я заблокирован в ASP.NET MVC (не плохо), и я не хочу размещать MVVM поверх MVC. Как бы то ни было, я могу создать набор DTO, которые будут разделяться между доменом и данными, с UI, поддерживающим модели просмотра. Недостатком является то, что он блокирует меня в структуре базы данных немного больше, но я мог бы добавить случайные исключения. –

+0

MVVM и MVC аналогичны «шаблонам проектирования», поэтому я не буду использовать их оба. –

 Смежные вопросы

  • Нет связанных вопросов^_^