MVC против 3-х уровневой архитектуры? - PullRequest
65 голосов
/ 02 января 2011

В чем принципиальная разница между MVC и 3-уровневой архитектурой?

Ответы [ 13 ]

34 голосов
/ 17 декабря 2012

3-х уровневый - это Архитектурный стиль и MVC - это шаблон проектирования .

, поэтому он отличаетсяв этом.

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

так:

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

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

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

28 голосов
/ 02 января 2011

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

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

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

17 голосов
/ 07 января 2013

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

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

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

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

12 голосов
/ 02 января 2011

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

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

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

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

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

Спасибо.

7 голосов
/ 26 февраля 2014

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

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

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

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

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

Сервисный уровень (и все, что за ним) скрыто за контроллерами MVC.

7 голосов
/ 28 июля 2011

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

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

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

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

Интерфейс пользователя - пользовательский интерфейс (формы и код)

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

6 голосов
/ 12 сентября 2013

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

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

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

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

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

6 голосов
/ 09 января 2012

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

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

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

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

6 голосов
/ 02 января 2011

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

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

3 голосов
/ 31 июля 2013

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

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

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

...