Isapi что это
Перейти к содержимому

Isapi что это

ISAPI / NSAPI

Итак, что такое CGI? Что это такое, документацию, статьи вы можете найти в интернете. Для платформы WIN32 существует три вида CGI интерфейса, поддерживаемых Delphi.

  • ISAPI — Стандарт Internet Server API изначально был создан как Microsoft Information Server API, но в дольнейшем был предложен в качестве открытого стандарта.
  • NSAPI — Стандарт Netscape Server API используется для взаимодействия с серверами компании Netscape
  • CGI — Common Gateway Interface (стандартный интерфейс шлюза) был первой попыткой интеграции WWW-серверов и отдельных программ.
  • WinCGI — Windows вариант CGI

Поскольку компании Netscape приняла стандарт ISAPI, в данный момент реально существует единый формат для Internet Information Server (IIS) и серверов компании Netscape. Поэтому воспользуемся предоставляемым Delphi инструментарием для создания ISAPI DLL, которая будет отвечать на запросы клиентов.

Создание ISAPI библиотеки

Создание ISAPI DLL похоже на разработку любой стандартной DLL. Для этого необходимо загрузить Delphi, в меню File выбрать пункт New,

затем в диалоговом окне New Items выбрать пиктограмму Web Server Application и нажать кнопку OK. Появится диалоговое окно New Web Server Application.

Пункт ISAPI/NSAPI Dynamic Link Library выбран по умолчанию, поэтому нажимаем кнопку OK.

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

Если дважды щелкнуть мышкой на WebModule, появится Action Editor, предназначенное для создания и редактирования обработчиков событий ActionItem. Для создания ActionItem следует нажать кнопку Add New, при этом в окне Object Inspector отобразятся свойства и события созданного ActionItem.

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

Познакомимся с основными объектами и классами ISAPI поближе.

WebModule

WebModule — автоматически создаваемый модуль для приложений Web-сервера.

Когда новое Web приложение создано, оно автоматически содержит WebModule . Это дает возможность созданному Web приложению ответить на запрос HTTP, пропуская запрос и ответ к соответствующим обработчикам ActionItems . Приложение может содержать только один WebModule .

WebModule имеет два важных свойства Request и Response с которыми мы познакомимся немного позже, а также события:

OnCreate

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

OnDestroy

Происходит перед уничтожением WebModule . Используйте это событие для освобождения объектов, созданных динамически в приложении.

BeforeDispatch

Происходит перед тем, как диспетчер устанавливает соответствие запроса HTTP с каким-либо ActionItems . Используйте обработчик события BeforeDispatch для предварительной обработки HTTP запроса.

AfterDispatch

Происходит после того, как HTTP ответ был успешно сформирован ActionItems , но еще не передан клиенту. Используйте обработчик события AfterDispatch , например, для проверки сформированного HTTP ответа.

Request

Request — автоматически создаваемый объект WebModule .

Request представляет текущий HTTP запрос в удобной форме для обработки. Об отдельных свойствах этого компонента следует сказать особо.

ContentFields

Педоставляет содержимое полей POST запроса. Используйте ContentFields , чтобы читать содержимое полей запроса HTTP, при использовании метода POST.

QueryFields

Педоставляет параметры и их значение в случае передачи их запросом в URL документа. Используйте QueryFields , чтобы читать поля запроса HTTP, при использовании метода в котором параметры передаются в URL документа, например метод GET.

ContentFields и QueryFields возвращаю параметры передаваемые клиентом, это обьекты наследованные от класса TStrings , данные в них представлены в виде имя = значение.

Response

Response — также автоматически создаваемый объект WebModule.

Объект Response содержит информацию, которая будет передана клиенту, в результате обработки запроса. Заполнять Response необходимо вам. После того как все свойства будут заполнены, будет сформирован HTTP ответ, который и будет передан клиенту.

Среди свойств объекта Response следует обратить внимание на:

ContentType

Указывает тип содержимого HTTP ответа в соответствии со спецификацией MIME. Используйте ContentType , чтобы установить тип содержимого передаваемого клиенту, например, если вы передаете изображение в формате GIF, вы должны установить ContentType = ‘image/gif’ .

Content

Содержит информацию, передаваемую клиенту в ответ на сообщение запроса HTTP. Используюте Content , чтобы передать требуемую информацию клиенту.

ContentStream

Определяет Stream объект, который будет передан клиенту. Используйте ContentStream для передачи клиенту содержимого отличного от ContentType = ‘text/*’ , например при передаче бинарного файла. Если свойство ContentStream установлено, оно заменяет свойство Content .

Как это работает

В общем случае так. При выполнении HTTP запроса, веб сервер запускает на выполнение ваше ISAPI приложение.

Создается объект Application , порожденный от TISAPIApplication или TCGIApplication . TISAPIApplication и TCGIApplication в свою очеродь имеют общего предка TWebApplication и перекрывают все его виртуальные методы. Объект Application создается автоматически от нужного класса, в зависимости от того, какой тип (ISAPI или CGI) приложения Вы выбрали, об этом заботится визард Delphi.

Следующим автоматически создается объект WebModule , созданный от класса TWebModule , и генирируется событие TWebModule.OnCreate . Затем WebModule создает все обьекты ActionItems и генерирует событие TWebModule.BeforeDispatch . После обработки события BeforeDispatch назначается обьект ActionItem , котрый получает возможность обработать запрос. Обработку запроса и формирование ответа должны производить Вы, анализируя обьект Request и заполняя Response . Все это можно сделать на событии ActionItem.OnAction . В большинстве случаев, для того чтобы сформировать ответ необходимо заполнить свойство Content обьекта Response . После отработки собития OnAction обьекта (или обьектов) ActionItem происходит формирование HTTP ответа и генерируется событие TWebModule.AfterDispatch , затем ответ отсылается клиенту.

Следующим, последним, событием генерируется TWebModule.OnDestroy .

Внимание:В случае ISAPI приложения, объект WebModule может быть создан один раз и не создаваться при каждом запросе, следовательно не будут генерироваться события OnCreate и OnDestroy объекта WebModule.

ISAPI

Internet Server API, API для IIS Microsoft (Internet Information Server) веб-сервер. ISAPI позволяет программистам разрабатывать Web-приложения, которые работают намного быстрее, чем обычные программы CGI, потому что они более тесно интегрированы в веб-сервера. В дополнение к IIS, некоторые веб-серверы от компаний Microsoft, помимо поддержки ISAPI.

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

Isapi что это

Если Web-сервер создан на базе Microsoft Internet Information Server, вместо программ CGI можно использовать приложения ISAPI, реализованные в виде библиотек динамической загрузки DLL, что позволяет повысить производительность и масштабируемость. Приложения ISAPI условно делятся на расширения ISAPI и фильтры ISAPI.

Расширения ISAPI выполняют те же функции, что и программы CGI: обычно они применяются для обработки клиентских запросов и возвращения ответа в формате HTML.

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

результате увеличится время реакции сервера, что может оттолкнуть от него пользователей.

Для повышения производительности в некоторых Web-серверах (в частности, Microsoft Internet Information Server) используется другой способ создания расширений. Расширение создается как библиотека динамической загрузки DLL с использованием программного интерфейса ISAPI (Internet Server API).

Функционирование ISAPI-расширений

. 6.2. Функционирование ISAPI-расширений Когда такое расширение активизируется в первый раз, оно загружается в адресное пространство процесса 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-сервера.

Фильтры 18ЛР1, так же как и расширения 18ЛР1, реализованы в виде библиотек динамической загрузки БЬЬ и способны контролировать весь поток данных между браузером и Web-сервером на уровне протокола НТТР.

Функционирование ISAPI-фильтров

. 6.3. Функционирование ISAPI-фильтров

ISAPI-фильтры никогда не вызываются явно — IIS-сервер обращается к ним в ответ на определенные события в процессе выполнения запроса:

1. на завершение обработки сервером предоставленных клиентом заголовков;

2. на завершение сервером процедуры аутентификации клиента;

3. на сопоставление сервером логического URL-адреса физическому;

4. до начала пересылки "сырых" данных от клиента на сервер;

5. на завершение пересылки "сырых" данных от клиента, но до начала их обработки на сервере;

6. на регистрацию информации сервером в журнале;

7. на завершение сеанса.

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

ISAPI-расширения часто создаются с использованием ISAPI-классов библиотеки MFC (Microsoft Foundation Class Library). Это значительно упрощает разработку ISAPI-расширений.

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-страницу Пример:

. 6.4. Механизм обработки запроса на ASP-страницу Пример:

<TITLE>Hello ASP World</TITLE>

</HTML> Средствами технологии 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 является:

1. отсутствие гибкой, мощной и масштабируемой среды программирования.

2. необходимость размещать команды сценария в HTML. Кроме снижения производительности из-за смены контекста при каждом входе и выходе из раздела сценария, смешанный код в "сыром" HTML усложняет деление на представление и само приложение.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *