на начало
На главную страницу
Форум   

Статья :: Динамически подключаемая библиотека (DLL) расширения интерфейса прикладного программирования Internet-сервера (ISAPI)


Динамически подключаемая библиотека (DLL) расширения интерфейса прикладного программирования Internet-сервера (ISAPI)

В Solution Explorer (Поиск решения) откройте узел проекта ATLServerAppIsapi. Затем откройте файл ATLServerAppIsapi.def. Обратите внимание, что этот проект экспортирует три стандартные функции из динамически подключаемой библиотеки (DLL) расширения интерфейса прикладного программирования Internet-сервера (ISAPI). Вот эти функции.

  • HttpExtensionProc вызывается для каждого HTTP-запроса к расширению интерфейса прикладного программирования Internet-сервера (ISAPI).
  • GetExtensionVersion вызывается; когда расширение интерфейса прикладного программирования Internet-сервера (ISAPI) загружается информационным сервером Internet (IIS).
  • TerminateExtension вызывается, когда расширение интерфейса прикладного программирования Internet-сервера (ISAPI) выгружается информационным сервером Internet (IIS).

Кроме того, обратите внимание, что реализация каждой их этих функций находится в файле ATLServerAppIsapi.cpp. В каждом случае для работы с деталями просто используется объект theExtension. Типом данного объекта является ExtensionType, который определяется с помощью шаблона CIsapiExtension. Этот шаблон берет на себя всю скучную и вызывающую периодические ворчания работу, связанную с реализацией полнофункционального расширения интерфейса прикладного программирования Internet-сервера (ISAPI), в том числе и такие детали, как организация пула потоков и диспетчеризация запросов.

typedef CIsapiExtension <> ExtensionType;
// расширение ISAPI ATL Server ExtensionType theExtension;
// Делегировать экспорт ISAPI в theExtension
// extern "C"
DWORD WINAPI HttpExtensionProc (LPEXTENSION_CONTROL_
BLOCK IpECB)
{
return theExtension.HttpExtensionProc (IpECB}; }
extern "C"
BOOL WINAPI GetExtensionVersion (HSE_VERSION_INFO* pVer)
// ЛОГИЧЕСКИЙ МЕТОД
{
return theExtension.GetExtensionVersion (pVer); }
extern "C"
BOOL WINAPI TerminateExtension (DWORD dwFlags) // ЛОГИЧЕСКИЙ МЕТОД
{
return theExtension.TerminateExtension (dwFlags);
}

Структура EXTENSION_CONTROL_BLOCK, передаваемая в качестве параметра в показанную выше функцию HttpExtensionProc, содержит несколько примечательных членов. Самые важные члены этой структуры показаны в следующем определении типа. Конечно, проект ALTServerAppIsapi часто оставляют как он есть. И все же обратите внимание, что эту информацию об HTTP-запросе вполне можно использовать для выполнения нестандартной фильтрации.

typedef struct _EXTENSION_CONTROL_BLOCK {
HCONN ConnID; //in - уникальный номер от HTTP-сервера
DWORD dwHttpStatusCode; //out - состояние завершения
LPSTR IpszMethod; //in - требуемый метод
LPSTR IpszQueryString; //in - запрос информации
LPBYTE IpbData; //in - данные, посланные клиентом LPSTR IpszContentType; //in - совместимый тип данных
BOOL { WINAPI * WriteClient ) // записать ответ клиенту ( HCONN ConnID,
LPVOID Buffer, // Буфер LPDWORD IpdwBytes, DWORD dwReserved );
BOOL ( WINAPI * ReadClient ) // чтение запроса из HTTP ( HCONN ConnID, LPVOID IpvBuffer, LPDWORD IpdwSize );
} EXTENSION_CONTROL_BLOCK, *LPEXTENSION_CONTROL_BLOCK;


Динамически подключаемая библиотека (DLL) расширения интерфейса прикладного программирования Internet-сервера (ISAPI)

страницы в данном разделе 
Глава 12. Web-узлы и Web-службы, работающие на основе ATL Server Web-узлы и Web-службы, работающие на основе ATL Server
История технологий, работающих с динамическим содержимым Web Приложения на основе ATL Server
ATL Server основан на интерфейсе прикладного программирования Internet-сервера (ISAPI) Архитектура приложения, использующего ATL server
Создание проекта ATL Server Project (Проект на основе ATL Server) Динамически подключаемая библиотека (DLL) расширения интерфейса прикладного программирования Internet-сервера (ISAPI)
Динамически подключаемая библиотека (DLL) Web-приложения Создание и запуск проекта на основе ATL Server
Добавление в сервер еще одного обработчика Добавление на сервер обработки управляющей структуры if-else-endif
Добавление на сервер обработки управляющей структуры while-endwhile Передача параметров серверному обработчику
Поддержка состояния сеанса Получение доступа к переменным сервера
Обработка форм Службы сеанса
Создание проекта Web-службы на основе ATL Server (ATL Server Web Service Project) Код Web-службы на основе ATL Server: ATLServerWebService.h
Создание клиентской программы, обращающейся к Web-службе Добавление функций в Web-службу на основе ATL Server
Изменение клиентской программы, работающей с Web-службой Передача структур в качестве входных и выходных параметров
Резюме >  


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C



 
© faq.pp.ru, справочник программиста