Как может работать трехуровневая архитектура MVC (ASP.NET MVC)? - PullRequest
4 голосов
/ 15 июня 2010

Я пишу проектный документ, и люди из моей команды готовы перейти с ASP.NET WebForm на ASP.NET MVC.Это здорово, но мне трудно понять, как MVC работает с 3-уровневой архитектурой (Уровень данных, Бизнес уровень и Уровень представления).Можно ли сказать, что модель, представление и контроллер являются частью уровня представления?Является ли модель частью бизнес-уровня?

Вкратце, как MVC и трехуровневая архитектура могут работать вместе?Спасибо за помощь!

Ответы [ 7 ]

17 голосов
/ 15 июня 2010

Я считаю, что ASP.Net MVC находится на уровне представления. Используемые им классы «Model» на самом деле являются моделями представления, которые описывают структуры данных, необходимые для ваших представлений. Вся ваша бизнес-логика и доступ к данным должны быть отделены от ваших моделей MVC и контроллеров.

Кроме того, общая «передовая практика» для MVC состоит в том, чтобы максимально упростить код контроллера, что обычно означает введение некоторого сервиса приложений для вашего бизнес-уровня, который обрабатывает тяжелую работу.

4 голосов
/ 15 июня 2010

Уровень презентации - это ваш вид.

Уровень данных - это ваша модель (рекомендуем посмотреть на шаблон репозитория).

Бизнес-уровень остается тем, чем он является.

Контроллер может вызывать бизнес-уровень для функциональности, когда объект загружен, или модель может вызывать бизнес-уровень для функциональности, когда запрашивается конкретная модель представления, но в остальном он остается прежним.

В контроллере не должно быть обширной бизнес-логики - поместите ее в свою собственную автономную DLL.

1 голос
/ 24 ноября 2011

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

Я бы сказал, что чтение книг по MVC 3 и просмотр видео с pluralsight.com - это ваши самые большие ресурсы.Вы не можете пойти с «делать то, что работает для вашей команды».Если, скажем, коллеги по работе Джонни и Тимми хотят добавить в контроллер кучу логики, просто потому, что в краткосрочной перспективе крайний срок, который «работает на вашу команду», не делает его правильным / хорошим / умным.

Я нашел в Интернете так много плохих статей, что страшно, как много людей ведут по темной дороге страданий.Следуй счастливому пути.Используйте stackoverflow для мнений, подобных искусству, но проверяйте статьи msdn, книги mvc и pluralsight.com

1 голос
/ 16 июня 2010

Прежде всего, вам не нужно переходить на MVC только потому, что ... Если у вас есть что-то, что работает, я не думаю, что вам нужно.

Но, к вашему вопросу, Модельв шаблоне MVC - это любой класс, представляющий вашу бизнес-задачу, который может быть любого рода вычислениями, бизнес-правилами или классами доступа к данным.В инфраструктуре MVC есть папка как способ предложить вам решение, так что вы можете разместить там свои классы моделей, но вам не нужно, вы можете создавать различные проекты, чтобы решать свои бизнес-задачи, и это ваша Модель.Итак, здесь вы можете определить любой другой шаблон, который вы используете для экземпляра, вы можете использовать шаблон репозитория и реализовать его с помощью NHibernate или Entity Framework.

Представления - это просто веб-страницы, которые показывают и получают информацию от и изuser.

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

Надеюсь, я мог помочь.

1 голос
/ 15 июня 2010

Это довольно субъективно. Делайте то, что имеет смысл для вашей команды.

MVC может быть довольно гибким, и почти ни одна инфраструктура MVC для всех языков не работает одинаково.Даже в .net пространстве.FubuMVC, Spring.net и MS MVC все делают по-разному.

0 голосов
/ 15 июня 2010

«Уровень» - это единица развертывания, а «Уровень» в MVC - это логическое разделение ответственности внутри кода.

0 голосов
/ 15 июня 2010

Я знаю, что это просто ссылка на Википедию, но здесь есть некоторая информация здесь относительно n-уровневой архитектуры против MVC.

...