Різниця між 3-рівневою архітектурою та MVC (модель, контролер перегляду) в ASP.Net


9

Мені б хотілося знати, чим 3-ярусна архітектура відрізняється від MVC (Model, View Controller) в ASP.Net, оскільки мені здається, що застосовується та ж архітектура.

У 3 х рівневий ми маємо User Services Layer, BusinessLayerі DataAccessLayer, з іншого боку , у нас є Model, Viewі Controller. Це здається мені такою ж архітектурою.

Чи може хтось пояснити, чим насправді відрізняється дві архітектури, чим кожен шар відрізняється один від одного?



2
MVC можна розглядати більше як архітектуру інтерфейсу. Інші приклади, наприклад, кутові. Коли ви реалізуєте 3-рівневу архітектуру в проекті MVC ASP.net, вона розділить модель (M) в MVC на 3 шари.
devfric


@gnat Я бачу, я не бачив цього старого раніше .. але це схоже на дупи, як ви сказали, єдине, що відповідь на старий не добре пояснений, що ви думаєте? :)
japzdivino

Відповіді:


18

Це як би запитати, яка різниця між яблуком та яблучним ядром. Ці дві архітектури не є заміною одна для одної. Я вважаю, що більш точним є те, що 3-ярусна архітектура збільшує MVC.

Архітектура MVC

  • Моделі: вони представляють "речі" у вашій програмі. Цей шар останнім часом трохи розмився, як я поясню пізніше.

  • Перегляди: Інтерфейс користувача. Те, з чим взаємодіє користувач.

  • Контролери: код програмування, який відповідає користувачеві та на зміни в шарі моделі

3-ярусна архітектура

Завдяки трирівневій архітектурі у вас є шари з різними обов'язками.

  • Послуги користувачів: (або "послуги" загалом) Цей шар стосується скоординування пошуку та модифікацій рівня "модель". Тут виконуються складні багатоступінчасті дії

  • Бізнес-рівень: Це відображає бізнес-правила, вкарбовані в код програмування. Те, що хоче «Бізнес», застосовується в цьому шарі.

  • Шар доступу до даних: один або кілька класів, відповідальних за доступ до постійного сховища даних.

Єдина частина 3-ярусної архітектури, яка перетинається з MVC, - це "Бізнес-рівень". "Моделі" в MVC та "Бізнес-шар" в трирівневій архітектурі намагаються досягти тієї ж мети.

"M" у MVC розмився

Шар «моделі» в MVC розширився в останні роки. З того, що я бачив, є два, можливо, три види моделей:

  1. Моделі доменів: вони представляють "речі", про які піклується "Бізнес" - бізнес-домен. У цих класах зберігаються дані та всі процедури, які працюють на цих даних з метою виконання бізнес-правил. Моделі домену часто прив’язуються до таблиць у базі даних. Це, здається, відповідає «бізнес-шару» трирівневої архітектури.

  2. Моделі перегляду: це класи, які використовуються для масажу даних із моделей домену на щось більш приємне для подання. Це не підходить ніде в трирівневій архітектурі, оскільки моделі перегляду не реалізують бізнес-логіку, а також не надають послуги чи доступ до даних.

  3. Моделі бізнесу: У складних програмах виникає необхідність від'єднання доменної моделі від бізнес-логіки. Бізнес-моделі містять дані та процедури, що працюють на цих даних для впровадження бізнес-правил, а Моделі домену передаються "Сумці власності" - об'єктам, які просто містять дані, але не містять поведінки. Моделі доменів стають ще однією формою об’єкта передачі даних між базою даних та додатком.

Ніде в MVC не згадується доступ до даних. У деяких випадках ви побачите, що доступ до даних належить до "модельного" шару MVC, який, як ми бачили, вже не є чітким зрізаним шаром. Дійсно, я бачу, що трирівнева архітектура поєднується з MVC для створення цілої програми. Один збільшує або покращує інші:

  • Моделі
    • Доменні моделі (MVC / 3-рівень)
    • Перегляд моделей (MVC)
    • (необов'язково) Бізнес-моделі (MVC / 3-рівень)
  • Перегляди (MVC)
  • Контролери (MVC)
  • Доступ до даних (3-х рівневий)
  • Послуги (трирівневі)

Існує деякий перехрестя, але вони значною мірою відокремлені, і разом вони використовуються для декупажу та ізоляції різних компонентів більшої системи.


3

Ні, вони не однакові.

MVC - це модель дизайну для структурування коду інтерфейсу користувача. Він може бути використаний в трирівневій архітектурі, і в цьому випадку шаблон повинен належати до рівня служб користувачів. Але він також може бути використаний для користувальницького інтерфейсу в додатках, які не є трирівневими - наприклад, калькуляторі без основної стійкості, а отже, і без доступу до даних.

У трирівневій архітектурі з MVC-фронтом об'єктами домену, використовуваними як модель, були б об'єкти з бізнес-рівня, але MVC-шаблон насправді не визначає, який тип об'єктів є моделлю, лише яка їх роль у шаблоні є. Наприклад, у варіанті MVVM, моделі - це адаптери UI-specifc поверх об’єктів домену. У цьому випадку навіть модель належить до рівня обслуговування користувачів.


Перш за все, MVC - це розробник архітектурного шаблону.mozilla.org/en-US/Apps/Fundamentals/… . По-друге, це не ТІЛЬКИ для інтерфейсу користувача, він широко використовується в інтерфейсі, але ваше дуже детерміноване твердження є невірним та оманом.
Даніель Дубовський

2

Я знаю, що буде багато різних відповідей, але я розповім вам про це.

Це найвідоміша відповідь у розробці програмного забезпечення "Це залежить".

По суті, якщо ви поглянете на це, окрім різних варіантів реалізації та теоретичних відмінностей, це дуже схожі зразки з подібними потоками.

Там, де це залежить, - це додаток, яке ви будуєте, простий веб-сервер може мати лише шар MVC, який розмовляє через ORM з БД. Більш складний може мати MVC, що обробляє лицьову частину в користувацькому шарі, при цьому більш складні операції, що не піддаються дії користувача, відбуваються в шарі BL, при цьому рівень даних складається з декількох джерел.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.