Преимущества ASP.NET MVC

72

В октябре 2007 г. в Microsoft анонсировали новую платформу веб-разработки - MVC, построенную на основе ASP.NET и явно спроектированную непосредственно в ответ на развитие технологий, подобных Rails, а также в качестве реакции на критику в адрес Web Forms. В последующих разделах будет показано, каким образом эта новая платформа позволила преодолеть ограничения Web Forms и вновь вывести ASP.NET на передовой уровень.

Архитектурный шаблон MVC

Важно различать архитектурный шаблон MVC и инфраструктуру ASP.NET MVC Framework. Шаблон MVC далеко не нов (его появление датируется 1978 г. и связано с проектом Smalltalk в Xerox PARC), но в наши дни он завоевал огромную популярность в качестве шаблона для веб-приложений по перечисленным ниже причинам:

Инфраструктура ASP.NET MVC Framework реализует шаблон MVC и при этом обеспечивает существенно улучшенное разделение ответственности. На самом деле в ASP.NET MVC внедрен современный вариант MVC, который особенно хорошо подходит для веб-приложений.

За счет принятия и адаптации шаблона MVC инфраструктура ASP.NET MVC Framework составляет сильную конкуренцию Ruby on Rails и аналогичным платформам, выводя модель MVC в авангард развития мира .NET. Обобщая опыт и наиболее рекомендуемые приемы, обнаруженные разработчиками, которые используют другие платформы, ASP.NET MVC во многих отношениях превзошла даже то, что может предложить Rails.

Расширяемость

Инфраструктура MVC Framework построена в виде набора независимых компонентов, которые удовлетворяют интерфейсу .NET или созданы на основе абстрактного базового класса. Компоненты, подобные системе маршрутизации, механизму визуализации и фабрике контроллеров, можно легко заменять другими компонентами с собственной реализацией. В общем случае для каждого компонента MVC Framework предлагает три возможности:

Различные компоненты, а также способы и причины их возможной настройки или замены будут рассматриваться в следующих статьях.

Жесткий контроль над HTML и HTTP

Инфраструктура ASP.NET MVC генерирует ясный и соответствующий стандартам код разметки. Ее встроенные вспомогательные методы HTML производят соответствующий стандартам вывод, но существует также гораздо более значимое философское изменение по сравнению с Web Forms. Вместо генерации громадного объема трудно поддающейся управлению HTML-разметки инфраструктура MVC Framework стимулирует создание простых и элегантных элементов, оформленных стилями CSS.

Конечно, если действительно требуется использовать некоторые готовые виджеты для таких сложных элементов пользовательского интерфейса, как окна выбора даты или каскадные меню, применяемый в ASP.NET MVC подход "никаких специальных требований" к разметке, позволяет легко использовать наилучшие библиотеки для построения пользовательских интерфейсов, подобные jQuery или Bootstrap CSS. К примеру, библиотека jQuery настолько эффективно поддерживается, что поставляется в качестве встроенной части стандартного шаблона проекта ASP.NET MVC в Visual Studio наряду с другими популярными библиотеками, такими как Bootstrap, Knockout и Modernizr.

Сгенерированные ASP.NET MVC страницы не содержат никаких данных View State, поэтому они меньше типовых страниц ASP.NET Web Forms по размеру. Несмотря на современные быстрые соединения, такая экономия трафика по-прежнему повышает комфорт конечного пользователя и помогает сократить затраты, связанные с запуском популярных веб-приложений.

Инфраструктура ASP.NET MVC работает в тесном сотрудничестве с HTTP. При этом имеется контроль над запросами, передаваемыми между браузером и сервером, что позволяет очень точно настраивать пользовательский интерфейс по своему усмотрению. Технология AJAX проста, и ей не нужны какие-то автоматические обратные отправки запросов для взаимодействия с состоянием клиентской стороны.

Тестируемость

Естественное разделение различных ответственностей приложения по независимым друг от друга частям программного обеспечения, которое поддерживается архитектурой MVC, позволяет изначально строить легко сопровождаемые и тестируемые приложения. Однако проектировщики ASP.NET MVC на этом не остановились. Для каждого фрагмента компонентно-ориентированного проекта инфраструктуры они обеспечили структурированность, необходимую для удовлетворения требований модульного тестирования и средств имитации.

В среду Visual Studio добавлен набор мастеров для автоматизированного создания проектов модульного тестирования, которые могут быть интегрированы с такими инструментами модульного тестирования с открытым кодом, как NUnit и xUnit. Даже если вам никогда ранее не приходилось создавать модульные тесты, у вас будет все необходимое для успешного старта.

Далее, в этом руководстве, вы увидите примеры написания ясных и простых модульных тестов для контроллеров и действий ASP.NET MVC, предоставляющих фиктивные либо имитированные реализации компонентов инфраструктуры для эмуляции любого сценария с использованием разнообразных стратегий тестирования и имитации.

Тестируемость касается не только модульного тестирования. Приложения ASP.NET MVC успешно работают также с инструментами тестирования, встроенными в средства автоматизации пользовательского интерфейса. Можно создавать тестовые сценарии, которые имитируют взаимодействие с пользователем, не беспокоясь о том, какие структуры HTML-элементов, классы CSS или идентификаторы будут сгенерированы инфраструктурой, равно как и о неожиданных изменениях структуры.

Мощная система маршрутизации

Совершенствование технологии построения веб-приложений сопровождалось развитием стиля URL-адресов. Адреса URL, подобные приведенному ниже:

/App_v2/MyShop/Page.aspx?action=search&type=ball&id=2106&color=silver

встречаются все реже, а на смену им приходит более простой и понятный формат следующего вида:

/shop/ball/2106-silver

Существует ряд веских причин для того, чтобы заботиться о структуре URL-адресов.

Во-первых, поисковые механизмы придают ключевым словам, содержащимся в URL, больший вес.

Во-вторых, многие веб-пользователи достаточно сообразительны, чтобы понять URL, и ценят возможность осуществления навигации путем ввода запроса в адресной строке своего браузера.

В-третьих, когда кто-то понимает структуру URL-адреса, они с большей вероятностью пройдут по нему, поделятся им с другими или даже зачитают его вслух по телефону.

В-четвертых, при таком подходе в Интернете не раскрываются технические нюансы, структура каталогов и имен файлов приложения; следовательно, вы вольны изменять лежащую в основе сайта реализацию, не нарушая работоспособности всех входящих ссылок.

В более ранних инфраструктурах понятные URL-адреса реализовать было трудно, но в ASP.NET MVC применяется средство, известное как маршрутизация URL, которое обеспечивает предоставление понятных URL-адресов по умолчанию. Это дает контроль над схемой URL и ее взаимосвязью с приложением, обеспечивая свободу создания понятного и удобного для пользователей шаблона URL без необходимости следования какому-то заранее определенному шаблону. И, разумеется, это означает также простоту определения современной схемы URL в стиле REST, если это требуется.

Построение на основе лучших частей платформы ASP.NET

Существующая платформа ASP.NET производства Microsoft предлагает зрелый, хорошо проверенный набор компонентов и средств для разработки эффективных и высокопроизводительных веб-приложений. Первое и наиболее очевидное преимущество заключается в том, что поскольку инфраструктура ASP.NET MVC построена на основе платформы .NET, вы вольны писать код на любом языке .NET и при этом иметь доступ к одним и тем же функциям API-интерфейсов, которые определены не только в MVC Framework, но и в обширной библиотеке классов .NET, а также в широком множестве библиотек .NET от независимых разработчиков.

Во-вторых, готовые средства платформы ASP.NET, такие как аутентификация, членство, роли, профили и интернационализация, могут существенно сократить объем кода, который придется писать и поддерживать в любом веб-приложении, и в проекте MVC Framework они столь же эффективны, как в классическом проекте Web Forms. Лежащая в основе платформа ASP.NET предоставляет развитый набор инструментов, на базе которых строятся веб-приложения с помощью MVC Framework.

Современный API-интерфейс

Платформа Microsoft .NET развивалась с каждым крупным выпуском, поддерживая - и даже определяя - многие передовые аспекты современного программирования.

Версия ASP.NET MVC 5 построена для .NET Framework 4.5.1, поэтому ее API-интерфейс может в полной мере задействовать последние новшества языка и исполняющей среды, в том числе ключевое слово await, расширяющие методы, лямбда-выражения, анонимные и динамические типы, а также язык интегрированных запросов (Language Integrated Query - LINQ). Многие методы и шаблоны кодирования API-интерфейса MVC Framework следуют более четкой и выразительной композиции, чем это было возможно в ранних платформах.

Инфраструктура ASP.NET MVC имеет открытый код

В отличие от предшествующих платформ веб-разработки производства Microsoft, первоначальный исходный код ASP.NET MVC доступен для свободной загрузки и даже для модификации и компиляции с целью получения собственной версии этой инфраструктуры. Это буквально неоценимо при отладке кода, обращающегося к системному компоненту, когда требуется пошагово выполнить его код (и даже ознакомиться с комментариями программистов, написавших этот код). Это также полезно, если вы создаете усовершенствованный компонент и хотите видеть, какие существуют возможности разработки, или узнать, как действительно работают встроенные компоненты.

Вдобавок упомянутая возможность удобна и тогда, когда не устраивает работа того или иного компонента, когда требуется найти ошибку или когда необходимо получить доступ к тому, что недоступно с помощью других средств - интересующий компонент можно просто изменить самостоятельно. Однако при этом придется отслеживать свои изменения и повторно их применять при модернизации до более новой версии инфраструктуры.

Исходный код ASP.NET MVC распространяется в соответствии с открытой лицензией Microsoft (Microsoft Public License - Ms-PL) - лицензией программного обеспечения с открытым кодом, одобренной Инициативой по поддержке ПО с открытым кодом (Open Source Initiative - OSI). Это значит, что исходный код можно изменять, развертывать и даже распространять в виде производного проекта. Исходный код MVC доступен для загрузки по адресу ASP.NET MVC Source Code.

Пройди тесты
Лучший чат для C# программистов