Иллюстрированный самоучитель по Architecture .NET

ATL Server основан на интерфейсе прикладного программирования Internet-сервера (ISAPI). Архитектура приложения, использующего ATL server.

Чтобы разобраться в ATL Server, очень важно вначале хорошо разобраться в теоретических основах интерфейса прикладного программирования Internet-сервера (ISAPI). Динамически подключаемая библиотека (DLL) интерфейса прикладного программирования Internet-сервера (ISAPI DLL) используется для фильтрации клиентских HTTP-запросов на входе/выходе информационного сервера Internet US (фильтр интерфейса прикладного программирования Internet-сервера (ISAPI)) или для динамической генерации HTML-кода, отправляемого клиенту в ответ на его запрос (расширение интерфейса прикладного программирования Internet-сервера (ISAPI)). И фильтры, и расширения интерфейса прикладного программирования Internet-сервера (ISAPI) используются для того, чтобы изменить или расширить обычное поведение информационного сервера Internet (US).

Фильтры интерфейса прикладного программирования Internet-сервера (ISAPI) прекрасно подходят, в частности, для шифрования данных, мониторинга производительности и настройки системы опознавания. Что касается расширений интерфейса прикладного программирования Internet-сервера (ISAPI), то они прекрасно подходят для динамической генерации HTML-кода и для динамического преобразования в HTML-формат данных, не являющихся HTML-кодом – в частности, записей из базы данных. Например, расширение интерфейса прикладного программирования Internet-сервера (ISAPI) может отправлять запрос в базу данных и затем помещать полученные результаты в подходящим образом отформатированную HTML-страницу.

Архитектура приложения, использующего ATL server

Как и динамически подключаемые библиотеки (DLL) традиционных расширений интерфейса прикладного программирования Internet-сервера (ISAPI), динамически подключаемые библиотеки (DLL) расширений интерфейса прикладного программирования Internet-сервера (ISAPI) на основе библиотеки шаблонных классов ATL экспортируют функции GetExtensionVersion (получить версию расширения), HttpExtensionProc (процедура HTTP-расширения) и TerminateExtension (завершить расширение). Кроме того, следуя традиционной манере, информационный сервер Internet (IIS) создает для каждого HTTP-запроса структуру EXTENSION_CONTROL_BLOCK (управляющий блок расширения). Она в качестве параметра передается в HttpExtensionProc. Эта структура обеспечивает доступ как к информации HTTP-заголовка, так и к потокам данных. Доступ к тому и другому нужен для поддержки связи с HTTP-клиентом.

Главной точкой входа для расширения интерфейса прикладного программирования Internet-сервера (ISAPI) является функция HttpExtensionProc. Она автоматически вызывается информационным сервером Internet (IIS), если нужно обработать HTTP-запрос, который предназначен для расширения интерфейса прикладного программирования Internet-сервера (ISAPI) (ISAPI Extension). Для чтения клиентских данных и соответствующего реагирования HttpExtensionProc использует функции обратного вызова, предоставляемые параметром EXTENSION_CONTROL_BLOCK. На рис. 12.1 показана общая схема использования интерфейса прикладного программирования Internet-сервера (ISAPI) в Web-приложении, основанном на ATL Server.

Иллюстрированный самоучитель по Architecture .NET › Web-узлы и Web-службы, работающие на основе ATL Server › ATL Server основан на интерфейсе прикладного программирования Internet-сервера (ISAPI). Архитектура приложения, использующего ATL server.
Рис. 12.1. Архитектура приложения, основанного на ATL Server

На рис. 12.1 показана только одна динамически подключаемая библиотека (DLL) расширения интерфейса прикладного программирования Internet-сервера (ISAPI). Это сделано потому, что в каждом виртуальном каталоге-информационного сервера Internet (IIS) может быть только одна такая библиотека. Еще ла рисунке видно, что в виртуальном каталоге может быть несколько динамически подключаемых библиотек (DLL) Web-приложения и несколько .srf-файлов. И хотя код в динамически подключаемой библиотеке (DLL) расширения интерфейса прикладного программирования Internet-сервера (ISAPI) можно настраивать, все же это обычно делается в динамически подключаемых библиотеках (DLL) Web-приложений, потому что именно в этих библиотеках реализуются обработчики запросов.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.