Я новичок в этой концепции дизайна, и в течение последних нескольких недель я собрал много информации, но кажется, что она разбросана и конфликтует. Условия неоднозначны, и мне просто сложно обманывать это.
Используемый мною шаблон выглядит следующим образом:
Приложение 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 не используют этот шаблон даже при запросе.
Спасибо заранее всем, кто имеет и поможет мне с этим.
BTW - я думаю, что StackOverflow нужно немного, "Buy Me A Beer" рядом с полем "Принять ответ":)