2016-07-03 5 views
0

Я прыгал между статьями и вопросами, но я не могу найти нужную мне информацию.MVC с архитектурой N-уровня

Когда я начал изучать MVC, учебники и статьи указали, что:
* Модель: где вы бизнес-логика идет
* Контроллер: где данные доступ и обработка запроса/ответить бывают.

Я работаю с MVC какое-то время, и я хотел перенести старый простой проект в MVC. В проекте у меня есть уровни доступа к бизнесу и доступу к данным. После прочтения архитектуры N-Tier MVC мое понимание изменилось.

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

Таким образом, мой вопрос заключается в следующем: предположим, что у меня есть проект MVC, и у меня есть еще два проекта, бизнес и доступ к данным. Правильно ли это отношение?

* Модель, будет в основном иметь те же свойства, что и в соответствующем бизнес-объекте.
* Контроллер вызовет DataAccess-Layer для извлечения данных, данные будут возвращены как бизнес-объект, который будет отображен в модель и затем возвращен в представление.

+0

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что вопросы о архитектуре программного обеспечения принадлежат программистам.stackexchange.com – Rob

+0

@Rob при обращении к другим сайтам часто бывает полезно указать, что [перекрестная публикация неодобрительно] (http://meta.stackexchange.com/tags/cross-posting/info) – gnat

+0

@gnat Этот вопрос, вероятно, будет перемещаться по моду, но, если он перекрестков, это будет удалено. – Rob

ответ

0
  1. Модель не всегда соответствует субъектам хозяйствования. Поскольку модели в MVC используются для отображения объектов, которые будут отправляться для просмотра. Таким образом, они могут быть немного более сильными, чем субъекты бизнес-домена. Верно, что ваша модель домена будет сопоставлена ​​с моделью mvc.
  2. Второе заявление Я соглашаюсь на 100%.
+0

Я понимаю, что вы говорите о моделях, но не считается дублированием, чтобы иметь два класса, представляющих один и тот же объект. Не могли бы мы просто сделать часть модели в MVC как бизнес-уровень и заставить контроллер взаимодействовать с ней. – ykh

+0

Нет), поскольку сущности из db иногда будут существенно отличаться от моделей mvc. Например, на ваш взгляд вам нужно всего лишь 2 опоры. И в вашем db у вас будет Человек с 10 опора. И, скорее всего, вы будете сопоставлять одну сущность с другой, используя mappers или ext методы – Alexandr

0

ли отношение в этой манере, верно?

Ответ на этот вопрос зависит от масштаба вашего проекта и размера команды, но позвольте мне объяснить вам архитектуру моих проектов.

  • MVC: презентация слой, это запуск проекта приложения.
  • Common: Это библиотека классов, которая содержит набор основных классов, таких как помощники, базовые классы ... Этот проект относится ко всем другим проектам.
  • Хранилища: Для чтения и записи в базу данных я создаю проект и называю его репозиториями. На самом деле я реализовал единицу работы с шаблоном репозитория. Реализация этих шаблонов может помочь изолировать ваше приложение от изменений в хранилище данных.
  • Тест: Является тестовым проектом для слоя презентации.

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

Смежные вопросы