MVC Vs N-уровневая архитектура [закрыто]
Мне было интересно, в чем именно заключается разница между MVC(который является архитектурным шаблоном) и N-уровневой архитектурой для приложения. Я искал его, но не мог найти простое объяснение. Может быть, я немного наивен в концепциях MVC, поэтому, если кто-то может объяснить разницу, это было бы здорово.
ура
12 ответов:
N-уровневая архитектура обычно имеет каждый слой, разделенный сетью. Т. е. уровень представления находится на некоторых веб-серверах, затем он разговаривает с серверными серверами приложений по сети для бизнес-логики, затем он разговаривает с сервером базы данных, снова по сети, и, возможно, сервер приложений также вызывает некоторые удаленные службы (скажем Authorize.net для обработки платежей).
MVC-это шаблон проектирования программирования, в котором различные части кода отвечают за представление модель, представление и контроллер в некоторых приложениях. Эти две вещи связаны, потому что, например, уровень модели может иметь внутреннюю реализацию, которая вызывает базу данных для хранения и извлечения данных. Контроллер может находиться на веб-сервере и удаленно вызывать серверы приложений для получения данных. MVC абстрагирует детали того, как реализована архитектура приложения.
N-уровень просто относится к физической структуре реализации. Эти два иногда смущен, потому что дизайн MVC часто реализуется с использованием архитектуры N-уровня.
Если бы 3-х уровневый дизайн был таким:
Client <-> Middle <-> Data
скороговорка MVC будет:
Middle ^ | | v Client <- Data
это означает, что:
- в 3-уровневом эквиваленте, связь между слоями составляет двунаправленный и всегда проходит через средний уровень
- в эквиваленте MVC связь находится в однонаправленный; можно сказать, что каждый "слой" обновляется один слева и в свою очередь, обновляется в праве - где "левый" и "правый" являются просто иллюстративными
П. С. клиент будет View и средний the контроллер
Это говорить о n-уровневая архитектура
на первый взгляд, три уровня могут похоже на MVC (Model View Контроллер) концепция; однако, топологически они различны. Один фундаментальное правило в трехуровневом режиме архитектура-это клиентский уровень никогда взаимодействует непосредственно с данными уровень; в трехуровневой модели все связь должна проходить через промежуточного уровня. Концептуально трехуровневая архитектура является линейной. Однако архитектура MVC является треугольный: представление отправляет обновления контроллер, контроллер обновления модель, и представление обновляется прямо из модели.
единственное сходство заключается в том, что два шаблона имеют три поля в своих диаграммах. Принципиально они совершенно разные по своему назначению. Если факт, это обычно не выбор между тем, какой шаблон использовать, но оба шаблона можно использовать вместе гармонично. Вот хорошее сравнение этих двух: http://allthingscs.blogspot.com/2011/03/mvc-vs-3-tier-pattern.html
основным правилом в трехуровневой архитектуре является то, что клиентский уровень никогда не взаимодействует напрямую с уровнем данных; в трехуровневой модели все коммуникации должны проходить через уровень промежуточного программного обеспечения.
это архитектура лайнера. Это решает вопрос о том, как передавать информацию между Пользователем и базой данных. Где, поскольку MVC является треугольной архитектурой: представление отправляет обновления контроллеру, контроллер обновляет модель, а представление обновляется непосредственно из Модель. Это решает вопросы о том, как пользовательский интерфейс управляет компонентами на экране.
@Cherry Промежуточное программное обеспечение работает больше как запрос обработчик или перенаправитель в шаблоне проектирования MVC.
Я хотел бы немного рассказать о MVC, по моему мнению, контроллер вида модели работает так.
- клиент инициирует сеанс, запрашивая любую службу.
- этот запрос принимается и обрабатывается контроллером (обработчиком запросов, перенаправителем и т. д.)
- контроллер обрабатывает основную информацию о запросе и перенаправляет ее на соответствующую модель который может заполнить запрос данных.
- модель заполняет запрос в соответствии с параметрами, переданными контроллером, и отправляет результаты обратно в контроллер. (Примечание: здесь мне нравится очищать, что данные не возвращаются непосредственно клиенту в истинной архитектуре MVC, а заполняются и возвращаются в контроллер.)
дайте себе перерыв. И не ограничивайте себя определенными шаблонами при решении реальных проблем. Просто запомните некоторые общие принципы, одним из которых является РАЗДЕЛЕНИЕ ЗАБОТ.
помимо линейности, еще одно важное отличие, которое здесь недостаточно подчеркивалось, заключается в том, что в N-уровневой модели N не обязательно является 3-уровневым! Он чаще всего реализуется в виде трех уровней (презентация, приложение, данные) со средним уровнем, имеющим два подуровня (бизнес-логика и доступ к данным). Кроме того, модель в MVC может содержать как данные, так и бизнес-логику для обработки данных, тогда как они будут находиться на отдельных уровнях в n-уровне.
N-уровневая архитектура лучше всего определяется с помощью схемы развертывания.
архитектура MVC лучше всего определяется с помощью схемы последовательностей.
2 не являются одинаковыми и не связаны, и вы можете объединить две архитектуры вместе. Многие компании предприняли шаги по созданию N-уровневой архитектуры не только для развертывания и масштабируемости, но и для повторного использования кода.
например, объекты бизнес-объекта могут быть потреблены настольное приложение, веб-служба, доступная для клиента, веб-приложение или мобильное приложение. Простое использование подхода MVC не поможет вам повторно использовать что-либо вообще.
вывод: N-уровень-это архитектура, MVC-шаблон проектирования. Это одна и та же метафора, применяемая в двух разных областях.
Джерри: вот простой пример того, как эти два связаны:
уровень 1 - состоит из моделей, которые взаимодействуют с уровнем 2 через какой-то сетевой сервис или аналогичный, контроллеры для обработки проверки ввода, вычислений и других вещей, имеющих отношение к представлениям. И он содержит сами представления, конечно, которые могут быть графическим интерфейсом в настольном приложении или веб-интерфейсом в веб-приложении.
уровень 2 - содержит некоторые вид сервиса или другой способ получения сообщений от уровня 1. Не знает / не должен знать о Tier 1, поэтому может только отвечать на звонки сверху-никогда не просите вещи сами по себе. Также содержит всю бизнес-логику.
Уровень 3 - содержит модель домена, представление объекта базы данных и всю логику для связи и обновления записей базы данных.
в трехуровневой модели все коммуникации должны проходить через средний уровень. Концептуально трехуровневая архитектура является линейной. Однако архитектура MVC [model-view-controller] является треугольной: представление отправляет обновления контроллеру, контроллер обновляет модель, а представление обновляется непосредственно из модели.