Порівняння ASP.NET MVC

108

Програмування Asp.net
Попередній

Наступний

Як і з будь-якою іншою технологією, простий факт її існування ще не є підставою для її обов’язкового впровадження (незважаючи на природне бажання деяких розробників спробувати щось нове). Давайте порівняємо платформу MVC з найбільш очевидними альтернативами.

Порівняння з ASP.NET WebForms

Напевно вже чули про недоліки та обмеження, властивих традиційній технології ASP.NET WebForms, і про те, що ASP.NET MVC вирішує багато з цих проблем. Тим не менш, це не означає, що WebForms можна списувати з рахунків – у Microsoft не перестають нагадувати, що ці дві платформи йдуть рука об руку, підтримуються в рівній мірі, і обидві є суб’єктами активної, безперервної розробки. У багатьох відносинах вибір між ними двома є опитуванням філософії розробки, яка вам ближче.

  • Філософія WebForms виходить з уявлення, що інтерфейс має статки. Для цього рівень абстракції, а для створення ефекту збереженого стану використовуються концепції ViewState і зворотних відправок. Такий підхід добре для візуальної розробки в стилі Windows Forms, коли на робочу поверхню поміщаються віджети (графічні елементи користувальницького інтерфейсу, а їх обробники подій заповнюються відповідним кодом.
  • Філософія MVC підкреслює природну особливість протоколу HTTP, пов’язану з відсутністю підтримки стану, і замість того, щоб долати, пристосовується до неї. Хоча це потребує дійсного розуміння роботи веб-додатків, але одночасно надає простий, потужний і сучасний підхід до написання веб-додатків з акуратним кодом, який легко тестувати і супроводжувати, кодом вільним від химерних складнощів і хворобливих обмежень.

Бувають окремі випадки, коли WebForms виявляється, принаймні, не гірше, а може бути і краще, ніж MVC. Очевидний приклад – невеликі, орієнтовані на внутрішню корпоративну мережу, програми, які в основному безпосередньо пов’язують сітки даних (grid) з таблицями баз даних або проводять користувача з ряду сторінок майстра (wizard). Оскільки при цьому не потрібно турбуватися про проблеми пропускної здатності, пов’язаних з передачею ViewState, про оптимізацію пошукових механізмів, про тестируемости і довгостроковому супроводі, гідності розробки методом перетягування переважують її недоліки.

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

Порівняння з Ruby on Rails

Rails перетворився у своєрідний зразок, з яким варто порівнювати інші веб-платформи. Сувора реальність полягає в тому, що розробники і компанії, що працюють у світі Microsoft .NET, визнають більш простий в адаптації та вивченні платформу ASP.NET MVC, в той час як компанії, що працюють на Phython або Ruby в Linux і Mac OS X, віддадуть перевагу Rails. Малоймовірно, що знадобиться виконувати перехід від Rails на ASP.NET MVC або навпаки. Між цими двома технологіями існують значні відмінності в області застосування.

Rails – це повністю цілісна платформа розробки, в тому розумінні, що вона охоплює весь стек – від управління вихідними базами даних (міграціями) до об’єктно-реляційного відображення (ORM), обробки запитів за допомогою контролерів і дій, а також побудови автоматизованих тестів. Загалом, Rails являє собою самодостатню систему швидкої розробки додатків, орієнтованих на дані.

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

Наприклад, в якості інструменту ORM можна використовувати NHibernate, Microsoft LINQ to SQL, Subsonic або будь-який з інших зрілих рішень. В цьому і полягає розкіш платформи .NET, хоча це також означає, що згадані компоненти не можуть бути настільки тісно інтегровані з ASP.NET MVC, як їх еквівалент в Rails.

Порівняння з MonoRail

Аж до цього моменту провідний платформою веб-розробки на основі .NET MVC була система Castle MonoRail – складова частина проекту Castle з відкритим вихідним кодом, що розробляється з 2003р. Якщо мали справу з MonoRail, то ASP.NET MVC здасться знайомим; обидві технології засновані на ядрі платформи ASP.NET і обидві значною мірою натхненні Ruby on Rails. Вони використовують однакову термінологію у багатьох місцях (засновники MonoRail брали участь в процесі проектування ASP.NET MVC) і привертають увагу одних і тих же розробників. Тим не менше, між ними є й відмінності.

  • MonoRail може працювати на платформі ASP.NET 2.0, в той час як ASP.NET MVC вимагає версії ASP.NET 3.5.
  • На відміну від ASP.NET MVC, в MonoRail перевага віддається одній конкретній реалізації ORM. У разі використання Castle ActiveRecord (заснованої на NHibernate), MonoRail може генерувати базовий код для перегляду і введення даних автоматично.
  • MonoRail дуже схожа на Ruby on Rails. У доповненні до використання Rails-подібної термінології (групова запис і читання, відновлення даних, компонування і т. д.) посилюється значення проектування за угодами. У додатками MonoRail часто використовується одна і та ж стандартна схема URL (/контролер/действеи).
  • У MonoRail немає прямого аналога системи маршрутизації ASP.NET MVC. Єдиний спосіб прийняти нестандартних шаблони входять URL складається в застосуванні системи перезапису URL, але в такому випадку не існує простого шляху генерації вихідних URL.

Обидві платформи володіють достоїнствами і недоліками, але ASP.NET MVC має одну величезну перевагу, яка гарантує його широке визнання: марку Microsoft. Подобається це чи ні, але наявність марки Microsft насправді має значення у багатьох реальних ситуаціях, коли ви намагаєтеся схилити клієнта або боса до того, що б прийняти нову технологію. Коли слон пересувається, навколо нього в’ються хмари комах: тисячі розробників, блогерів та незалежних постачальників компонентів прагнуть зайнятий кращі місця в новому світі ASP.NET MVC. Це ще більше полегшує підтримку та застосування інструментів, а також розширює коло кваліфікованих фахівців. Як ні сумно, але все це навряд чи коли-небудь дістанеться MonoRail.