Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект лекцій розробка.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
24 Мб
Скачать
☆

1.5. Asp.Net 1.0 і 1.1. Asp.Net 2.0. Asp.Net3.5. Asp.Net 4. Компонент asp.Net mvc.

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 поддерживается около 40 операций запросов, таких как SELECT, FROM, IN, WHERE и ORDER BY (для С#). Эти операции позволяют формировать код запроса. Данные, в отношении которых может выполняться такой запрос, могут быть разного типа, и для каждого из них требуется применять отдельную разновидность LINQ.

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

Помимо LINQ to Objects имеется разновидность под названием LINQ to DataSet которая предоставляет похожие возможности для запроса находящегося в памяти объекта DataSet, и разновидность LINQ to XML, позволяющая работать с XML-данными. Но одной из наиболее интересных разновидностей LINQ является LINQ to Entities, которая дает возможность применять синтаксис LINQ для выполнения запросов к реляционной базе данных. В сущности LINQ to Entities создает на основе кода соответствующим образом параметризованный SQL-запрос и выполняет его при попытке доступа к результатам запроса. Писать какой-либо код для обеспечения доступа к данным либо использовать традиционные объекты ADO.NET не требуется.

LINQ to Objects, LINQ to DataSet и LINQ to XML являются средствами, которые дополняют технологию ASP.NET, но никак к ней не привязаны. Однако в состав ASP.NET входит расширенная поддержка для LINQ to Entities, включая специальный элемент управления источником данных, который позволяет выполнять запрос посредством LINQ to SQL и привязывать результаты к веб-элементу без написания дополнительного кода. LINQ to Objects, LINQ to DataSet и LINQ to Entities.

На заметку! Если вы программировали приложения с использованием ASP.NET 3.5. то, возможно, применяли для доступа к реляционным базам данных другую разновидность LINQ — LINQ to SQL. Хотя LINQ to SQL все еще и поддерживается (чтобы не пришлось переписывать существующие приложения), она уже была по большей части заменена LINQ to Entities. Разновидность LINQ to Entities является более гибкой и поддерживает больше типов поставщиков данных, в то время как LINQ to SQL позволяет работать только с SQL Server.

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

На рис. 1.3 показано, чем страницы Ajax отличаются от обычных веб-страниц.

Рис. 1.3. Обычные серверные страницы и страницы Ajax

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

Internet Explorer 5 и последующие версии;

Netscape 7 и последующие версии;

Opera 7.6 и последующие версии;

Safari 1.2 и последующие версии;

Firefox (все версии);

Google Chrome (все версии).

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

На заметку! По общепринятому соглашению, слово “Ajax” заглавными буквами не пишется, потому что акронимом не является. Тем не менее, в Microsoft решили использовать в ASP.NET AJAX заглавные буквы. Именно поэтому в книге будут встречаться два варианта написания этого слова: Ajax при обсуждении технологии и философии Ajax в общем и AJAX для ссылки на технологию ASP.NET AJAX, которая является реализацией Ajax от Microsoft.

ASP.NET 4

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

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

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

Сжатие данных состояния сеансов. В NET 2.0 появилось новое пространство имен System.IO.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, и нового визуального конструктора, который делает проектирование содержимого Silverlight пустяковым делом.

Маршрутизация. В 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 и использовать вместо нее другой подход, обладающий как своими преимуществами, так и своими недостатками. Во многих отношениях они являются началом нового направления в области программирования веб-приложений. Если какой-то из них подходит для удовлетворения имеющихся потребностей, он может значительно сократить объем выполняемых работ.