ASP.NET MVC 4 в действии

ASP.NET MVC 4 в действии

Джеффри Палермо

Что такое ASP.NET MVC?

ASP.NET MVC создан как альтернатива использованию технологии Web Forms при создании веб-приложений на платформе .NET. Эта платформа была впервые представлена компанией Microsoft в ноябре 2007 года, и с тех пор вышло уже 4 крупных релиза этой платформы. Третий крупный релиз, ASP.NET MVC 3 был выпущен в конце января 2011 года и стал первой версией платформы ASP.NET MVC, использующей .NET 4. ASP.NET MVC 4 работает как с .NET 4, так и с платформой .NET 4.5, о выпуске которой еще не было объявлено на момент написания этой книги.

Аббревиатура MVC расшифровывается как Model-View-Controller (Модель-Представление-Контроллер) и представляет собой архитектурный паттерн, очень популярный в области веб-разработки.

Будучи альтернативой технологии Web Forms, ASP.NET MVC использует другой подход к вопросу структурирования веб-приложений. Это означает, что вам не придется иметь дело с ASPX-страницами и элементами управления, обратными запросами или ViewState, а также жизненными циклами сложных событий. Вместо этого вы будете определять контроллеры, действия и представления. Тем не менее, платформа ASP.NET, лежащая в основе ASP.NET MVC, остается прежней, поэтому в ASP.NET MVC все еще применяются такие вещи, как HTTP-обработчики и HTTP-модули, и вы можете использовать в одном и том же приложении одновременно и MVC, и Web Forms страницы. Как показано на рисунке 1.2, эти платформы, ASP.NET Web Forms и ASP.NET MVC, расположены рядом друг с другом над ядром платформы ASP.NET.

Рисунок 1-2: Взаимосвязь различных ASP.NET веб-технологий

ASP.NET Web Pages

Возможно, на рисунке 1.2 вы заметили третью технологию, которая также основана на ASP.NET и расположена над ее ядром – это ASP.NET Web Pages.

ASP.NET Web Pages

Возможно, на рисунке 1.2 вы заметили третью технологию, которая также основана на ASP.NET и расположена над ее ядром – это ASP.NET Web Pages.

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

Несмотря на то, что ASP.NET Web Pages проекты могут создаваться в Visual Studio, Microsoft также выпустил упрощенную интегрированную среду разработки (IDE), получившую название WebMatrix, которая позволяет начинающему программисту получить необходимые навыки, фокусируясь исключительно на самой веб-разработке без необходимости изучения тех продвинутых функциональных возможностей, которые предоставляются в Visual Studio. Хотя изучение WebMatrix выходит за рамки этой книги, несколько тесно связанных технологий ASP.NET Web Pages будут описаны в рамках многочисленных примеров данной книги. К ним относится движок шаблонизации Razor – новый способ генерации HTML при помощи C# или VB.NET, который также используется в ASP.NET MVC.

В этой книге мы рассмотрим все основные черты ASP.NET MVC. Ниже приведен перечень некоторых отличных функциональных возможностей ASP.NET MVC, которые вы в дальнейшем изучите:

  • Полный контроль над HTML-разметкой
  • Полный контроль над URL-адресами
  • Лучшая концепция разделения
  • Расширяемость
  • Тестируемость

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

MVC паттерн

Хотя паттерн Model-View-Controller (Модель-Представление-Контроллер) распространился в веб-среде только с появлением в 2003 году Ruby on Rails, возник он в сообществе разработчиков Smalltalk еще в 1970-х годах.

В MVC паттерн входят 3 компонента:

  • Model (Модель) – домен, на основе которого строится ваше программное обеспечение. Если бы вы создавали блог, вашими моделями были бы пост и комментарий. Иногда термин "модель" может обозначать конкретную модель представления – отображение домена для конкретной цели демонстрации в пользовательском интерфейсе.
  • View (Представление) – визуальное отображение модели в определенном контексте. Представление обычно является результирующей разметкой, которую фреймворк передает веб-браузеру, как например, HTML-разметка, представляющая пост блога.
  • Controller (Контроллер) – координатор, который обеспечивает связь между представлением и моделью. Контроллер отвечает за обработку входных данных, оказывающих влияние на работу модели, и решает, какое действие должно выполняться, к примеру, передача представления или перенаправление на другую страницу. В продолжение примера публикации блога – контроллер может искать самые последние комментарии для публикации (модель) и передавать их в представление для показа.

На рисунке 1.3 показано взаимодействие этих трех компонентов.

Рисунок 1-3: Компоненты MVC паттерна. Контроллер получает пользовательские входные данные, обращается к подходящей модели, а затем передает ее в представление. И контроллер, и представление зависят от модели, а модель не зависит ни от представления, ни от контроллера.

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

Кроме того, на сегодняшний момент, помимо ASP.NET MVC и MonoRail, существует ряд других фреймворков на платформе .NET в стиле MVC. К ним относятся FubuMVC (http://mvc.fubu-project.org/), условно-управляемая платформа с открытым исходным кодом, и OpenRasta (http://openrasta.org), еще одна платформа с открытым исходным кодом, которая фокусируется на создании веб-приложений и служб, базирующихся на концепции ресурсов и HTTP методов.

Использование MVC паттерна дает ASP.NET MVC ряд преимуществ по сравнению с ASP.NET Web Forms.

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

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

Близость к протоколу

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

Концепция разделения

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

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

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

Теперь, когда вы увидели некоторые преимущества ASP.NET MVC, мы вкратце рассмотрим, что нового добавлено в его третий релиз.

или RSS канал: Что новенького на smarly.net