ASP.NET MVC - модель представления, модель предметной области и модель данных
Я использую Entity Framework в моем последнем проекте ASP.NET MVC 3. Поскольку это прежде всего БД, структура сущностей генерирует модели БД. На моем сервисном (бизнес) уровне я Scaffold (MvcScaffolding) для генерации сервисных методов, представлений и контроллеров. Строительные леса также генерируют доменные модели. При привязывании этих моделей к представлениям я использую модели представления.
Короче говоря, я использовал три типа моделей. Это нормально? Модели представлений хранятся на уровне представления, доменные модели - на бизнес-уровне, а модели данных - на уровне хранилища.
Пожалуйста, поделись своими мыслями.
2 ответа
Это звучит хорошо и действительно имеет несколько преимуществ.
Вы можете воссоздать модели своей базы данных с нуля, не затрагивая модели предметной области, кроме как, разумеется, их отображения. Некоторые утверждают, что эти два могут быть объединены в один, но это глубоко зависит от вашей настройки.
Отдельные модели представлений предоставят вам больше свободы для изменения и создания новых моделей представлений в соответствии с вашими представлениями. Это также помогает предотвратить позднюю загрузку прокси и т. Д.
Многие люди также имеют набор объектов Dto. Они полезны как набор объектов для кеширования, а также, если у вас более одного пользовательского интерфейса, например, службы Windows.
Automapper очень популярен, чтобы облегчить боль, связанную с тем, что на карту наносится столько моделей.
Это хорошо, когда у вас есть различия между моделями на каждом уровне. Если все, что вы делаете с этими моделями, помещает данные из одной модели слоя в другую модель слоя без какого-либо преобразования и обработки, вы можете удалить избыточные модели. В общих случаях доменная модель становится избыточной.
Вы должны создать отдельную модель представления и модель базы данных из-за необходимости иметь возможность воссоздать модель базы данных из базы данных без изменения представлений.