Це усталене питання з великою кількістю відповідей, але жоден не мав відповіді, яку я б очікував, щоб його перерахували.
Коротка відповідь:
- Використовуйте ASP.NET MVC, якщо ви плануєте належним чином створити веб-додаток із сучасними конвенціями програмування та прийнятими галузевими моделями для платформи ASP.NET. З нижньої сторони ви, як очікується, будете знати, як працюють HTML та клієнтські ресурси (Javascript, CSS), а також набігати на розумний настрій програмування MVC, який має круту криву навчання, але досягає раптового кінця після того, як це зрозуміло.
- Використовуйте веб-форми ASP.NET, якщо ви використовуєте або хочете використовувати GUI -центричний, RAD (швидкий розвиток додатків) , підтягування та підйом для прототипування чогось дуже швидко, тобто поведінку кнопки / сітки даних, підключеної в межах 15 хвилин, і рішення не має на меті підтримувати розробників. Або використовуйте веб-форми ASP.NET, якщо ви маєте досвід у розробці GUI або Windows Forms і хочете передати свої знання в Інтернет.
Але щоб правильно це подивитися, треба зрозуміти історію кожного.
ASP.NET Web Forms - це відповідь Microsoft тим, хто будував динамічні веб-програми за допомогою елементів керування Visual Basic 6 ActiveX, DLL VB6 на сервері та ASP Classic. У той час веб-розробка за допомогою цих інструментів Microsoft була справжньою безладдям. Поряд із всією сукупністю .NET Framework, яка була результатом Microsoft, по суті, повертаючись до креслярської дошки про те, як зробити продуктивне бізнес-програмування на стеку Windows, ASP.NET Web Forms був у свій час дивовижним і красивим.
Весь підхід полягав у тому, щоб надати розробникам найкраще з обох світів чогось дуже схожого на розробку додатків Windows, але з потужністю Інтернет-сервісів. Ідея полягала в тому, що так само, як у форматі VB6 / WinForms "Форма" (вікно), так само веб-сторінка є формою (подібно до вікна, див.) , І на цій формі ви можете перетягувати мітки, текстові поля, сітки даних, кнопки та інші речі, до яких звикли розробники GUI VB / WinForms.
Щоб змусити кнопку зробити щось, після перетягування та натискання на нього просто двічі клацніть по дизайнеру, і ви перебуваєте в редакторі коду, повідомляючи форму, що робити, коли трапляється ця подія "натискання". Саме так розробники Windows GUI створили програмне забезпечення за допомогою GUI- інструментів VB6 та конкуруючих інструментів, за винятком того, що код виконується на сервері! Оце Так!
Це була технологія 2002 року. Дивовижна і красива свого часу як відповідь на розроблені Інтернетом рішення GUI для розвитку RAD , вона принесла відчуття сили в безладному світі розробників програмного забезпечення, які мали бізнес-цілі, які їм потрібно було досягти.
На жаль, ця модель програмування настільки наголошує на метафорі програмування графічного інтерфейсу Windows, що вона несе з собою тягар її необхідних деталей щодо впровадження, весь обтяжливий багаж, необхідний для розміщення життєвих циклів подій та викреслення потворних деталей простого HTML та скрипт, який виводить ці перетягуючі компоненти та елементи керування. Зрештою, розробникам, які підтримують реальні програми, неминуче довелося заглибитися в ці компоненти або написати свої власні, і, отже, вони битимуться в битвах з цією інфраструктурою, битви якої залишатимуть за собою купи на кучах грубих, вирваних волосся та ін. сльози.
Резервне копіювання. Помий свої руки. Давайте ще раз розглянемо проблему бізнесу. Які наші бізнес-цілі?
Нам потрібно створити та керувати веб-додатками . Наші обмеження полягають у тому, що у нас є всесвітня павутина, яка працює на HTTP, HTML, Javascript та CSS, а на сервері є ділові правила, бази даних та невелика купка чудових мов програмування (наприклад, C #). Чи справді нам потрібна ця метафора Windows GUI для керування нашою методологією розвитку? Чому ми не можемо просто зосередитись на проблемах із додатками і не усунути метафори GUI?
Тут починається ASP.NET MVC. Це почалося повстанням розробників, які називали себе "Alt.Net", які хотіли повернутися до правильних і чистих принципів розробки програмного забезпечення. Більше не суєти і суєти, просто зосередьтеся на бізнес-цілях та найкращих практичних програм.
У цьому випадку це справді означає:
- Розділення проблем . Наприклад, компонент даних не повинен знати, як його дані будуть надані, і не слід переглядати розмітку, обтяжену деталями конфігурації підключення до бази даних, і таким чином розробник може зосередитись на своїй проблематиці під час редагування та код тестування.
- Експозиція та повна підтримка впливу стирчаної зернистості HTML та суміжних ресурсів . У веб-формах HTML витягується, розробники не бажають метушитися з цим. В ASP.NET MVC розробникам рекомендується керувати цими деталями; насправді це необхідність. Перевага тут полягає в тому, що розробник може знову навчитися цінувати чисту семантику HTML, CSS та скрипту та працювати з ним, а не проти цього.
- Перевірка об’єктів бізнесу . Контролери та моделі набагато краще підходять для тестування програмних одиниць, так що реалізація може бути перевірена на відповідність бізнес-цілям, і зміни можуть бути перевірені, що вони не будуть порушені. З веб-формами було складно перевірити, оскільки компоненти не були розроблені для тестування індивідуально, і весь вихідний розвиток розгорнувся навколо форм сторінок та їх життєвих циклів подій із безліччю бізнес-логіки та логіки презентації, глибоко переплетених між собою.
Зауважте, що HTML - це вже дуже висока мова розмітки, як і Javascript - мова програмування високого рівня. Вся історія була б іншою, якби ми мали справу з мовою асамблеї та С.
Розширюючись на №2, тоді ще одна мета ASP.NET MVC полягає в тому, щоб дозволити розробникам організовувати детальну інформацію про частину "перегляду" своїх рішень та скористатися багатим фундаментом, на якому побудувала решта галузі. передня клієнтська платформа.
Ви побачите, що розробники ASP.NET MVC відчувають себе вдома, використовуючи багаті бібліотеки Javascript та методи шаблонування на стороні клієнта, не бореться з архітектурою на стороні сервера. Спочатку це не було з веб-формами ASP.NET, тому що веб-форми взагалі не хочуть, щоб ви дивилися на HTML чи скрипт, за винятком випадків, якщо вам справді потрібно , у цьому випадку остерігайтеся, це не для слабких людей. серця.