oldi

<% ASP+ на блюдечке %>. Часть 1

Первое знакомство

Рубен Садоян

Введение

Что такое ASP+

Чем же ASP+ лучше

   Хранение состояния

   Серверные элементы управления

   Читабельность кода

   Конфигурация компонентов с помощью XML-файлов

   Декларативный подход к программированию

   Возможность отладки и обработки ошибок

   Улучшенные механизмы защиты

   Повышение производительности

   Компилируемость кода и модульность объектов

Программные модели ASP+

Довольно слов, ближе к делу…

Система доступа к базам данных

Объект DataGrid — расширение возможностей!

Введение

В первых статьях серии «<% ASP на блюдечке %>» мы ознакомились с ASP и рассмотрели все основные тонкости построения разнообразнейших Web-интерфейсов. Настала пора ознакомить читателей с обновленным ASP — ASP+.

Итак, настоящая статья предназначена для тех, кто хотел бы ознакомиться с ASP+ и попробовать создать собственную универсальную Web-систему доступа к базам данных с его помощью.

В начало

В начало

Что такое ASP+

ASP+ не просто очередная версия активных серверных страниц (Active Server Pages (ASP)), а унифицированная платформа для Web-разработки, обеспечивающая разработчиков всеми средствами, необходимыми для реализации Web-приложений корпоративного уровня. ASP+ — неотъемлемая составляющая этого нового решения от Microsoft, получившего название NGWS. Аббревиатура достаточно загадочна и носит весьма условный характер. Объясняется это тем, что Microsoft пока выпустила лишь первую бета-версию Visual Studio.NET (Beta 1), которая, по замыслу ее создателей, предназначена для знакомства разработчиков с новой технологией создания Web-приложений. Однако не следует забывать о том, что почти половина вложений Microsoft в развитие новых технологий в настоящее время приходится именно на долю группы разработки .NET, откуда явствует, что в недалеком будущем последует целый ряд продуктов этой серии.

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

В некоторых источниках NGWS расшифровывается как Next Generation Web Studio — Web-студия следующего поколения — по сути среда, в которой разработчики могут писать код на любом совместимом языке программирования, таком как Visual Basic, Managed Extensions for C++, C# (произносится как Си-Шарп) или JScript. Главной новостью является то, что, по сути, вся платформа NGWS во время выполнения приложения доступна для последнего. Кроме того, код компилируется. Разработчикам доступны такие механизмы, как управление во время работы (at runtime), «безопасность» синтаксического набора, наследование, инкапсуляция и полиморфизм.

ASP+ изначально задумывался и был разработан для интеграции с HTML-редакторами и со средствами разработки, выполненными в соответствии со спецификацией WYSIWYG, в частности с Microsoft Visual Studio 7.0. Это позволило обогатить средства, предоставляемые уже знакомым нам программным обеспечением, новыми возможностями, к примеру, разработкой оконного Web-интерфейса.

У читателей может возникнуть подозрение, что ASP+ попросту является очередной версией ASP, с некоторыми изменениями, дополнениями и т.д. Не стоит заблуждаться. ASP — это всего лишь надстройка над операционной системой, выполненная в виде динамически загружаемой библиотеки прикладного интерфейса ISAPI. ASP+ — многофункциональный модульный набор компонентов. Хотя в ASP+ все-таки предусмотрена некоторая синтаксическая совместимость с ASP, модель, в отличие от ASP, здесь куда более обширна, а измененная инфраструктура позволяет разрабатывать принципиально новые Web-приложения.

В начало

В начало

Чем же ASP+ лучше

Давайте ознакомимся с основными преимуществами ASP+ перед ASP.

В начало

В начало

Хранение состояния

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

В начало

В начало

Серверные элементы управления

В ASP+ реализован ряд серверных элементов управления, которые незаменимы при создании сложных HTML-документов. Элементы поддерживают код, управляющий их поведением во время выполнения. Эти серверные управляющие элементы — календарь, списки, специальные компоненты для работы с базами данных (так называемые Data-Aware Controls), таблицы и т.п., — включенные в .NET, дают представление о том, насколько расширятся возможности разработчиков при создании Web-страниц.

В начало

В начало

Читабельность кода

В ASP+ сделана явная попытка заинтриговать разработчиков, для которых более привычным языком программирования является C++. Для тех, кому C++ знаком, не нужно объяснять, почему он на сегодняшний день является самым гибким универсальным языком программирования. Языки описания сценариев, на которых пишутся активные серверные страницы (VBScript и JavaScript), далеко не самое удобное средство для разработчиков, особенно для тех, кому привычнее и удобнее «излагать свои мысли» на C++. Конечно, разработчик свободен в выборе языка описания. Но это еще не самое важное. В ASP+ окончательно достигнута возможность четкого разграничения кода и Web-форм (Web-страниц), что позволяет разработчикам с одинаковым успехом создавать и поддерживать как небольшие, так и очень крупные Web-проекты. Код инкапсулирован в серверных элементах управления, а новая методика обработки событий наконец-то дает возможность создавать страницы с разумной архитектурой.

В начало

В начало

Конфигурация компонентов с помощью XML-файлов

Компоненты ASP+ используют конфигурационные файлы XML. Это означает, что необходимость их регистрации на сервере с остановкой и перезапуском IIS отпадает, что несомненно «облегчит жизнь» тем Web-разработчикам, кто реализует «чужие» Web-приложения и кому администрирование IIS недоступно. Для развертывания Web-приложений достаточно скопировать файлы на сервер.

В начало

В начало

Декларативный подход к программированию

Наверняка большинство разработчиков со мной согласится, что декларативный подход имеет бесспорные преимущества по сравнению с функциональным. Это преимущество особенно заметно, если вы пользуетесь каким-либо визуальным ASP+-редактором, к примеру Visual Studio.NET. С помощью VS.NET вы можете «перетащить» небольшую иконку с изображением ASP+-компонента на Web-форму и задать необходимые этому компоненту свойства. Все остальное объектная модель ASP+ возьмет на себя. В качестве примера давайте сравним два фрагмента одного и того же кода, написанного на ASP:

<input type="text" name="firstname" value="<%= request("firstname") %">

и на ASP+:

<asp:Textbox id="firstname" maintainstate="true" runat="server" />

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

В начало

В начало

Возможность отладки и обработки ошибок

Отладка ASP-приложений всегда оставалась понятием весьма абстрактным. И на самом деле, о какой отладке может идти речь, когда зачастую самым информативным средством о допущенных на странице ошибках является старый добрый процессор Internet Explorer’а. В ASP+ же реализованы средства обработки ошибок, отладки и трассировки, позволяющие интегрально отлаживать Web-приложение вне зависимости от языков разработки отдельных модулей и компонентов. С NGWS SDK поставляется NGWS SDK Debugger, поддерживающий локальную отладку Web-приложений (Web-приложений на локальном сервере). Однако Microsoft обещает включить в комплект поставки Visual Studio 7.0 так называемый Visual Studio Debugger, который будет способен отлаживать в том числе и ASP+-код как на локальном, так и на удаленном сервере с возможностью автоматического подсоединения во время выполнения и редактирования кода непосредственно в процессе отладки создаваемого Web-приложения.

В начало

В начало

Улучшенные механизмы защиты

Средства защиты в ASP ограниченны. Ведь, по сути, аутентификация пользователя на странице может быть выполнена не иначе как с использованием средств аутентификации браузера. Эта вынужденная «заточка под браузер», с одной стороны, создает для разработчиков ряд неудобств, с другой — открывает ряд брешей. В ASP+ администраторам IIS и разработчикам доступны новые возможности аутентификации пользователей, где обычные HTML-формы преобразуются в специализированные страницы для регистрации.

В начало

В начало

Повышение производительности

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

В начало

В начало

Компилируемость кода и модульность объектов

Для повышения производительности ASP+ использует не только преимущества, введенные архитектурой среды NGWS. Еще одним фактором, благоприятно влияющим на увеличение производительности, является компилируемость. В ASP серверные страницы интерпретировались непосредственно перед загрузкой их клиентом, а в ASP+ они компилируются (технология так называемой JIT (Just In Time)-компиляции). Кроме того, ASP+ позволяет моделировать создаваемое приложение в зависимости от совокупности используемых объектов. Так, к примеру, можно отказаться от загрузки модуля объекта, если он не является необходимым при разработке Web-приложения.

В начало

В начало

Программные модели ASP+

В распоряжении разработчиков ASP+-приложений имеются три программные модели, которые он волен использовать как по отдельности, так и совместно:

  • модель Web Forms позволяет разработчикам реализовать оконно-основанные Web-страницы, использующие серверные компоненты управления для реализации типичных задач по организации интерфейса с пользователем, сбора и обработки введенных им значений и т.д. Серверные компоненты, в свою очередь, позволяют быстро строить приложения, использующие Web Form, за счет своей универсальности и наследуемости свойств и методов;
  • модель Web service предоставляет набор услуг по удаленному доступу к серверному функционалу. С помощью элементов модели Web service становятся возможными публикация разнообразнейших услуг собственным сервером и получение доступа к «чужим» услугам на «чужих» серверах. Взаимообмен услугами может проходить по сценарию как «клиент-сервер», так и «сервер-сервер». В заключение следует отметить независимость Web-услуг от какого-то конкретного компонента, технологии или концепции вызова, а следовательно, программы, написанной на любом языке и использующей любую компонентную модель;
  • модель Personal Tier (персональный уровень), по сути, предлагает перенести выполнение ASP-кода с сервера на клиент таким образом, как если бы выполнялся обычный клиентский DHTML-код. Следовательно, можно добиться частичной или полной разгрузки сервера за счет увеличения вычислительной нагрузки на клиента. Разработчики могут реализовать, к примеру, приложения, целиком выполняющиеся в браузере клиента.

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

В начало

В начало

Довольно слов, ближе к делу…

Давайте продолжим наше знакомство с ASP+ на примере: рассмотрим универсальную систему доступа к базам данных с возможностью выполнения запросов и получения результатов как в виде таблицы, так и в форме XML-файла. Не правда ли, полезная штука. Для ее написания будем использовать ASP+, ADO+ и C#. Для компиляции и выполнения приложения нам потребуется .NET Framework SDK, который лежит здесь .

Первое, что нам понадобится, это установить .NET Framework SDK, который, в свою очередь, требует наличия MSIE 5.5 и MSDAC 2.6.

Далее следует прописать MIME для файлов с расширением .aspx, для чего необходимо:

  1. Запустить Internet Services Manager (Start->Settings -> Control Panel -> Administrative Tools -> Internet Services Manager).
  2. В Internet Services Manager сделать активным ваш сервер и войти в режим редактирования его свойств (правая кнопка мыши -> Properties).
  3. В появившемся окне нажать на кнопку «Edit» в группе Computer MIME Map, а затем добавить новую запись в таблицу MIME-типов, воспользовавшись кнопкой «New Type», как показано на рисунке.

Теперь, когда наш IIS «научился» понимать файлы с расширением .aspx — то есть ASP+, можно приступать к созданию основной формы, посредством которой и будет реализован интерфейс к базам.

Настоятельно рекомендую не смешивать HTML-представления с кодом в одном файле по двум причинам:

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

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

В начало

В начало