Я хотел бы создать хорошее приложение в ASP.NET MVC 5, используя первую концепцию кода EF 6. Я хочу, чтобы он был хорошо спроектирован, т.е. имел, вообще говоря, разделенные уровни представления, логики и данных. Я хочу, чтобы это можно было проверить :)
Вот моя идея и некоторые вопросы, связанные с созданием приложения
Презентационный уровень: это весь мой MVC - модели просмотра (не модели), представления, контроллеры. Я считаю, что проверка должна выполняться где-то еще (на мой взгляд - это часть бизнес-логики), но это довольно удобно для использования атрибутов из пространства имен DataAnnotations в ViewModelds и проверки проверки в контроллере.
Логический уровень: службы — классы со своими интерфейсами для управления бизнес-логикой. Я поместил туда такие функции, как: AddNewPerson(PersonViewModel Person), SendMessageToPerson(...). Они будут использовать контекст БД для выполнения своих действий (есть шанс, что не все из них будут полагаться на контекст). Существует прямая связь между сервисом и базой данных - я имею в виду, что класс сервиса имеет ссылку на контекст. Где мне сделать сопоставление между ViewModel и Model? Слышал, что в сервисе плохое место для этого - может быть, в контроллерах. Я слышал, что служба должна выполнять работу, связанную исключительно с БД. Это правильно? Является ли моя картина сервисного уровня хорошей?
Уровень данных. Я много читал о шаблонах Repository и UoW. В некоторых статьях предполагается, что EF6 реализует эти две вещи. Я не хочу создавать лишний код, если в таком поведении нет необходимости. Вопрос в том, правильно ли я предполагаю, что они мне не нужны?
Вот мой поток:
Представление‹->Контроллеры (с использованием моделей представления)‹->Сервисы (с использованием моделей)‹->БД.
** Я буду использовать DI в своем проекте.
Что вы думаете о структуре моего проекта?