Вопрос

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

ваше здоровье

Это было полезно?

Решение

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

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

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

Другие советы

Если бы трехуровневый дизайн был таким:

Client <-> Middle <-> Data

скороговорка MVC была бы:

     Middle
     ^    |
     |    v
Client <- Data

Это означает , что:

  • в 3-уровневом эквиваленте связь между уровнями является двунаправленный и всегда проходит через Средний ярус
  • в эквиваленте MVC связь осуществляется в однонаправленный;мы могли бы сказать, что каждый "слой" обновляется тем, что находится слева, и, в свою очередь, обновляет тот, что находится справа – где "левый" и "правый" являются просто иллюстративными

P.S. Клиент было бы самым Вид и Середина в Контроллер

Это то, что сказать о n-уровневая архитектура

На первый взгляд, три уровня могут показаться похожими на концепцию MVC (Model View Контроллер);однако, топологически они различны.A фундаментальное правило трехуровневой архитектуры клиентский уровень никогда напрямую взаимодействует с данными уровень;в трехуровневой модели все обмен данными должен проходить через уровень промежуточного программного обеспечения.Концептуально трехуровневая архитектура является линейной.Однако архитектура MVC является треугольной:представление отправляет обновления Контроллеру, контроллер обновляет модель, и Представление обновляется непосредственно из модели.

Единственное сходство заключается в том, что на диаграммах этих двух шаблонов есть три прямоугольника.По сути, они совершенно различны в своем применении.На самом деле, обычно это не выбор между тем, какой шаблон использовать, но оба шаблона можно гармонично использовать вместе.Вот хорошее сравнение этих двух: http://allthingscs.blogspot.com/2011/03/mvc-vs-3-tier-pattern.html

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

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

@Cherry Промежуточное программное обеспечение работает больше как обработчик запросов или перенаправитель в шаблоне MVC.

Я хотел бы немного объяснить о MVC, по моему мнению, Model View Controller работает следующим образом.

  1. Клиент инициирует сеанс, запрашивая какую-либо услугу.
  2. Этот запрос принимается и обрабатывается Контроллером (обработчик запроса, перенаправитель и т.д.)
  3. Контроллер обрабатывает основную информацию по запросу и перенаправляет ее в соответствующую модель, которая может заполнить запрос данных.
  4. Модель заполняет запрос в соответствии с параметрами, переданными Контроллером, и отправляет результаты обратно Контроллеру.(Примечание:Здесь я хотел бы пояснить, что данные не возвращаются клиенту напрямую в настоящей архитектуре MVC, скорее они заполняются и возвращаются контроллеру.)
  5. Контроллер, чем отправлять эти данные в View (Клиент).
  6. Клиент имеет перед собой запрошенную услугу.

Это все о MVC, что я знаю.

Дай себе передышку.И не ограничивайте себя определенными шаблонами при решении реальных проблем.Просто запомните некоторые общие принципы, одним из которых является РАЗДЕЛЕНИЕ ИНТЕРЕСОВ.

Помимо линейности, еще одно важное отличие, которое здесь недостаточно подчеркивалось, заключается в том, что в N-уровневой модели N не обязательно состоит из 3 уровней!Чаще всего он реализуется в виде трех уровней (презентация, приложение, данные), причем средний уровень имеет два подуровня (бизнес-логика и доступ к данным).Кроме того, модель в MVC может содержать как данные, так и бизнес-логику для манипулирования данными, тогда как в n-tier они будут находиться на отдельных уровнях.

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

Архитектуру MVC лучше всего определять с помощью Диаграммы последовательности.

Эти две архитектуры не совпадают и не связаны, и вы можете объединить две архитектуры вместе.Многие компании предприняли шаги по созданию многоуровневой архитектуры не только для развертывания и масштабируемости, но и для повторного использования кода.

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

Заключение :N-tier - это архитектура, MVC - шаблон проектирования.Это одна и та же метафора, применяемая в двух разных областях.

Джерри:Вот простой пример того, как эти два понятия связаны:


Уровень 1 - Состоит из Моделей, которые взаимодействуют с уровнем 2 через какой-либо сетевой сервис или аналогичный, контроллеров для обработки проверки входных данных, вычислений и других вещей, имеющих отношение к представлениям.И, конечно, он содержит сами представления, которые могут быть графическим интерфейсом в настольном приложении или веб-интерфейсом в веб-приложении.


Уровень 2 - Содержит какой-либо сервис или другой способ получения сообщений с уровня 1.Не знает / не должна знать об уровне 1, поэтому может отвечать только на звонки сверху - никогда не проси о чем-то сама.Также содержит всю бизнес-логику.


Уровень 3 - Содержит модель предметной области, объектное представление базы данных и всю логику для обмена данными и обновления записей базы данных.

В трехуровневой модели все коммуникации должны проходить через средний уровень.Концептуально трехуровневая архитектура является линейной.Однако архитектура [model-view-controller] MVC является треугольной:представление отправляет обновления контроллеру, контроллер обновляет модель, а представление обновляется непосредственно из модели.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top