Развитие ASP.NET

182

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

ASP.NET 1.0 и 1.1

Когда версия ASP.NET 1.0 впервые вышла на арену, она главным образом ориентировалась на модель проектирования веб-страниц посредством так называемых веб-форм (Web Forms). Как будет объясняться позже, модель веб-форм представляет собой просто абстракцию, которая позволяет моделировать страницу в виде комбинации объектов.

При запросе браузером конкретной страницы ASP.NET сначала создает объект для самой страницы, а затем для всех остальных элементов управления ASP NET, которые присутствуют внутри нее. После этого страница и ее элементы управления проходят через ряд событий жизненного цикла, после чего — по завершении обработки страницы — они визуализируют окончательный вариант HTML и удаляются из памяти. За все, что происходит между этим, по большей части отвечает программирование ASP.NET.

ASP.NET 2.0

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

Мастер-страницы

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

Темы

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

Навигация

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

Безопасность и членство

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

Элементы управления источниками данных

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

Веб-части

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

Профили

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

Модель поставщиков

Многие из появившихся в ASP.NET 2.0 средств работают через абстракцию, которая называется моделью поставщиков. Прелесть этой модели состоит в том, что она позволяет использовать простые поставщики для создания кода страниц. Если требования изменяются, модифицировать страницы не понадобится — достаточно будет просто создать специальный поставщик и обновить конфигурацию веб-сайта.

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

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

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

ASP.NET 3.5

Разработчикам, впервые столкнувшимся с версией ASP.NET 3.5, наверняка интересно узнать, что случилось с версией ASP.NET 3.0? Как ни странно, но таковая не существует. В Microsoft под названием .NET Framework 3.0 выпустили набор следующих новых технологий: WPF (Windows Presentation Foundation), представляющая собой новую привлекательную технологию по построению пользовательских интерфейсов для создания многофункциональных клиентов; WCF (Windows Communication Foundation), которая является технологией для создания ориентированных на сообщения служб; и WF (Windows Workflow Foundation) — технология, позволяющая моделировать сложные бизнес-процессы в виде последовательности действий (дополнительно с применением визуального конструктора).

Однако .NET Framework 3.0 не включает новой версии CLR или ASP.NET. Следующая версия ASP.NET появилась в .NET Framework 3.5.

По сравнению с ASP NET 2.0, версия ASP. NET 3.5 представляет собой более плавное развитие. Новые функциональные возможности в этой версии относятся в основном к двум таким технологиями, как LINQ и Ajax.

Технология LINQ

Технология LINQ (Language Integrated Query — язык интегрированных запросов) представляет собой набор расширений для языков C# и Visual Basic. Она позволяет писать на C# или Visual Basic код, способный манипулировать находящимися в памяти данными во многом в той же манере, что и запросы к базе данных.

Исчерпывающую информацию по LINQ ищите в следующем разделе - LINQ.

Технология ASP.NET AJAX

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

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

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

Например, элемент управления Menu немедленно реагирует на наведение пользователем курсора мыши на различные подзаголовки. При его использовании страница не производит обратную отправку серверу до тех пор, пока пользователь не щелкнет на каком-то элементе.

Разработчики используют серверные элементы управления вроде Menu внутри традиционных страниц ASP.NET и получают преимущества, которые предоставляют встроенные в элементы клиентские сценарии. Но даже в случае применения таких более совершенных элементов управления обратная отправка данных серверу все равно неизбежна.

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

Поэтому разработчики начали пытаться решить эти проблемы за счет использования дополнительного клиентского кода и его применения более совершенными способами. Одним из наиболее обсуждаемых на сегодняшний день примеров является технология программирования клиентской стороны под названием Ajax (Asynchronous JavaScript and XML — асинхронный JavaScript и XML).

Ajax позволяет странице связываться с сервером и обновлять содержимое без полной обратной отправки. Обычно в странице Ajax используется код клиентского сценария для выполнения асинхронного запроса "за кулисами". Сервер получает этот запрос, выполняет некоторый код и затем возвращает необходимые странице данные (зачастую в виде блока XML-разметки).

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

Чтобы посмотреть на пример работы Ajax не нужно далеко ходить. На нашем сайте данная технология используется в строке поиска. Когда вы вводите текст в поле поиска данные, полученные из базы данных, автоматически обновляются в списке "Полезные ссылки" без перезагрузки самой страницы.

ASP.NET 4

В самой последней версии ASP.NET предлагаются новые улучшения и усовершенствования. Наиболее значительные из них перечислены ниже:

Согласованная визуализация XHTML

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

Обновленное обнаружение браузера

В ASP.NET 4 поставляются обновленные файлы определений браузеров, что позволяет отвечающему за визуализацию механизму на стороне сервера распознавать и предоставлять корректно направленную поддержку для более широкого спектра браузеров. Улучшена поддержка следующих браузеров: Internet Explorer 8, Firefox 3.5, Opera 10, Safari 4, а также мобильные браузеры для устройств BlackBerry, IPhone, IPad и Windows Mobile.

Сжатие данных состояния сеансов

В NET 2.0 появилось новое пространство имен System.I0.Compression, обеспечивающее поддержку сжатия gzip. Теперь ASP.NET его может использовать для сжатия данных, передаваемых функционирующей за пределами процесса службе состояния сеансов. Применение подобного приема может быть целесообразно только при весьма ограниченных обстоятельствах, но когда это действительно подходит, производительность улучшается почти автоматически.

Состояние представления по запросу

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

Расширение возможностей для кэширования

Кэширование является одной из главных функций в ASP.NET, но за исключением зависимостей кэша SQL Server, никакими новыми возможностями кэширование со времен .NET 1.0 не пополнялось.

В ASP.NET 4 разработчики из Microsoft, наконец, начали предлагать точки для расширения возможностей кэширования, которые позволят им (и другим разработчикам) использовать новые типы механизмов кэширования, в том числе распределенные решения кэширования вроде Windows Server AppFabric и memcached.

Элемент управления Chart

В течение многих лет разработчики приложений ASP.NET должны были осваивать модель рисования GDI+ или приобретать элементы управления у сторонних производителей для создания более-менее прилично выглядящих диаграмм.

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

Переделанный интерфейс Visual Studio

Хотя интерфейс Visual Studio 2010 в целом сохранил прежний дизайн, он был полностью переделан с использованием .NET и WPF (Windows Presentation Foundation). Кроме того были добавлены новые средства вроде расширенной функции IntelliSense.

Маршрутизация

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

Более эффективные инструменты для развертывания

В Visual Studio теперь можно создавать так называемые веб-пакеты т.е. сжатые файлы, включающие в себя содержимое приложения и прочие детали, такие как схемы баз данных SQL Server и настроек IIS.

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

Наконец, упрощена загрузка и предварительная компиляция нового развертываемого приложения за счет использования модуля подготовки приложений IIS (Application Warm-Up).

Хотя все перечисленные средства, несомненно, полезны, наиболее впечатляющие новые добавления для разработки приложений ASP. NET поставляются в двух дополнительных компонентах — ASP.NET MVC и ASP.NET Dynamic Data. Оба средства предлагают забыть о части традиционной модели разработки ASP.NET и использовать вместо нее другой подход, обладающий как своими преимуществами, так и своими недостатками.

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

Компонент ASP.NET MVC

Компонент ASP.NET MVC (Model-View-Controller — модель-представление-контроллер) предлагает совершенно другой способ для построения веб-страниц по сравнению со стандартной моделью веб-форм.

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

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

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

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

Компонент ASP.NET Dynamic Data

Компонент ASP.NET Dynamic Data (Динамические данные ASP.NET) представляет собой вспомогательную платформу, которая позволяет быстро создавать управляемые данными приложения. При использовании в сочетании с LINQ to SQL или LINQ to Entities (как бывает практически всегда) он предоставляет комплексное решение, проводящее от схемы базы данных до полнофункционального веб-приложения с поддержкой для просмотра, редактирования, вставки и удаления записей.

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

На самом деле Dynamic Data может рассматриваться как логическое расширение многофункциональных элементов управления данными, которые уже имеются в ASP.NET (наподобие GridView, DetailsView и FormView). Но вместо того, чтобы заставить изменять множество различных элементов управления данными на множестве различных страниц для получения желаемого эффекта, Dynamic Data позволяет использовать шаблоны полей, которые определяются один раз и применяются везде.

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

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