Я новичок во всей этой концепции дизайна, и в чтении за последние несколько недель я собрал много информации, но она кажется разбросанной и противоречивой.Термины смешаны, и мне просто трудно обдумать это.
Шаблон, который я использую, похож на этот и предполагает следующий процесс:
Приложение MVC
Контроллер (-ы) обрабатывают запрос / ответ от клиента для данного представления.Внутри методов действия контроллеров они связываются со службами (Service Layer) и либо запрашивают объекты для построения моделей представления, и отправляют объекты из моделей представления обратно.
Модели представления
Я использую строго типизированные модели представления для и из видов.
Являются ли модели видов DTO?Если они содержат только простые свойства, такие как Name, AddressLine1, Address City и т. Д., Или если они содержат сложные свойства, несколько объектов и т. Д.
Является ли проверка в модели представления.Если это так, будет ли это проверка, например, обязательные поля, длина поля и т. Д. Тогда проверка, такая как имя пользователя, уже существует, или где вам нужно будет взаимодействовать с другими объектами на уровне обслуживания?
Могут ли модели представления просто содержатьклассы POCO, возвращенные из EF, или я должен использовать AutoMapper?
Если используются AutoMapper и DTO, являются ли клоны DTO классами POCO?
Будете ли вы отображать в контроллере, просматривать модельили на уровне сервисов ниже?
Сервисы
Для меня сервис (ы) - это объекты, которые обращаются к репозиторию (ам) для получения объектов POCO из EF.Вот где вся моя бизнес-логика.Как только служба передает объект обратно в хранилище для сохранения в EF, они считаются допустимыми объектами.Это правильно?
Репозитории
В них нет бизнес-логики, они просто используются для транспортировки объектов между сервисом (ами) и EF.Это правильно?Я реализую интерфейсы здесь с общим хранилищем.Тогда вы могли бы расширить общий репозиторий для особых нужд?
Вопросы по терминологии
1) Соответствует ли бизнес-объект объекту домена?Сколько логики должно содержать объект домена?
2) Является ли модель домена моделью EF?Я использую подход Model-First.
3) Внедрение зависимостей - Должен ли я использовать это?Я понимаю, как это работает, просто не получаю реальную выгоду.Я играл с Ninject.
Я думаю, что сообщество получило бы пользу от какой-то вики, которая содержала бы все лучшие практики с примерами кода.Есть ли что-то подобное там?Многие примеры очень просты, и многие образцы Microsoft не используют этот шаблон, даже когда заявляют.
Заранее спасибо всем, кто имеет и поможет мне в этом.
Кстати: я думаю, что StackOverflow нужно немного нажать кнопку «Купить мне пиво» рядом с флажком «Принять ответ»:)