Нещодавно архітектор описав нашу компанію, що пропонує рішення Rolls-Royce (MVC), коли все, що йому потрібно, було Toyota (веб-форми).
Мені цікаво дізнатися, що ви думаєте про веб-форми проти MVC як архітектурний вибір.
Нещодавно архітектор описав нашу компанію, що пропонує рішення Rolls-Royce (MVC), коли все, що йому потрібно, було Toyota (веб-форми).
Мені цікаво дізнатися, що ви думаєте про веб-форми проти MVC як архітектурний вибір.
Відповіді:
Аналогія Rolls-Royce / Toyota страшенно хибна і оманлива. Один (ASP.NET MVC) - це не просто більш приваблива або дорожча версія іншої (ASP.NET WebForms). Вони дуже відрізняються підходами до створення веб-додатків за допомогою ASP.NET.
Для мене найбільша архітектурна відмінність між MVC та WebForms полягає в тому, як вони працюють з середовищем без громадянства в Інтернеті. це.
Кожен підхід має свої переваги та збитки, але мені дуже подобається, як створення веб-сайтів із MVC відчуває себе набагато природніше, ніж WebForms (з його шаром на шар протікаючих абстракцій ).
Старе запитання, але воно заслуговує на більш детальну відповідь, на випадок, якщо хтось там ще насправді має дилему.
Зрештою, веб-форми - це рішення для тонких клієнтів, під яким мається на увазі, що ви натискаєте купу гарних кнопок, а передній (клієнтський) матеріал створений для вас. Якщо у вас є люди, які знають, як викрутити це у веб-формах, і немає абсолютно ніяких проблем з технічним обслуговуванням / модифікованістю, і веб-сайт є повністю короткотерміновим та одноразовим, у цьому підході немає нічого поганого. Можна дізнатися, як робити власні речі, але в цьому випадку знадобиться знати як веб-форми веб-форм, що намагаються захистити розробники додатків .NET, так і всі речі веб-форм, завдяки чому більшість веб-розробників на стороні клієнта хочуть вбити Microsoft відповідальні інженери.
У 99,5% всіх інших сценаріїв використання випадків ми перестали намагатися приховати Інтернет від розробників додатків, тому що дійсно, якщо ви хочете писати веб-додатки, ви набагато краще насправді дізнаєтесь, як працює веб. Іронія товстих порівняно з тонкими клієнтськими рішеннями полягає в тому, що неминуче підхід "тонкого клієнта" неминуче виганяє лайно з вашого переднього кінця і є будь-чим, окрім виконавців. Що ще важливіше, ці рішення завжди робили речі негнучкими, як усі пекло для людей, які насправді знають, що роблять, і не хочуть, щоб насправді обмежували рамки.
Немає нічого такого безглуздого, як взяти когось, хто знає все про CSS, JavaScript, HTML, XHR і зробити їх абсолютно марними, заблокувавши їх на кожному кроці з рамкою, яка ...
Очищає всі "непотрібні" теги скриптів у головних тегах, щоб уникнути викручування залежностей від сценарію. (краще дозволити «менеджеру сценаріїв» вирішити це для вас) Звичайно, ніхто зараз не ставить їх там, якщо вони знають, що роблять, але це просто заплутано.
Наполягає, що ви загортаєте весь HTML в один гігантський тег форми. HTML не дозволяє формам всередині форм, тому ви формуєте веб-форми так чи інакше.
Створюється як 18-кроковий "життєвий цикл" для того, що дійсно повинно зводитися до реакції на події інтерфейсу користувача, взаємодіючи з браузером, щоб надсилати повідомлення на сервер, а потім реагувати, коли сервер відповідає. Обмежуючи цей процес великою гігантською купою сміття, ніколи не потрібно було відбуватися (і, справедливо кажучи, МС - не єдиний глушник, який намагався це зробити).
Насправді все, що можливо, перешкоджає використанню не-веб-форм вирішення проблем. Приклад: Коли я був молодшим клієнтом у розробці, я витратив цілий день, шукаючи спосіб зробити кнопку подання у верхній частині сторінки, запустивши кнопку подання внизу сторінки (я вважаю, що це одна велика- річ у формі гіганта). Зазвичай це займе 5 хвилин, але, через кілька годин, за допомогою зворотної інженерії веб-форм, відповідальних за JavaScript, я виявив, що вони, серед іншого, встановлюють властивість, про яку я навіть не знав, на той момент, який говорить вам про те, який останній елемент форми повинен мати фокус полягав у тому, що при натисканні кнопки надсилання лише офіційна кнопка Microsoft Submit (tm) працюватиме щодо активації офіційного обробника Microsoft Submit (tm).
Тож ні, Rolls-Royce проти Toyota, абсолютно нерозумно. Я б сказала більше, цілком розумний Hyundai, який ви платите занадто багато за порівняно з інженером Microsoft Pinto із вбудованою системою, яка автоматично робить різкі повороти на 90 градусів, коли виявляє, що ви купили газ або нафту у когось, крім Microsoft, і це виявлено зручна стіна для забивання. Ідеальний автомобіль для суїцидально-лояльного водія, який нічого не знає в Інтернеті і хоче присягнути на все життя вірності Microsoft.
Все .NET MVC насправді є простим і розумним, і він не винаходить власний шар, щоб ляпати поверх Інтернету. Він просто працює з тим, що там, щоб допомогти вибити певну плиту для вас. Є кращі / дешевші / вільніші рамки, але якщо ви вже заблокували себе .NET річ, ви можете зробити набагато гірше.
Але якщо серйозно, не тримайтеся! @ # $ Подалі від веб-форм. Зараз він майже мертвий. Відпусти. Скажіть своїм клієнтам, що ви зробите це за три рази більше грошей, якщо вони також обіцяють вам ексклюзивний та вигідний договір на цілодобову підтримку, коли вони насправді хочуть зробити щось нове або інше або коли лайно починає ламатися, бо навіть MS не може Не заважайте продовжувати додавати до цього гегемоту 10-ти рядкового файлу ajax.js, вони витягують із задниці DLL там, де ви не можете доторкнутися до нього.
Рішення ASP.NET MVC не повинно бути складніше, ніж рішення WebForms. Особисто я вважаю, що ASP.NET MVC насправді набагато простіший, ніж WebForms, і він, безумовно, здається, що він по суті чистіший.
З мого досвіду, багато фреймворків MVC (ASP.NET, Rails, CodeIgniter тощо) мають майже однакові основні функціональні можливості та умови. WebForms - це справді дивна качка з точки зору Інтернету. Я здогадуюсь, що більшість веб-програмістів підбирають ASP.NET MVC набагато швидше, ніж WebForms.
Основна причина, по якій ви використовуєте ASP.NET MVC над ASP.NET WebForms - це доказовість. Впевнені, що ви можете провести тестування веб-форм, але для цього потрібні глузуючі рамки та багато болю. Друга причина - MVC робить його трохи простіше розділити проблеми. Це може забезпечити багаторазове використання коду та зробити ваш код вільно зв'язаним. Це не означає, що неможливо зробити те саме в ASP.NET з такими шаблонами, як MVP.
Мінусом MVC є те, що ви втрачаєте багато функціоналу і вбудований у WebForms протягом останнього десятиліття (майже майже). MVC пройшов довгий шлях від свого заснування до наданих подібних рис.
Що стосується продуктивності, чи має хто-небудь доказ той чи інший спосіб того, яка технологія "швидша"?
Я не думаю, що один кращий за інший. Мені дуже подобається структура MVC і використовую її з великим успіхом, але я завжди впевнений, що я вибираю технологію, яка відповідає проекту.