Чи застосовується MVC лише до Інтернету


14

Це майже і миттєво, коли я розмовляю з розробниками про Controller Model View ( MVC ), вони кажуть, що ви подаєте запит на URL-адресу, на якому сервер створює сутність (MODEL) і надає вам візуальне представлення цієї моделі.

  • Так це означає, що MVC призначений лише для Інтернету чи я зустрічався з людьми, які просто розробники, які використовують MVC для написання веб-додатків?

  • Чи є звички для MVC на додатках у стилі настільних ПК?

  • Я, наприклад, новачок у парадигмі і хотів би знати про будь-який супернабір на MVC


1
ви перевіряли програму.kv Programmers.SE або вікні тегів Stack Overflow для 'mvc'
гнат

3
@gnat так я це зробив
Deeptechtons

6
ну тоді ви, мабуть, вже знаєте відповідь на своє запитання, чи не так?
гнат

4
@gnat серйозно НІ, я абсолютно новий в MVC (як зазначено) і ніколи не використовував і не чув (деякі вуха, які я отримав) про те, що MVC застосовується до програм Windows або використовує додаток, який містить значок MVC на сторінці завантажень. Вибачте, якщо питання було нерозумним, але для мене це загадка
Deeptechtons

Є багато хороших ресурсів для вивчення історії MVC, але я дуже бачу це помилкове уявлення, тому я написав хороший підсумок у своєму блозі blog.kutulu.org/2012/01/mvc-mvp-mvvm-mvpvm-lmnop-wtf .html
KutuluMike

Відповіді:


22

MVC - зразок. Шаблони застосовуються для всіх програмувань. MVC, як буває, дуже добре працює у веб-контексті.

Як зазначає gnat, просто подивіться на тег mvc, і ви побачите кілька прикладів його реалізації.


5
Це ключове. MVC дуже добре працює у веб-додатках, і це справді є великою частиною причини того, що сучасні структури на базі MVC (наприклад, Rails, Django та ASP.NET MVC) настільки популярні. Він працює і в інших контекстах (наприклад, настільних додатків), але важче зберегти чітке відокремлення перегляду та контролера, тому варіанти, які видаляють поділ контролера перегляду, як Model-delegator (використовується Swing), або змінюють там, де відбувається розщеплення як-от Model-View-ViewModel (використовується в основному додатками .Net WPF), частіше зустрічаються в настільних додатках.
Кевін Каткарт

Якщо ви подивитесь на оригінальний опис Smalltalk, що робить контролер - перекладіть введення користувачів у повідомлення для моделі - сама Windows в основному є одним великим контролером; ось чому MVC як зразок не дуже добре поєднується з програмами Windows UI. Її використовували набагато більше в рамках UI для систем, що не є Windows.
KutuluMike

@MichaelEdenfield Не дуже; ви можете робити MVC та WinForms разом, хоча MVP там більш популярний, але MVP - варіант MVC у будь-якому випадку.
Енді

45

Зважаючи на те, що MVC створений з 1977 року, а мережа була винайдена лише в 1991 році, слід бути досить очевидним, що MVC - це не лише для Інтернету.


30
Це приємний початок відповіді, але має гіркий смак у роті.
Ніколяс К.

2
Правильно і химерно. Чудові речі!
Том Хотін - тайклін

1
"У 1982 р. Internet Protocol Suite (TCP / IP) був стандартизований і було запроваджено концепцію всесвітньої мережі повністю взаємопов'язаних мереж TCP / IP під назвою Інтернет". вікі . Якщо ви маєте на увазі netscape, тоді добре ... але "павутина" існувала до цього.
jmq

4
@jmquigley "Інтернет" та "Мережа" - це дві дуже різні речі.
Ерік Кінг

1
@jmq 1977, хоча ВИНАГО до 1982 року, і як хтось інший зазначав Web! = Інтернет. Веб-сайт дійсно НЕ існував до 1991 року.
Енді

9

Ні, розробка для OS X і iOS використовує модель Controller View View.


2
Нарешті, відповідь на перший та другий пункти без коментаря.
JeffO

8

Задайте питання в середовищі Microsoft, і багато людей вважають, що ви маєте на увазі Asp.Net MVC, що є реалізацією MVC спеціально для Інтернету.

На жаль, є багато людей, які не усвідомлюють, що це реалізація структури MVC і вважають, що вони є взаємозамінними термінами, що призводить до припущення про "тільки в Інтернеті".


3
+1 це проблема з іменуванням платформи за методологією. Коли люди знайомляться з платформою спочатку, вони не бачать відмінності.
MattDavey

@Ozz це пояснило, чому інші розробники завжди говорять про Інтернет, коли тема MVC
Deeptechtons

1
Будь ласка, перестаньте вважати розробників Microsoft дурними, дякую.
Енді

@Andy - це не був MS-розробник, я сам розробник MVC Asp.Net, і я стою оригінальною відповіддю. Я не сказав "всі" люди, або "всі" .net розробники, лише спостереження про припущення або помилку, яку я бачив, як багато людей роблять. Спасибі.
ozz

2

Принаймні, наскільки мені відомо, перша реалізація MVC була в Smalltalk. Він точно був присутній у Smalltalk-80. Хоча я не маю жодної документації, яка б могла це підтвердити, я вважаю, що (або щось зовсім подібне все одно) до цього часу в Smalltalk вже кілька років.

Більшість фреймворків OO GUI включали принаймні якийсь варіант MVC. Я не впевнений, однак, що саме означатиме «суперсет» у даному випадку. Трохи важко сказати, чи є якийсь із варіантів суперсет, підмножина або одноранговий MVC, але я схильний вважати більшість з них однолітками.

У будь-якому випадку, багато з них (більшість?) Використовувались для розробки на робочому столі, а не для веб-розробки. Завдяки деяким старим патентам AT&T, більшість віконних систем вимагають, щоб програми мали можливість повторно генерувати перегляди на вимогу. Це (майже) змушує принаймні деякий ступінь поділу між кодом, який підтримує поточний стан (модель), і кодом, який відображає цей стан (вид). Це все ще залишає багато варіантів для 1) ступеня, на яку функціональність контролера відокремлена, і 2) точних деталей, де провести лінії між кожною з основних частин.



1

Тож існує багато різних моделей дизайну в цій галузі.

  • Presenter Model View (mvp)
  • Presenter View View Model (mvvp)
  • Контролер перегляду моделі
  • Модель 2

і так далі. Протягом багатьох років вони перепліталися, пюрувались, змінювались та застосовувались у найрізноманітніших контекстах. Тут важливим є те, що модель дизайну MVC з 1977 р. Досить сильно змінилася, і це вже не модель дизайну, що використовується веб-рамками серверів. В якості прикладу в оригінальній реалізації малої розмови, Model буде дотримуватися виду змін, що вже не так, оскільки сервер просто не може спостерігати html елементи в браузері користувачів. Замість цього, якщо перегляд зміниться, представлення надішле запит контролеру, який потім оновить подання. Знову не виконується оригінальна реалізація MVC, оскільки оновлення моделі означає, що всі погляди, залежні від моделі, будуть оновлені.

Сучасні веб-рамки мають просту трирівневу архітектуру, також відому як архітектура Model 2.

Звичайно, в Інтернеті є приклади реальних архітектур MVC, але вони часто є лише клієнтськими, підключеними до сервера, який слідує за архітектурою Model 2, оскільки перегляди є xml та json і не спостерігаються за змінами. Прикладами чистої архітектури mvc на стороні клієнта є Sencha Touch та Sproutcore.

Якщо у браузері є MVC, mvc як на сервері та mvc як рівень даних, у вас є ієрархічна реалізація mvc.

Примітка. Я говорив лише про веб-рамки, інші реалізації MVC, такі як java swing і Flex, має інші відмінності в реалізації.


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

Питання передбачає, що mvc та web працюють добре і благають про mvc, який не використовується в Інтернеті, тому коли ви
наводите

1

Ви повинні знати, що існує стільки ароматів MVC, скільки є рамки, які заявляють про реалізацію MVC.

Більшість погоджуються з тим, що модель має деякий стан, і вид надає це. Але у Контролера дуже різні ролі.

У Smalltalk, де вперше було описано, Модель є ядром вашої програми, даних та бізнес-методів. Перегляд - це графічне зображення стану програми (він же модель), і Контролер управляє подіями введення, миші та клавіатури користувача. Наприклад, контролер направляє події клавіатури на елемент перегляду, на якому знаходиться фокус.

На сторінках .jsp Модель є здебільшого даними, Перегляд надає, що Модель до HTML, а Контролер здійснює маршрутизацію Моделі до відповідного Перегляду, щоб надати її.

Отже, щоб відповісти на ваше запитання, хоча MVC використовується як в автономних додатках (Java, .Net, Flex), так і в Інтернеті (сторінки jsp), це зовсім інша річ. Це означає, що відомий вам MVC не використовується в автономних програмах.

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