Разработка ASP/COM+ Web приложений с использованием Team Developer v3.1
Сурен Бехари (Suren Behari)
менеджер по программным продуктам
Переведено БНТП по заказу Interface Ltd.
Введение
Популярность Web-приложений на основе технологии ASP (Active Server Page) связана с тем, что эта технология очень проста в изучении, обеспечивает высокую производительность, масштабируемость и гибкость, и наконец, что немаловажно, полностью поддерживается компанией Microsoft. По этой причине компания Gupta приняла решение, что в ее интересах обеспечить разработчиков способом создания Web-решений, которые основываются на этом весьма популярном серверном языке программирования сценариев.
Существует альтернативное Web-решение компании Gupta, известное как Web Extensions, основанное на использовании существующего SAL-интерфейса и бизнес-логики. В данном документе не обсуждается Web Extensions; более подробная информация об этом по адресу.
В настоящее время возможно построение и применение полностью масштабируемых COM-серверов при помощи мастера COM из продукта Team Developer. Теперь у разработчика есть возможность отладки COM-серверов, которые вызываются не клиентами Team Developer, такими как VB или ASP. Таким образом, используя версию 3.1 продукта Team Developer, разработчик может быстро приступить к построению решений на основе ASP/COM, сочетающих простоту ASP и производительность Team Developer. Данный официальный документ продемонстрирует подход к построению таких решений.
Общий обзор технологии ASP
ASP (Active Server Pages) – одна из наиболее широко используемых Web-технологий (по крайней мере на платформе Microsoft). Вам не придется просматривать слишком много Web-страниц, чтобы увидеть, что довольно большое их число заканчивается расширением .asp. Принципиальной причиной популярности ASP является то, что ASP позволяет разработчикам выполнять код, размещенный внутри web-страниц, используя понятный язык сценариев, такой как VBScript или Jscript (реализация JavaScript от компании Microsoft).
ASP – это не автономная технология. Это технология сценариев, исполняемых сервером, которая позволяет Вам генерировать динамичные интерактивные Web-страницы. При помощи ASP Вы можете получать информацию из HTTP запроса, посылать HTTP отклик назад Web-клиенту, сохранять пользовательскую информацию и определять возможности Web-клиента в области просмотра.
В простейшем случае ASP-страница – это типичный ASCII файл, которые содержит HTML и программный (VBScript или Jscript) коды, хотя в более сложных случаях решение на основе ASP может объединять web-приложения, содержащие HTML, Jscript/VBScript, SQL, ADO и COM/COM+ компоненты среди прочих.
Примечание: детальный обзор языков VBScript/Jscript не является целью данного Документа. Предполагается базовое знакомство с этими языками сценариев также, как и с основами форм HTML. Также предполагается знакомство с процессом создания и использования COM объектов в рамках продукта Team Developer. Более подробную информацию о последнем процессе можно найти в онлайновой документации на продукт Team Developer, примерах и других документах на Web-сайте.
IIS (Internet Information Server) – это Web-сервер производства компании Microsoft. Как правило, Web-серверы «подают» HTML-код браузерам (клиентам) по получении от них HTTP запросов. Когда IIS получает запрос на файл с расширением «.asp», он исполняет сценарии внутри этого файла, генерирует чистую HTML страницу и возвращает ее браузеру (клиенту), которые выдал запрос.
ASP поддерживает как Visual Basic Script, так и собственную реализацию JavaScript (Jscript), сделанную компанией Microsoft. Также существуют средства от третьих сторон, которые позволяют интегрировать другие популярные языки сценариев, такие как Perl, в решения ASP.
Для того, чтобы внедрение решений ASP было максимально простым, ASP содержит следующие 5 встроенных объектов:
- Объект Сервер дает разработчику возможность управлять ресурсами сервера. Одним из наиболее широко используемых методов, которые он поддерживает, является метод CreateObject( ), который позволяет создать экземпляр COM объекта.
- Объект Приложение хранит информацию и управляет ей на уровне приложения. Этот означает, что любая переменная объекта Приложение может быть использована во всех сессиях Web-приложения.
- Объект Сессия хранит информацию и управляет ей на уровне пользовательской сессии. Обычно это дает возможность Web-приложению запомнить информацию о конкретной пользовательской сессии.
- Объект Запрос позволяет собирать информацию, посылаемую через HTTP запрос.
- Объект Отклик позволяет послать информацию назад к клиенту по протоколу HTTP.
Теги ‘ ’ используются внутри ASP страницы для указания начала и конца сценария, который Web-сервер должен выполнить на сервере вместо простой передачи и возврата HTML.
Пример ASP страницы в данном случае является лучшей иллюстрацией. Листинг 2.1- это ASP страница, которая извлекает виды продукта и цены из таблицы PRODUCT базы данных ISLAND, используя для этого объект “ADO recordrset”.
Листинг 2.1 Извлечение видов продукта и цен и демонстрация их в виде HTML таблицы.
Сценарий, приведенный выше, может быть помещен в файл ‘ADODemo.asp’ на PC, где установлен IIS. Если его разместить в корневой папке WEB-сервера, то результаты исполнения можно увидеть, если в адресной строке браузера ввести URL http://localhost/ADODemo.asp.
Данный простой пример показывает, как ASP сценарий может быть размещен внутри HTML-кода для получения динамической страницы, содержимое которой зависит от содержимого таблицы базы данных; изменение данных в таблице будет отражено в HTML-коде, возвращаемом браузеру, сделавшему запрос. Если пользователь, сделавший запрос, захочет просмотреть исходный HTML-код, то он увидит НЕ сам ASP сценарий, а только HTML-код, который был сгенерирован в результате исполнения этого сценария. Таким образом, он увидит нечто похожее на то, что приведено на следующем листинге.
Листинг 2.2 HTML-код, сгенерированный вышеприведенным ASP сценарием
ASP и COM
ASP программирование, показанное выше, отлично подходит для относительно маленьких и простых web-страниц. Однако в реальных ситуациях решения, основанные целиком на сценариях, становятся слишком громоздкими. Не последнее место среди трудностей по сопровождению такого кода занимают весьма ограниченные возможности ASP по отладке.
По этой причине COM (Component Object Model фирмы Microsoft) очень хорошо подходит для решений на основе ASP. COM дает возможность использования решений типа «черного ящика»; пользователь COM-объекта должен знать только о его интерфейсах, методах и свойствах.
Основные причины для использования COM-компонентов совместно с ASP заключаются в следующем.
- Повторное использование: довольно сложно разместить ASP-сценарий так, чтобы его можно было повторно использовать на нескольких различных страницах. Компоненты дают возможность более эффективного управления и повторного использования определенной функциональности, например, доступа к данным.
- Безопасность: иногда важно сохранить исходные коды от потенциальных опасностей. Размещение их в COM компонентах поможет выполнить такое требование.
- Масштабируемость: COM компоненты сами по себе не обязательно должны находиться на том же компьютере, что и Web-сервер. Когда компания Microsoft выпустила технологию ASP, она также предложила и Microsoft Transaction Server (MTS), который обеспечивает управление транзакциями для приложений, построенных с применением COM технологии.
- Взаимодействие: в дополнение к предыдущему пункту существует возможность выходить за пределы объектных систем и получать доступ к объектам, которые относятся к другим стандартам, таким как CORBA; известны продукты третьих компаний, облегчающие это.
- Простота разработки: COM объекты можно создавать в рамках Team Developer, и, поступая таким образом, Вы защищаете свои ранее сделанные инвестиции. Кроме того, если Вы хоть однажды пытались отлаживать ASP-страницу, то Вы быстро оцените выгоды от возможности использования для этой цели своего любимого отладчика. Создавая COM объекты средствами Team Developer, Вы можете легко отлаживать их динамически, даже когда они вызываются из ASP-страницы. Таким образом, среда Team Developer эффективна и при разработке на основе технологии ASP.
Поэтому по причинам, названным выше, настоятельно рекомендуется, чтобы объекты COM были частью любого существенного Web-решения на основе ASP. Team Developer версии 3.1 отлично подходит любому разработчику, обладающему опытом использования языка SAL и основ COM.
Давайте рассмотрим еще одно простое ASP-решение, но на этот раз для получения требуемой нам функциональности мы используем COM-объект, написанный в Team Developer. Для максимального упрощения мы начнем с Web-страницы, содержащей HTML-форму (ASP_Add.htm) с двумя полями. После подтверждения эта форма вызовет ASP страницу (ASP_Add.asp). ASP-страница породит COM объект (ASP_COM.ASPTestObject), а уже из этого объекта будет вызван метод/функция AddStr(). Метод просто объединит любые значения, помещенные в два поля ввода и вернет результат.
На практике зачастую начальная HTML-форма и ASP-страница объединены, но в данном случае, материал упрощен насколько возможно с тем, чтобы подробно остановиться на процессе использования COM-объектов в ASP-сценарии. Позже будут рассмотрены обратные примеры с необходимостью использования отдельной HTML-страницы.
Листинг 3.1 HTML-страница, вызывающая ASP сценарий после подтверждения формы (ASP_Add.htm)
Листинг 3.2 ASP страница, вызванная после подтверждения формы, заданной выше (ASP_Add.asp)
Используя Team Developer 3.1, мы можем быстро создать CoClass и Интерфейс (ASPTestObject и IASPTestObject соответственно). К интерфейсу мы добавляем функцию/метод AddStr( ), SAL-код которой приведен ниже.
Листинг 3.3 COM-объект в Team Developer
Примечание: ВСЕ исходные файлы приводятся для пояснения данного документа.
Таким образом, для ЛЮБОГО источника/провайдера данных, у которого есть механизм доступа OLE DB, код Team Developer может обеспечить легко программируемый доступ, который будет знаком любому, у кого есть опыт работы с SAL/SQLWindows.
Вместо использования SqlConnect( ) для получения обработчика Sql для источника данных разработчику потребуется использовать вызовы SqlCreateSession( ) и SqlCreateStatement( ); а вместо использования вызова SqlDisconnect( ) для отключения от источника – вызов SqlFreeSession( ). Для большинства стандартных SQL операций все используемые Sql…( ) функции будут такими же, как и при непосредственном подключении (например, SqlPrepare( ), SqlExecute( ), SqlFetNext( ) и т.д.).
При таком простом переходе к использованию механизма OLE DB для доступа к любому источнику данных (помните, что источники данных могут быть не только реляционными базами данных) программист Team Developer может легко использовать OLE DB в составе Web-решений на основе ASP/COM. Простота, с которой это достигается, показана на ниже приведенном листинге. В данном примере для создания класса CoClass (OLE DB) с единственным Интерфейсом (IOLEDB) использован Мастер классов COM среды Team Developer. Интерфейс предоставляет 6 методов (Connect, Disconnect, NextProduct, Price, SelectProducts and Style).
Листинг 4.1 Методы Интерфейса IOLEDB (ASP_COM_OLEDB.app)
Метод Connect демонстрирует, насколько просто подключиться к источнику данных, используя OLE DB из состава Team Developer. В данном случае мы применяем механизм доступа SQLBaseOLEDB, но при изменении параметра строки подключения, передаваемого функции SqlCreateSession( … ) можно использовать любой другой механизм OLE DB. Следует упомянуть также метод Disconnect, вследствие использования в нем функции SqlFreeSession( … ). Кроме этих двух методов используемая функциональность должна быть сразу же понятна любому разработчику, знакомому с использованием Sql… функций в среде Team Developer/SQLWindows.
Листинг 4.2 Фактические переменные Интерфейса IOLEDB (ASP_COM_OLEDB.app)
В данном примере демонстрируется простота, с которой может быть вызван описанный выше COM-сервер.
Листинг 4.3 ASP страница, использующая COM сервер ASP_COM_OLEDB.OLEDB (ASP_OLEDB.asp)
Необходимо отметить, что разработчик может использовать объектную модель ADO напрямую из своего ASP-сценария, как это сделано в листинге 2.1, но при этом требует знакомства с подобной моделью данных. Пример, приведенный выше, показывает, насколько просто разработчик Team Developer может создавать ASP решения на основе OLEDB, используя уже существующие у него навыки.
Наконец, если разработчик действительно хочет использовать объектную модель ADO, ничто не мешает ему сделать это в рамках COM объекта, так как это позволит использовать преимущества инкапсуляции максимального объема логики в составе COM объектов, которые были описаны выше в разделе 3.
Для реального увеличения масштабируемости решений на основе ASP технологии компания Microsoft предоставляет инструмент/службу API для обеспечения управления компонентами и транзакциями, который называется Microsoft Transaction Server (MTS). MTS обеспечивает управление транзакциями для COM компонентов и является эффективным инструментом управления компонентами, который предоставляет механизм миграции сервера и клиента, а также службу регистрации компонентов. Дополнительную информацию о MTS можно найти в соответствующем официальном документе. Использование ASP и MTS существенно обогащается подключением OLE DB/ADO, которые обеспечивают общие средства доступа к данным независимо от их структуры.
Отладка COM+ и ASP
Использование Team Developer 3.1 делает возможным выполнять активную отладку COM-сервера, разработанного при помощи Team Developer, независимо от того, откуда он вызван. Таким образом, COM-сервер, написанный в Team Developer, вызванный из ASP или VB, может быть отлажен столь же просто, как и сервер, вызванный из другого клиента Team Developer.
Все, что нужно сделать для вызова режима отладки, — это открыть исходный код уже сформированного и зарегистрированного COM объекта, а затем вызвать команду меню Debug/Go (или использовать клавишу F7). Необходимо задать точку останова в подходящем месте в любой из функций Интерфейса, после чего вернуться в клиентское приложение, которое будет использовать этот COM объект, и запустить его; если это ASP сценарий, вызвать его, используя http в браузере.
Если клиентское приложение вызовет метод сервера, в котором задана точка останова, то, вернувшись в Team Developer, разработчик может пошагово пройти SAL-код, имея доступ ко всем существующим средствам отладки. Основной момент, о котором следует помнить, это то, что для проведения отладки необходим предварительный запуск сервера (Debug / Go или F7); про этот шаг часто забывают.
- Team Developer 3.1
- Microsoft Internet Information Server
За дополнительной информацией обращайтесь в компанию Interface Ltd.
Серверные сценарии. ASP, PHP, JSP, . (на выбор)
Сценарии, предназначенные для выполнения на стороне сервера, обычно располагаются в специальном каталоге внутри папки сайта. Принимая запрос пользователя, в котором указана программа, сервер запускает эту программу на выполнение. В результате выполнения программы выходные данные передаются web-серверу, а затем клиенту. Для написания сценариев, работающих на стороне сервера, обычно используются такие технологии, как Perl, ASP, ColdFusion, PHP, JSP и SSI.
В разделе «Пассивные и активные Web-серверы» четвертой главы этой книги, а также в своей книге [1], посвященной разработке Web-приложений для Microsoft Windows, мы подробно описали взаимодействие между браузером посетителя и Web-сервером в процессе просмотра страниц HTML. Напомним вкратце, как осуществляется такое взаимодействие для обычных статических страниц HTML.
Когда посетитель направляет свой браузер по тому или иному адресу URL, этот запрос передается Web-серверу с использованием протокола передачи гипертекстовых данных HTTP. Получив запрос, Web-сервер находит в своих каталогах файл нужной страницы HTML и отправляет его браузеру посетителя (рис. 4-1). В результате посетитель видит содержимое запрошенной страницы в окне браузера.
В этом случае Web-сервер посылает посетителю содержимое статической страницы в неизменном виде. Поэтому данная технология позволяет создавать только статические Web-узлы.
Программы CGI позволяют формировать страницы HTML динамически, создавая их посредством прямого вывода кода HTML в браузер посетителя непосредственно из программы (рис. 4-2). Как мы говорили в 5 главе нашей книги, технология шаблонов позволяет отделить дизайн динамической страницы от исходного текста программы CGI, формирующего эту страницу.
Что же касается серверных сценариев PHP, то они встраиваются непосредственно в текст документа HTML с помощью специальных тегов. Получив от браузера запрос на отображение страницы, Web-сервер находит в ней серверные сценарии PHP и выполняет их как интерпретируемый программный код.
Перед отправкой страницы HTML посетителю этот код может вставлять в нее произвольные символы или фрагменты или полностью формировать динамические страницы «с нуля» (в том числе с применением шаблонов), а также выполнять переадресацию браузера посетителя на другой адрес URL.
В дальнейшем мы будем называть Web-приложения, созданные с использованием сценариев PHP, приложениями PHP или PHP-приложениями.
Заметим, что по принципу своего действия сценарии PHP аналогичны сценариям активных серверных страниц Active ServerPages (ASP), разработанных компанией Microsoft для своего Web-сервера Microsoft Internet Information Server (IIS). Подробно мы рассказывали об использовании сценариев ASP в [1].
Помимо отличий в языках программирования, применяемых в PHP и ASP, между этими технологиями имеется и более существенное отличие. В частности, используя модель компонентного объекта Component Object Model (COM), сценарии ASP могут обращаться к серверным элементам управления ActiveX. В составе Web-сервера Microsoft IIS имеется готовый набор таких элементов, о чем мы подробно говорили в [1]. При необходимости Вы можете создавать собственные элементы управления ActiveX, расширяя этот набор.
В отличие от сценариев ASP, сценариям PHP доступны только функции, включенные в интерпретатор PHP на этапе трансляции и компоновки загрузочного модуля интерпретатора. К счастью, имеющегося в PHP набора функций в большинстве случаев оказывается достаточно для создания сложных Web-приложений, интегрированных с базами данных, почтовыми серверами и другими службами.
Тем не менее, при необходимости Вы можете включать в интерпретатор PHP и собственные функции, пользуясь его исходными текстами. Эта возможность, однако, требует высокой квалификации и должна использоваться только при крайней необходимости.
Ajax. Объект XMLHttp
AJAX означает » Asynchronous JavaScript and XML «, т.е. Асинхронный JavaScript и XML. В действительности AJAX состоит из JavaScript, как и любое другое приложение, и соединения XMLHTTP с Web-сервером. Вот и все! Общая идея заключается в том, что можно извлекать с сервера данные просто по мере необходимости, не обновляя всю страницу.
Прежде всего AJAX почти всегда опирается на серверный язык, такой, как PHP или ASP. Когда пользователю необходимо получить новые данные, JavaScript запрашивает их, а сервер, вероятно, запросит базу данных и затем вернет данные. Эти данные можно вернуть в различной форме. Если они структурированы, то это будут обычно данные XML или JSON. Если это очень простые данные (такие, как получение описания какого-то объекта), то можно часто увидеть людей, которые просто записывают эти данные непосредственно в ответ AJAX.
Объект XMLHttpRequest (или, сокращенно, XHR) дает возможность браузеру делать HTTP-запросы к серверу без перезагрузки страницы.
Несмотря на слово XML в названии, XMLHttpRequest может работать с данными в любом текстовом формате, и даже бинарными данными. Использовать его очень просто.
Объект XMLHttpRequest имеет ряд свойств, которые позволяют проконтролировать выполнение запроса:
status: содержит статусный код ответа HTTP, который пришел от сервера. С помощью статусного кода можно судить об успешности запроса или об ошибках, которые могли бы возникнуть при его выполнении. Например, статусный код 200 указывает на то, что запрос прошел успешно. Код 403 говорит о необходимости авторизации для выполнения запроса, а код 404 сообщает, что ресурс не найден и так далее.
statusText: возвращает текст статуса ответа, например, «200 OK»
responseType: возвращает тип ответа. Есть следующие типы:
response: возвращает ответ сервера
responseText: возвращает текст ответа сервера
responseXML: возвращает xml, если ответ от сервера в формате xml
Например, выполним запрос к текстовому файлу, который находится на лока
Хотя синхронные запросы вполне работают и их можно использовать, но в то же время их рекомендуется избегать. Поскольку нередко запрос может занять продолжительное время, то это может заблокировать выполнение остального кода и работу с html-страницей до окончания выполнения запроса. Поэтому рекомендуется использовать преимущественно асинхронные запросы.
Работа с асинхронными запросами чуть более сложна, чем с синхронными, поскольку нам надо еще обработать событие readystatechange объекта XMLHttpRequest.
При асинхронном запросе объект XMLHttpRequest использует свойство readyState для хранения состояния запроса. Состояние запроса представляет собой число:
0: объект XMLHttpRequest создан, но метод open() еще не был вызван для инициализации объекта
1: метод open() был вызван, но запрос еще не был отправлен методом send()
2: запрос был отправлен, заголовки и статус ответа получены и готовы к использованию
3: ответ получен от сервера
4: выполнение запроса полностью завершено (даже если получен код ошибки, например, 404)
Ajax. GET запросы
Метод get осуществляет GET-запрос к серверу, то есть все данные запроса передаются в строке запроса. Он принимает следующие параметры:
url: обязательный параметр, содержащий адрес ресурса, к которому будет обращаться запрос
data: необязательный параметр, содержащий простой объект javascript или строку, которые будут отправлены на сервер вместе с запросом
success(data, textStatus, jqXHR): необязательный параметр — функция обратного вызова, которая будет выполняться при успешном выполнении запроса. Она может принимать три параметра: data — данные, полученные с сервера, textStatus — — статус запроса и jqXHR — специальный объект jQuery, который представляет расширенный вариант объекта XMLHttpRequest.
dataType: необязательный параметр, содержащий тип данных в виде строки, например, «xml» или «json»
На выходе метод get возвращает объект jqXHR, который будет инкапсулировать данные запроса. Позднее мы подробнее разберем этот объект.
Итак, перепишем пример из предыдущего параграфа с использованием метода get:
Здесь использованы два первых параметра: адрес ресурса и функция обратного вызова. В этой функции в качестве параметра data мы получаем принятые от сервера данные и загружаем их в качестве разметки в элемент выборки ($(‘#news’).html(data);). По сути то же самой мы могли бы сделать с помощью метода load.
Используя параметр data, мы можем отправить дополнительные данные. Например, можно отправить запрос на получение элемента из базы данных по id:
А поскольку в GET-запросе все данные передаются в строке запроса, то данный код будет аналогичен следующему:
Соответственно на стороне сервера мы сможем получить этот параметр и произвести с ним какие-либо действия, например, получить элемент из бд по данному id:
Использование типа данных
Нередко возникает такая ситуация, когда сервер отправляет данные в определенном формате, например, json или xml. Так, php-файл на стороне сервера мог бы выглядеть следующим образом:
«Начало чемпионата России»,»date»=>»13.07.2013″));
В данном случае он возвращает объект json. Тогда на клиентской стороне мы можем явно прописать тип данных, а в функции обработать принятые данные:
«+data.event+»
«+data.date+»
Ajax. POST запросы.
В отличие от GET-запросов данные POST-запросов передаются не в строке запроса, а в его теле. Распространенным примеров подобных запросов является отправка данных формы на сервер.
Для отправки POST-запросов предназначен метод post. Его объявление и использование в целом аналогично методу get. Он принимает следующие параметры:
url: обязательный параметр, содержащий адрес ресурса, к которому будет обращаться запрос
data: необязательный параметр, содержащий простой объект javascript или строку, которые будут отправлены на сервер вместе с запросом
success(data, textStatus, jqXHR): необязательный параметр — функция обратного вызова, которая будет выполняться при успешном выполнении запроса. Она может принимать три параметра: data — данные, полученные с сервера, textStatus — — статус запроса и jqXHR — специальный объект jQuery, который представляет расширенный вариант объекта XMLHttpRequest.
dataType: необязательный параметр, содержащий тип данных в виде строки, например, «xml» или «json»
На выходе метод post возвращает объект jqXHR.
1 2 3 4 | $.post(‘ajax.php’, <'login':'1111', 'password' : '2222'>, function(data) < $('#news').html(data); >); |
В данном случае мы передаем в качестве данных пароль и логин. На сервере мы можем получить данные и отправить ответ пользователю:
1 2 3 4 5 6 7 8 9 10 |
Итак, серверная часть, к которой будет обращаться форма — файл ajax.php — у нас остается той же. Только в данном случае теперь для параметра data в методе post мы данные берем из полей на этой форме.
Обратите внимание, что мы блокируем обычную отправку формы (event.preventDefault();), иначе у нас бы шла переадресация.
Сериализация формы
Посколкьу нередко формы не ограничиваются двумя полями, то проще применять сериализацию формы. Сериализация производится посредством метода serialize и в качестве результата создает объект javascript, где свойствам соответствуют поля формы. И значения хранят эти свойства те же, что имеют соответственные поля формы.
Итак, применим сеиализацию формы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
AutoEventWireup | Автоматическая обработка событий страницы |
Buffer | Управляет буферизацией страницы. По умолчанию буферизуется |
ClassName | Позволяет назначать имя класса, сгенерированного данной страницей |
CodeFile | Название файла с отделенным кодом для данной страницы |
Culture | Устанавливает набор региональных параметров, т.е. язык, формат валюты, даты, чисел |
Debug | Если true, на страницу выводится отладочная информация |
Trace | Вывод трассировочной информации |
EnableViewState | Сохранение состояния страницы. По умолчанию она сохраняется |
EnableTheming | Позволяет включить или выключить поддержку тем оформления. По умолчанию включено |
Inherits | Класс, от которого наследуется класс данной страницы в технологии отделенного кода |
IsAsync | Показывает, обрабатывается ли страница асинхронно. |
Language | Язык, используемый во внедренном коде |
WarningLevel | Наибольший допустимый уровень предупреждений компилятора |
CompilerOptions | Опции компилятора |
Кроме директивы @ Page, в текст можно включить другие директивы, которые содержат дополнительные параметры, специфичные для страницы.
Для понимания сути основных технологических решений рассмотрим последовательно создание страницы ASP.NET, которая будет содержать текстовое поле для ввода имени и кнопку, событие нажатия на которую будет обрабатываться на сервере. Обработка будет состоять в выводе сообщения с использованием введенного имени.
Примечание! Для лучшего понимания сущности описываемых процессов действия по созданию файлов рекомендуется выполнять в простом редакторе (например, Блокнот).
Возьмем за основу такую статическую страницу:
Добавить простой серверный сценарий в ASP.NET
Мне нужно простое серверное решение для сценариев для решения следующей проблемы: Мой клиент заставляет меня делать сайт в ASP.NET MVC. Я пишу весь сайт, но есть раздел, который они хотят расширить позже с помощью простых сценариев. Например:
Когда у вас день рождения?
__ / __ / ____ [x] Не показывать год
Для этого необходимо указать заголовок (когда у вас день рождения?), Дату, способ указать, что флажок необходим, и текст для флажка. Это все простая разметка. Последняя потребность зависит от того, показывать или нет год рождения. При отображении этой информации позже.
Я решил использовать JavaScript в качестве языка сценариев и просто запустить его на стороне клиента. Хотя это работает для приведенного выше тривиального примера, часть реальной информации слишком чувствительна, чтобы ее можно было легко увидеть, как это можно сделать в JavaScript. Я бы предпочел, чтобы все данные обрабатывались на стороне сервера.
Способы организации активных web-серверов
ISAPI
Если Web- сервер создан на базе Microsoft Internet Information Server , вместо программ CGI можно использовать приложения ISAPI , реализованные в виде библиотек динамической загрузки DLL , что позволяет повысить производительность и масштабируемость . Приложения ISAPI условно делятся на расширения ISAPI и фильтры ISAPI .
Расширения ISAPI
Расширения ISAPI выполняют те же функции, что и программы CGI : обычно они применяются для обработки клиентских запросов и возвращения ответа в формате HTML.
Каждый раз, когда удаленный пользователь обращается к расширению CGI , на сервере Web запускается программа, которая выполняется как отдельный процесс, причем в собственном адресном пространстве. На запуск процесса требуется время, и если ваш сервер пользуется популярностью, то программы CGI могут полностью его загрузить. В результате увеличится время реакции сервера, что может оттолкнуть от него пользователей.
Для повышения производительности в некоторых Web-серверах (в частности, Microsoft Internet Information Server) используется другой способ создания расширений. Расширение создается как библиотека динамической загрузки DLL с использованием программного интерфейса ISAPI ( Internet Server API).
Когда такое расширение активизируется в первый раз, оно загружается в адресное пространство процесса Web-сервера и начинает свою работу. В памяти всегда находится только одна копия соответствующей библиотеки DLL, поэтому при одновременном обращении к расширению ISAPI нескольких пользователей системные ресурсы расходуются более экономно, и, кроме того, не тратится время на дополнительные загрузки расширения.
Программирование приложений ISAPI представляет собой более сложную задачу, нежели создание программ CGI . Поскольку такие приложения всегда работают в мультизадачном режиме, необходимо обеспечить синхронизацию доступа к критичным ресурсам. Ошибки в приложениях ISAPI могут привести к аварийной остановке сервера Web, а вот при использовании программ CGI это маловероятно.
ISAPI -расширения явно указываются в URL-адресе, отправляемом на IIS-сервер: Например: http://localhost/sayhelloisapi/sayhelloisapi.dll
ISAPI -расширение можно вызывать с параметрами, которые позволят одному компоненту выполнять разные задачи.
Сервер IIS версии 4.0 и старше позволяет загружать программы ISAPI в отдельное адресное пространство . Эта возможность, замедляющая работу сервера, обычно используется для отладки новых программ. Аварийное завершение программы ISAPI , загруженной в отдельное адресное пространство не приводит к полной остановке Web-сервера.
В результате расширения ISAPI работают быстрее по сравнению с программами CGI , поскольку для программ CGI для каждого пользователя приходится запускать отдельный процесс.
Однако приложения ISAPI приходится отлаживать намного тщательнее, чем программы CGI . Так как приложение ISAPI работает в адресном пространстве Web-сервера, ошибка в приложении ISAPI способна вызвать аварийное завершение работы Web-сервера.
Фильтры ISAPI
Фильтры ISAPI , так же как и расширения ISAPI , реализованы в виде библиотек динамической загрузки DLL и способны контролировать весь поток данных между браузером и Web-сервером на уровне протокола HTTP.
ISAPI -фильтры никогда не вызываются явно — IIS-сервер обращается к ним в ответ на определенные события в процессе выполнения запроса:
- на завершение обработки сервером предоставленных клиентом заголовков;
- на завершение сервером процедуры аутентификации клиента;
- на сопоставление сервером логического URL-адреса физическому;
- до начала пересылки «сырых» данных от клиента на сервер;
- на завершение пересылки «сырых» данных от клиента, но до начала их обработки на сервере;
- на регистрацию информации сервером в журнале;
- на завершение сеанса.
Благодаря этому их можно применять для решения таких задач, как динамическая перекодировка и шифрование данных , создание дополнительных процедур аутентификации пользователей , сбор статистической информации об использовании ресурсов сервера и т. д.
ISAPI -расширения часто создаются с использованием ISAPI -классов библиотеки MFC (Microsoft Foundation Class Library ). Это значительно упрощает разработку ISAPI -расширений.
Активные страницы ASP
Active Server Pages ( ASP ) — это серверная среда для разработки и выполнения динамических интерактивных веб-приложений .
Технология ASP предполагает интенсивное использование серверных сценариев и объектов СОМ для создания активных Web-серверов.
Языки программирования, используются для создания больших и сложных программных комплексов. Языки написания сценариев используются для создания программ ограниченных возможностей, называемых сценариями, которые выполняют функции web-узла на web-сервере или в браузере. В отличие от сложных языков программирования, языки написания сценариев интерпретируются: инструкции последовательно выполняются промежуточной программой, называемой интерпретатором команд . Хотя интерпретация уменьшает эффективность выполнения, языки написания сценариев просты для изучения и обеспечивают большие возможности. Сценарии могут быть встроены в HTML -страницы для форматирования содержимого или могут реализовывать компоненты COM , заключающие в себе бизнес-логику.
Файл Active Server Pages ( ASP ) представляет собой текстовый файл с расширением «. asp «. Этот файл может содержать текстовые данные, тэги языка HTML и серверные сценарии.
Обработка этого файла происходит последовательно, от начала и до конца, при этом выполняются все содержащиеся в нем команды сценария, после чего файл отправляется на обозреватель в виде веб-страницы.
Когда пользователь обращается к странице ASP , Web- сервер вызывает веб-сервер расширение ASP для обработки указанного в запросе файла, которое интерпретирует расположенный в ней сценарий . При этом анализируются параметры, переданные этой странице. Далее страница модифицируется (или создается заново), а затем отправляется обратно пользователю.
В ASP отсутствует ориентация на конкретный язык программирования , поэтому знакомства с любым языком сценариев ( VBScript , JScript или PERL) будет достаточно для того, чтобы работать с Active Server Pages. Более того, на страницах ASP допускается использование любого языка сценариев, для которого был установлен COM -совместимый обработчик сценариев. Обработчик сценариев — это программа , которая обрабатывает команды, записанные на определенном языке. В состав ASP входят обработчики сценариев VBScript и JScript , но имеется дополнительная возможность установки обработчиков для языков PERL, REXX и Python , которые могут быть получены от независимых разработчиков. Обработчик сценариев представляет собой расширение ISAPI , которое физически является динамически подключаемой библиотекой ASP.DLL . ASP.DLL просматривает файлы .asp на предмет наличия тэгов, обозначающих внедренный код для выполнения на сервере. ASP.DLL передает код сценария в Windows Script Host (WSH). WSH выполняет этот код и возвращает ответ файлу ASP.DLL , который, в свою очередь , передает IIS результат выполнения сценария и содержимое самого файла ASP . IIS возвращает ответ программному обеспечению, от которого поступил запрос .
Средствами технологии ASP можно создавать интерактивные Web-страницы, не используя расширения CGI или ISAPI , что позволяет в ряде случаев полностью избежать или максимально сократить программирование на C++ или Perl. Активные страницы ASP выполняют обработку данных, введенных пользователями при помощи форм, обращаясь при необходимости к базам данных или другим активным объектам .
Пользователь не может каким-либо образом получить содержимое страницы ASP , так как Web- сервер отправляет ему не саму страницу, а результат ее интерпретации. Таким образом, логика работы страницы скрыта от пользователей.
ASP поддерживает технологию работы со сценариями Windows Script Components. Она позволяет поместить все сценарные процедуры, выполняющие бизнес-логику, в COM -компоненты. Эти компоненты допускают повторное использование, и могут работать как в web-приложениях, так и в других программах, построенных по технологии COM .
ASP поддерживает новую служебную программу шифрования сценариев, поставляемую с MicrosoftVisual Basic Scripting Edition ( VBScript ) и Microsoft® JScript 5.0. Имеется возможность шифровать как клиентские, так и серверные сценарии, в результате чего тексты сценариев будут отображаться бессмысленной последовательностью ASCII-символов. Зашифрованные сценарии расшифровываются обработчиком сценариев во время их выполнения, поэтому нет необходимости в использовании отдельной программы расшифровки. Несмотря на то, что это не является полностью безопасным решением, технология не позволяет большинству обычных пользователей скопировать или просмотреть сценарий .
Серверный сценарий , встроенный в страницу ASP , способен обращаться к базам данных через вызов методов интерфейса ActiveX Data Objects ( ADO ) — простую и понятную процедуру. Если возникнет необходимость реализовать собственную бизнес-логику, имеется возможность создания новых объектов СОМ или использования объектов СОМ сторонних разработчиков.
Asp простые сценарии
В этом разделе приводятся пошаговые руководства, вводящие в концепцию веб-разработки в ASP.NET. Эти пошаговые руководства также описывают возможности веб-разработки в Visual Studio 2010 and Visual Web Developer 2010, экспресс-выпуск (обозначаются термином Visual Studio).
В дополнение к этим пошаговым руководствам большинство разделов в документации Visual Studio включают примеры, иллюстрирующие ключевые возможности.
В этом разделе содержатся следующие подразделы.
В следующей таблице приведены пошаговые руководства, дающие вводные сведения по ASP.NET и Visual Studio, которые будут полезны в частности тем, кто ранее не занимался разработкой в ASP.NET.
Предоставляет общие сведения о факторах, которые следует учитывать при разработке веб-узла. Раздел содержит ссылки на разделы, содержащие дополнительные сведения об отдельных предметах.
Использование Visual Studio для создания веб-сайта ASP.NET, содержащего простую страницу. С помощью этого руководства можно изучить процесс создания нового проекта веб-сайта ASP.NET, порядок планирования проектов, добавления страниц и тестирования веб-сайта.
Показывает использование редактора кода. Некоторые из функций редактора кода зависят от используемого языка программирования. Таким образом, в данном пошаговом руководстве создаются две страницы, одна с помощью Visual Basic, а другая с помощью C#.
Показывает процесс создания веб-страниц в Visual Studio. Оно поможет создать простую страницу, проиллюстрирует базовые методы создания новой страницы, добавления элементов управления и написания кода.
Показывает процесс добавления разметки на страницу с помощью фрагментов кода. Можно использовать фрагменты кода HTML в Visual Studio для экономии времени и сокращения объема вводимого кода.
Показывает использование элементов управления проверки ASP.NET для выполнения автоматической проверки пользовательского ввода на веб-странице.
Показывает использование кэширования выходного потока с применением предварительно обработанной копии страницы вместо повторной обработки страницы при каждом запросе.
Показывает кэширование данных приложения в приложении ASP.NET. Использует API кэширования, доступный в пространстве имен System.Runtime.Caching .
Отладчик Visual Studio помогает обнаружить ошибки в коде. Трассировка ASP.NET позволяет отображать этапы обработки, возникающие при выполнении страницы.
Примечание |
---|
Примечание |
---|