MVC против трехуровневой архитектуры?

В чем основное различие между MVC и трехуровневой архитектурой?


person chhaya    schedule 02.01.2011    source источник
comment
возможный дубликат MVC против n-уровневой архитектуры   -  person brianpeiris    schedule 05.08.2011


Ответы (13)


Трехуровневый - это стиль архитектуры, а MVC - это шаблон дизайна.

так отличается в этом.

но мы могли бы использовать шаблон mvc в стиле трехуровневой архитектуры.

so:

Уровень представления: «Контроллеры и представления» из шаблона MVC.

Бизнес-уровень: «Модель (данные)» из шаблона MVC.

Уровень доступа к данным: исходный уровень доступа к данным.

person F. Farjaminejad    schedule 17.12.2012
comment
Сказать, что 3 уровня - это стиль архитектуры, а MVC - шаблон дизайна, недостаточно. MVC - это шаблон проектирования, который попадает в группу архитектурных шаблонов. - person Ronald; 04.09.2013
comment
На самом деле MVC - это шаблон архитектуры, а не шаблон дизайна. - person apxcode; 04.08.2015

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

MVC также может использоваться в качестве всей трехуровневой архитектуры, где представления - это ваша презентация, контроллеры - ваша бизнес-логика, а модели - ваш уровень данных (обычно генерируемый DAL, например Entity Framework).

Хотя в идеале вы хотите, чтобы ваши контроллеры были тонкими и тупыми, передав логику «бизнес-компоненту», который, по сути, стал бы вашим средним уровнем.

person Michael Shimmins    schedule 02.01.2011
comment
Если View = Presentation, Controller = Business и Model = DAL Так в чем же основное различие между ними? какой лучше и почему? - person chhaya; 05.01.2011
comment
MVC можно назвать реализацией трехуровневой архитектуры, но он также может быть верхним уровнем и сам по себе. - person Michael Shimmins; 05.01.2011
comment
Я согласен с вашим 1-м абзацем, но не согласен с вашим 2-м. BL не должен не находиться в контроллере. Стремитесь к надежной модели, содержащей BL и компактный контроллер. - person atconway; 10.05.2012

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

Трехуровневая архитектура обычно развертывается как 3 отдельных процесса на 3 отдельных сетевых узлах. Но MVC разработан для развертывания как единого процесса на одном сетевом узле. (как настольное приложение)

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

Целью трехуровневого подхода является разделение бизнес-логики от клиента и базы данных, чтобы обеспечить несколько клиентских протоколов, высокую масштабируемость, доступ к разнородным данным и т. Д. Но основная цель MVC состоит в том, чтобы изменения реализации в одной части не требовали изменений в другой. .

person Community    schedule 07.01.2013

Я придерживаюсь другого подхода по сравнению с тем, что Майкл сказал в своем ответе.

Контроллеры никогда не должны быть вашей бизнес-логикой. Для меня бизнес-логика относится к слою модели. И хотя представления (и в некоторой степени контроллеры) и часть уровня представления, модель никогда не являются его частью в приложении MVC. Модель должна быть сердцем и душой приложения MVC, и именно в этом заключается суть Domain Driven Design, которую можно легко реализовать в приложении MVC.

Помните, что вам не обязательно иметь модель внутри одного проекта (говоря об ASP.NET MVC). Он может находиться в совершенно другом проекте и по-прежнему действовать как модель для приложения.

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

Таким образом, мы можем сказать, что MVC делает два (третий может быть уровнем данных, который на самом деле не является частью архитектуры MVC как таковой) из трех уровней трехуровневой архитектуры.

Спасибо.

person Imran Rashid    schedule 02.01.2011

Между ними нет никакой связи. MVC - это шаблон уровня представления. Вся модель-представление-контроллер существует на уровне представления.

  • Модель - это объект, содержащий данные (обычно просто виртуальные объекты), которые представлены в представлении или заполняются из представления.

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

  • Просмотр - это то, что отображает модель и предоставляет компоненты для сбора данных, вводимых пользователем. (Обычно это шаблонизатор в веб-приложениях или компоненты пользовательского интерфейса в настольном приложении).

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

Уровень обслуживания (и все, что за ним) скрыто за контроллерами MVC.

person Amir Pashazadeh    schedule 26.02.2014

Что такое трехуровневая архитектура?

Трехуровневая (слой) - это архитектура клиент-сервер в котором пользовательский интерфейс, бизнес-процесс (бизнес-правила), хранилище данных и доступ к ним разрабатываются и поддерживаются как независимые модули или чаще всего на отдельных платформах. По сути, существует 3 уровня: уровень 1 (уровень представления, уровень графического интерфейса пользователя), уровень 2 (бизнес-объекты, уровень бизнес-логики) и уровень 3 (уровень доступа к данным). Эти уровни можно разрабатывать и тестировать отдельно.

DAL - уровень доступа к данным (в нем есть строка подключения и процесс чтения и выполнения данных)

BOL - Уровень бизнес-объекта (имеет запросы)

UI - Пользовательский интерфейс (формы и внутренний код)

Подробнее: 3-х уровневая архитектура

person user851253    schedule 28.07.2011
comment
Ну разве что это в лучшем случае только половина вопроса. Можете ли вы сделать дельту MVC? - person ruffin; 12.12.2012
comment
Этот ответ не имеет отношения к вопросу. Это говорят только 3 слоя. - person Dinuka Thilanga; 28.07.2016

IMO нет прямого сравнения между трехуровневой архитектурой и MVC. Оба используются в сочетании, и поэтому мы склонны смотреть на них через одну и ту же линзу. Концептуально их не нужно использовать вместе. Я мог бы иметь трехуровневую архитектуру, которая не использует то, что предлагает MVC.

Я не уточняю часть определений, но в двух словах:

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

MVC эволюционировал от программного шаблона к архитектурному шаблону за период времени и в настоящее время встречается во всех основных фреймворках.

person sanjeev    schedule 09.01.2012
comment
Согласованы, они ортогональны, но дополняют друг друга. - person Martin Spamer; 08.06.2012

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

(См. «Сравнение с архитектурой MVC» на странице http://en.wikipedia.org/wiki/3-tier_architecture)

person OCDev    schedule 02.01.2011
comment
Полагаю, вы скопировали этот ответ из Википедии. Лучше, если вы процитируете свой источник. Проверьте сравнение с параграфом об архитектуре MVC @ en.wikipedia.org/wiki/3-tier_architecture - person chris; 02.01.2011

Каждое приложение имеет один из следующих уровней: 1) уровень представления или уровень пользовательского интерфейса 2) уровень бизнес-логики или уровень бизнес-логики 3) уровень доступа к данным или уровень данных

Трехуровневая архитектура обычно имеет каждый уровень, разделенный сетью. I.E. уровень представления находится на некоторых веб-серверах, затем он обращается к внутренним серверам приложений по сети для бизнес-логики, затем обращается к серверу базы данных, снова по сети, и, возможно, сервер приложений также обращается к некоторым удаленным службам (например, Authorize.net для обработки платежей).

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

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

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

person ketan italiya    schedule 12.09.2013

В MVC: архитектура MVC треугольная: представление отправляет обновления в контроллер, контроллер обновляет модель, а представление обновляется непосредственно из модели.

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

Викас Джоши, инженер-программист

person Vikas Joshi    schedule 31.07.2013

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

Я ненавижу код, написанный таким образом. Термин MVC, должно быть, был разработан для того, чтобы сбить с толку кадровых агентств, чтобы они думали, что программисты старшего возраста (которые знают его как «трехуровневый») не подходят для этой работы.

person user1230575    schedule 09.01.2013
comment
этот ответ - прекрасный пример того, что случилось со мной во время интервью. Одна из основных причин, по которой я не получил эту работу, заключалась в том, что я не знал, что такое MVC, но занимался трехуровневым программированием более 10 лет. После исследования MVC он полностью перепутал три уровня. Трехуровневый IMO превосходит MVC, как указал этот пользователь, MVC только что устроил беспорядок - person K3NN3TH; 21.01.2015
comment
Полностью согласен с вами. Еще один плюс: благодаря взаимодействию с треугольником многие веб-фреймворки имеют собственный способ выполнения MVC, что вызывает большую путаницу. - person haotang; 29.10.2017

  • 3-х уровневая линейная архитектура. (Уровень представления -> Уровень логики -> Уровень данных, затем уровень данных -> Уровень логики -> Уровень представления) Но MVC - это треугольная архитектура. (Управляйте обновлением View и Model. Model update View.)
  • MVC может включать в себя уровень представления (мобильные приложения, Angular, такие как js-фреймворки и т. Д.) И уровень логики (J2EE, Laravel и т. Д.) В трехуровневой архитектуре.
  • Уровни 3-го уровня могут быть реализованы в разных сетевых узлах. Но обычно элементы в MVC реализуются в одних и тех же сетевых узлах.
person Dinuka Thilanga    schedule 28.07.2016

Я не думаю, что MVC что-то изменит или поможет вам создать лучшую или надежную систему. Трехуровневая архитектура - это удачная и достаточная система. Я / вы можете построить в нем очень всеобъемлющую и надежную систему. Все мы знаем, что сложный или реальный веб-сайт требует активного взаимодействия между всеми слоями. Я лично считаю, что php по этой причине имеет преимущество перед .net. Если вы попросите заносчивого заносчивого программиста создать простую систему форумов в .net, он поцарапает в затылке, какой элемент управления использовать для ее рендеринга. Затем он объединит сетку данных с каким-нибудь повторителем ... Но позже, если вы просто попросите добавить раздел комментариев или изображение, он будет как, черт возьми, я это сделаю? С другой стороны, в php ... U можно смешивать html с серверным кодом, чтобы легко достичь любого уровня представления ... Так что не хвастайтесь архитектурой, поскольку они имеют равные преимущества и недостатки. Но спросите, что вы построили?

person Sonny Rahman    schedule 28.06.2014