Подтвердить что ты не робот

MVC3 App/Service Layer/Repository Layer/POCO Classes/EF4 - Вопросы!

Я новичок в этой концепции дизайна, и в течение последних нескольких недель я собрал много информации, но кажется, что она разбросана и конфликтует. Условия неоднозначны, и мне просто сложно обманывать это.

Используемый мною шаблон выглядит следующим образом:

Приложение 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" рядом с полем "Принять ответ":)

4b9b3361

Ответ 1

Просмотр моделей DTO?

Может рассматриваться как объект передачи данных между контроллером и представлением.

Должны ли они содержать только простые свойства, такие как Name, AddressLine1, Address City и т.д., или должны содержать сложные свойства, несколько объектов и т.д.

Идеально простые свойства, но также могут собирать другие модели просмотра, но не существует моделей (например, таких как модели EF).

Является ли проверка в модели представления.

Существует два типа логики проверки: проверка бизнеса (например, имя пользователя уже существует), которая входит в сервисный уровень и подтверждение UI (например: имя пользователя), который входит в модель представления.

Могут ли модели просмотра содержать классы POCO, возвращаемые из EF, или я должен использовать AutoMapper?

Нет моделей EF. Представленные модели представляют собой классы POCO с простыми свойствами и другими сложными свойствами, указывающими на другие модели представлений. Они также могут содержать методы для правильного форматирования данных, которые будут представлены в конкретном представлении, для которого предназначены эти модели.

Если вы используете AutoMapper и DTO, являются ли клоны DTO классов POCO?

Не уверен, что я понимаю этот вопрос.

Не могли бы вы отобразить в контроллере, просмотреть модель или на уровне сервиса ниже?

Контроллер.

Для меня служба (службы) - это объекты, которые обращаются к репозиторию (хранилищам), чтобы вернуть объекты POCO из EF. Вот где вся моя бизнес-логика. Как только служба передает объект обратно в хранилище, который сохраняется в EF, они считаются действительными объектами. Правильно ли это?

Да.

Является ли модель домена моделью EF?

Если вы используете первый подход EF Code, тогда да, в противном случае нет (если EF загрязняет домен с помощью специальных атрибутов и классов EF).

В них нет бизнес-логики, они просто используются для переноса объектов между службами (службами) и EF. Это верно?

Да.

Я реализую интерфейсы здесь с общим репозиторием. Затем вы можете расширить общий репозиторий для особых потребностей?

Да, но не слишком увлекайтесь. Обычно репозитории предназначены для операций CRUD. Это службы, которые должны содержать бизнес-логику.

Является ли бизнес-объект равным объекту домена?

Да.

Сколько логики должен содержать объект домена?

Это будет зависеть от объема логики домена, который у вас есть для конкретного проекта, который вы работаете, и от любой существующей логики домена, которую вы могли бы использовать из старых проектов, над которыми вы или кто-то еще работали.

Инъекция зависимостей. Должен ли я использовать это?

Да, абсолютно.

Я понимаю, как это работает, просто не получайте реальную выгоду

Он обеспечивает более слабую связь между различными слоями вашего приложения, что по очереди облегчает unit test и повторное использование в других проектах.

Я думаю, что сообщество выиграет от какой-то вики, в которой содержатся все лучшие практики с образцами кода.

Я согласен.

Есть ли что-то подобное?

Я сомневаюсь.

BTW - я думаю, что StackOverflow нужно немного, "Buy Me A Beer" рядом с флажком "Принять ответ"

Не могу согласиться больше.