Как правильно выбрать структуру решения ASP.NET MVC 3, справочную информацию и интеграцию Automapper? - PullRequest
4 голосов
/ 11 февраля 2012

Я создал решение ASP.NET MVC 3.Он состоит из трех отдельных проектов.Я собираюсь использовать Automapper и Unity.Каждое представление имеет свою собственную ViewModel.

Проекты:

  • DATA (Code First Модели и классы хранилища находятся в этом проекте)
  • BUSINESS (Классы обслуживаниянаходятся в этом проекте. Проект DATA добавлен в качестве ссылки.)
  • WEB (Проект WEB UI. Это проект MVC. Проект BUSINESS добавлен в качестве ссылки.)

Теперь у меня есть 2 вопроса.

  1. Является ли эта структура проекта хорошей практикой?
  2. Я пытаюсь использовать Automapper со своими сервисными вызовами в контроллерах.Однако, если я использую Automapper в контроллере, мне нужно добавить проект DATA в качестве ссылки в моем WEB-проекте, чтобы выполнить преобразования из POCO в ViewModels.Разве веб-проект не должен взаимодействовать только с бизнес-проектом?

Нужна помощь.

Спасибо.

Ответы [ 3 ]

1 голос
/ 11 февраля 2012

Вопрос 1 Это субъективно, и это не лучшее место, чтобы спросить его. Однако, что бы это ни стоило, в проектах, которые я поддерживаю, обычно есть проекты Core, Web и Services.

Вопрос 2 Нет, исходя из вашего примера и моего опыта, для вашего веб-проекта нормально иметь ссылки на ваш проект DATA and BUSINESS. Для нас наши веб-проекты знают о наших проектах Core и Services. Тем не менее, наш сервисный проект не имеет ссылки на наш веб-проект. По этой причине наша конфигурация Automapper действительно знает, как отображать и использовать сервисные модели, модели просмотра и модели сущностей.

Это помогает? Дайте мне знать в комментариях, если вы хотите, чтобы я уточнить. Пройдя немного вниз в этом блоге , вы можете найти изображение, изображающее настройку проекта, аналогичную той, что мы используем.

0 голосов
/ 11 февраля 2012

Я знаю, что вы уже приняли ответ Шанабуса, но я хотел бы добавить кое-что к обсуждению, которое также может быть полезным по второму вопросу.

MVC действительно представляет собой архитектурный шаблон уровня представления, который может привести к другому способу структурирования вашего проекта: слой представления (ваш WEB-проект) должен говорить только в терминах объектов View Model, потому что это то, что действительно имеет для него значение. Поэтому ваш бизнес-проект (или сервисный уровень) должен отвечать за перевод из Model в ViewModel и наоборот, используя, например, AutoMapper, имея ссылку на слой Model и Repository (в данном случае ваш проект Data). Учитывая, что слой Presentation больше не отвечает за перевод из Model в ViewModel и наоборот, вы можете удалить ссылку на проект Data и решить вашу проблему.

Более подробное и подробное объяснение вы можете найти по следующей ссылке: http://msdn.microsoft.com/en-us/magazine/hh456393.aspx

Надеюсь, это поможет

0 голосов
/ 11 февраля 2012

То, что вы описываете, является обычным подходом, и в этом нет ничего плохого.Конечно, могут быть подходы, которые можно считать альтернативой.Но это зависит от ваших реальных требований и также зависит от личных предпочтений.

Ваши POCO в основном являются объектами вашего бизнеса.И даже если они находятся в проекте DATA, они являются частью вашего домена.Часто лучше просто поместить ссылку на DATA в ваш проект пользовательского интерфейса, пока не потребуется более сложное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...