Главная страница   /   1.1. Становление платформы (ASP.NET MVC 4 в действии

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

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

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

1.1. Становление платформы

В зависимости от того, на протяжении какого времени вы занимаетесь созданием веб-приложений на платформе Microsoft .NET, вы будете иметь отношение к нескольким или же ко всем из следующих разработок компании Microsoft. В 1990-х годах разработчики создавали интерактивные веб-сайты с помощью исполняемых программ, которые запускались на сервере. Эти приложения (технология "Общий интерфейс шлюза" (CGI) была в то время общепринятой) принимали веб-запросы и отвечали за создание HTML-ответов. Шаблонизация была произвольной, а код было трудно читать, отлаживать и тестировать. В конце 1990-х годов компания Microsoft по окончании краткосрочного периода, связанного с HTX-шаблонами и технологией "Коннектор баз данных Интернета (IDC)", представила технологию активных серверных страниц или ASP. Технология ASP принесла в веб-приложения шаблонизацию. Серверная страница представляла собой смесь HTML-документа и динамического сценария. Несмотря на то, что серверные страницы были большим шагом вперед по сравнению с предыдущими технологиями, они вскоре стали громадными по размерам, а комбинация кода и разметки практически не поддавалась расшифровке.

В начале 2002 года компания Microsoft выпустила первую версию .NET фреймворка, и это стало большим прорывом в мире классической ASP-разработки.

Платформа .NET

Платформа .NET была огромным шагом вперед для тех разработчиков, кому был хорошо знаком динамический сценарий классической технологии ASP. .NET ввел несколько новых языков программирования, которые все компилировались в один и тот же промежуточный язык (CIL) для дальнейшего запуска в общеязыковой исполняющей среде (CLR) платформы .NET. Первоначально к этим языкам относились C#, Visual Basic.NET, и J#, которые являются строго типизированными языками.

Со временем языки, доступные в CLR, развивались. В рамках последнего релиза фреймворка (.NET 4) доступны следующие языки:

  • C# 4
  • VB.NET 10
  • F#

Кроме этих языков в .NET 4 входит исполняющая среда динамических языков (DLR), которая также дает возможность динамическим языкам программирования запускаться в CLR. К этим языкам относятся IronRuby и IronPython, реализации открытого кода популярных языков программирования Ruby и Python. Возможности DLR в настоящее время также доступны для языков программирования .NET, которые исторически являются строго типизированными, например, для таких языков, как C#. На рисунке 1.1. представлены взаимосвязи языков программирования .NET.

Рисунок 1-1: Языки программирования .NET в CLR

Наряду с поддержкой нескольких языков программирования платформа .NET поставляется вместе со стандартной библиотекой классов (FCL) – библиотекой, содержащей классы для выполнения огромного ряда задач. Библиотеки платформы ASP.NET, предназначенные для веб-разработки, являются частью FCL.

ASP.NET Web Forms

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

Платформа Web Forms построена вокруг жизненного цикла событийно-управляемой страницы, в котором события наступают во время исполнения страницы. Как разработчик вы можете словить эти события для того, чтобы исполнять код в определенных точках на протяжении жизненного цикла страницы. Элементы пользовательского интерфейса определены как элементы управления, где каждый элемент управления отвечает за процесс своего воспроизведения и имеет свой собственный набор событий. Этот подход, несмотря на то, что он хорошо знаком разработчикам, которые обладают теоретическими знаниями программы Visual Basic 6 или интерфейса Windows Forms, был довольно чужд традиционным веб-разработчикам, поскольку он был абстрагирован от основных принципов HTTP и пытался навязать веб-среде модель "сохранения состояния" ("stateful"), в то время, как веб-среда, по своей природе, не сохраняет состояние.

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

Несмотря на то, что в теории ViewState был хорош, он ломался, как только приложения становились более сложными. Простые страницы могли достигать размера в сотни килобайт, потому что внутреннее состояние приложения хранилось в выходных данных каждой генерируемой страницы. Игнорировались самые лучшие методы разработки, поскольку такие инструментальные средства, как Visual Studio, способствовали тому, что вопросы доступа к данным, вроде SQL-запросов, включались в логику страницы. Возможно, самым великим прегрешением фреймворка Web Forms была его устойчивая связь со всем, что находилось в пространстве имен System.Web. Невозможно было выполнить модульное тестирование кода в файле выделенного кода, и на сегодняшний день мы еще можем встретить много таких унаследованных от Web Forms приложений, в которых длина кода метода Page_Load составляет несколько страниц. Несмотря на то, что ранние версии платформы Web Forms имели некоторые недостатки, ASP.NET, а в дальнейшем .NET Framework захватили большую часть рынка веб-приложений. На сегодняшний день многие крупные сайты запускаются на ASP.NET. Эта платформа доказала свое превосходство на рынке веб-приложений, а в комбинации с информационными службами Интернета (IIS), запускаемыми на ОС Windows, платформа ASP.NET может с легкостью поддерживать запуск сложных веб-приложений в крупных data-центрах.

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