MVC не 3-уровневая архитектура. Не каждое решение нуждается в, чтобы быть 3-ярусным или n-ярусным, но по-прежнему важно понимать различие. MVC случается, есть 3 основных элементов, но эти элементы не работают в «многоуровневую» моде, они взаимозависимы:
Model <----- Controller
\ |
\ v
---- View
The View зависит от модели. Контроллер зависит от модели и. Таким образом, эти множественные пути зависимостей не функционируют как уровни.
Обычно 3-х уровневая решение выглядит следующим образом:
Data Access <--- [Mapper] ---> Domain Model <--- [Presenter/Controller] ---> UI
Presenter/Controller несколько опционально - в Windows Forms развития, например, вы обычно не видите его, вместо того, чтобы у вас есть «умный клиент «UI, и это тоже нормально.
Это трехуровневая архитектура, потому что каждый из трех основных уровней (Data, Domain, UI) имеет только одну зависимость. Классически пользовательский интерфейс зависит от модели домена (или модели «Бизнес»), а модель домена зависит от DAL. В более современных реализациях модель домена не зависит от DAL; вместо этого взаимосвязь инвертируется, а абстрактный слой Mapping вводится позже с использованием контейнера IoC. В любом случае каждый уровень зависит только от предыдущего уровня.
В архитектуре MVC C является контроллером, V является пользовательским интерфейсом (Views), а M является моделью домена. Поэтому MVC - это архитектура представления, а не системная архитектура. Он не инкапсулирует доступ к данным. Это может не обязательно полностью инкапсулировать модель домена, которая может рассматриваться как внешняя зависимость. Он не многоуровневый.
Если вы хотите, чтобы физически разделяли уровни, то это обычно делается путем отображения модели домена как веб-службы (то есть WCF). Это дает вам улучшенную масштабируемость и более чистое разделение проблем. Доменная модель буквально многократно используется и может быть развернута на многих машинах - но поставляется с крупными стоимостью разработки, а также с текущими расходами на техническое обслуживание.
архитектура сервера отражает схему 3-го уровня выше:
Database Server <----- Web Services <----- Application
«приложение» это приложение MVC, которая разделяет модели предметной области с веб-службами (через SOAP или REST). Веб-службы запускаются на выделенном сервере (или серверах), и база данных, очевидно, размещена на собственном сервере. Это трехуровневая 3-серверная архитектура.