4

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

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

+0

Возможные дубликаты: http://stackoverflow.com/questions/899803/have-i-implemented-an-tier-application- с-mvc-правильно? rq = 1, http://stackoverflow.com/questions/1135056/mvc-application-how-does-mult-tier-architecture-fit-in?rq=1, http: // stackoverflow. com/questions/2843311/what-is-difference-of-development-a-website-in-mvc-and-3-level-or-n-level-architect? rq = 1, http://stackoverflow.com/ Вопросы/14451444/mvc-multi-tier-mobile-application –

ответ

17

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

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

+0

Это ТОЧНО, на что я собираюсь ответить. – Ryan

+0

Хе-хе, великие умы и все такое :) – ckramer

4

Слой презентации - ваш вид.

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

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

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

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

0

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

1

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

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

0

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

1

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

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

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

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

Надеюсь, что мне помогли.

1

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

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

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