MVC - это просто 3-х уровневая модель? - PullRequest
5 голосов
/ 18 ноября 2009

Только начал изучать mvc, и пока не уверен, что понял его. Насколько я понимаю, это похоже на реализацию 3-х уровневого решения, то есть Model соответствует DAL, Controller to layer уровня бизнес-логики и View as Presentation layer.

Я здесь далеко от базы?

Ответы [ 4 ]

8 голосов
/ 18 ноября 2009

Я предостерегаю не рассматривать Модель как просто слой доступа к данным. Это упрощает и приводит к тому, что вы помещаете слишком много кода в слой контроллера. Лучше, если вы добавите больше этого кода в модель и сделаете постоянное хранение базы данных только частью внутреннего кода модели. Мне нравится думать о MVC так:

  • Контроллер: обрабатывать ввод, определять, какую модель и какой вид создать для экземпляра
  • Просмотр: представление данных приложения
  • Модель: вся другая логика для приложения, включая, но не ограничиваясь, DAL

Это в основном шаблон Page Controller .

Еще один способ думать об этом заключается в следующем: предположим, что вам пришлось перенести ваше веб-приложение на другую платформу, такую ​​как приложение командной строки или приложение с графическим интерфейсом для настольного компьютера. Какие части логики приложения следует использовать повторно? Контроллер и представление будут меняться при переносе приложения на другую платформу, потому что реализация ввода и вывода должна будет измениться. Код, который не нужно изменять, должен быть реализован в вашей модели.

Если вы правильно сделали разделение задач, то модель, представление и контроллер были бы минимально связаны, и вы могли бы изменить реализацию одной из них, не слишком сильно влияя на другие. Если вы измените модель и обнаружите, что переписываете большой объем кода в контроллере или представлении, вы, вероятно, не разделяли эти слои должным образом. И наоборот.

Прочтите о Анемичной доменной модели Мартина Фаулера antipattern или Управляемый доменом дизайн Быстро , чтобы получить другие перспективы.

Также посмотрите мой блог за 2008 , который я написал в ответ на людей, осуждающих шаблон Active Record. Он получил несколько хороших комментариев и обсуждения.

3 голосов
/ 18 ноября 2009

Вроде. Это выглядит так:

alt text

Шаблон, наиболее часто используемый сегодня:

Database -> DAL -> BLL -> Controller -> View Model -> UI

Где

DAL == Data Access Layer (aka ORM, Object-Relational mapper)
BLL == Business Logic Layer

Обратите внимание, что вам не всегда нужен каждый слой. Например, BLL и View Model могут быть необязательными, если приложение достаточно маленькое.

Вам следует ознакомиться с учебным пособием NerdDinner. В нем описаны все эти концепции в едином справочнике.

1 голос
/ 18 ноября 2009

Вот несколько хороших объяснений, если вы новичок в MVC:

Кто-нибудь кроме меня просто НЕ получает ASP.NET MVC?

0 голосов
/ 18 ноября 2009

Короткое замечание, вы правы, когда говорите, что Контроллер может (не должен) быть бизнес-уровнем, а представление - уровнем представления.

Однако модель - это объекты (в зависимости от реализации), которые содержат данные, тогда как слой данных - это уровень, который извлекает / манипулирует данными.

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