Используемые нами слои:
- Просмотр (со строго типизированными моделями просмотра)
- Контроллер
- Просмотр модели Service
- Бизнес-услуги
- Репозитории
- (EF) Контексты
Представления - настолько тонкие, насколько это возможно - без логики - просто отображать
Просмотр моделей - С строгой типизациейper view - не содержит сущностей, а только те поля, которые нам нужны в любом представлении.
Controller - только маршрутизация и вызовы в VMS.Обрабатывает исключения, всплывающие с нижних уровней, путем маршрутизации на страницы ошибок.
View Model Services - создает и распаковывает модели представления в объекты EF.Нет логики доступа к данным.Один VMS на контроллер.Активно использует AutoMapper для передачи данных модели представления в сущности.
Бизнес-сервисы - основная точка доступа к данным.Одна БС на контроллер.Использует столько хранилищ, сколько требуется для выполнения своей работы.Контроллер объема транзакций здесь.VMS делает один вызов к BS - который оборачивает все необходимые вызовы DB в одну транзакцию, если требуется.В будущем мы ожидаем, что БС будет обращаться к внешним службам.
Репозитории - один объект для каждого (верхнего уровня) - выполняет все операции CRUD для группы объектов.Наши объекты - это большие, сложные графы объектов - поэтому мы обрабатываем самый верхний родительский элемент для каждого хранилища.
Контексты - тонкие обертки вокруг сгенерированных EF контекстов, так что они могут меня высмеивать.
С точки зренияMVC - часть модели состоит из всего, что находится под контроллером.