Сравнение ASP.NET MVC

Programming
Предыдущий Следующий

Как и с любой другой технологией, простой факт ее существования еще не является основанием для ее обязательного  внедрения (несмотря на естественное желание некоторых разработчиков попробовать что-то новое). Давайте сравним платформу 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.

 

  • В 6/19/2014 12:39:48 AM, Аноним

    Феерическая ерунда по отношению к .НЕТ

Самостоятельный отпуск Опыт заказа вывоза мусора в Киеве Магія зміни: Від ночі до дня
Магія Вечірнього Неба: Відлякуйте втомленість дня і зануртеся у світ загадок і краси