Разработка ASP/COM+ Web приложений с использованием Team Developer v3.1

Сурен Бехари (Suren Behari), менеджер по программным продуктам

Оглавление

Введение

Популярность Web-приложений на основе технологии ASP (Active Server Pages) связана с тем, что эта технология очень проста в изучении, обеспечивает высокую производительность, масштабируемость и гибкость, и наконец, что немаловажно, полностью поддерживается компанией 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

Дополнительная информация


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=1146