Поделиться через


Сравнение уведомлений Native-Code и Managed-Code

Хотя интегрированный конвейер обработки запросов в ядре веб-сервера IIS 7 позволяет разработчикам машинного кода писать http-модули на C++, уведомления о событиях, доступные разработчикам машинного и управляемого кода, не идентичны. Разработчикам, которые переносят модуль HTTP с управляемого языка, такого как C#, на машинный код, придется устранить эти различия при создании новых модулей.

Глобальные уведомления

С помощью IIS 7 разработчики теперь могут создавать HTTP-модули с собственным кодом, обрабатывающие уведомления на глобальном уровне. В предыдущих версиях IIS разработчики могли создавать HTTP-модули, обрабатывающие уведомления только на уровне запроса. Модули HTTP, обрабатывающие уведомления на глобальном уровне, используются для обработки уведомлений для различных событий уровня сервера.

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

Метод уведомления о событиях Описание
OnGlobalApplicationResolveModules Вызывается, когда СЛУЖБЫ IIS разрешают зарегистрированные модули.
OnGlobalApplicationStart Вызывается при запуске приложения iis.
OnGlobalApplicationStop Вызывается при выходе iis из приложения.
OnGlobalCacheCleanup Вызывается, когда службы IIS очищают кэш.
OnGlobalCacheOperation Вызывается, когда СЛУЖБЫ IIS выполняют операцию, связанную с кэшем.
OnGlobalConfigurationChange Вызывается при изменении файла конфигурации.
OnGlobalCustomNotification Вызывается, когда модуль создает определяемое пользователем уведомление.
OnGlobalFileChange Вызывается при изменении файла на веб-сайте.
OnGlobalHealthCheck Вызывается при выполнении операции, связанной со работоспособностью.
OnGlobalPreBeginRequest Вызывается перед поступлением запроса в интегрированный конвейер обработки запросов.
OnGlobalRSCAQuery Вызывается при выполнении запроса состояния Run-Time и элемента управления.
OnGlobalStopListening Вызывается, когда СЛУЖБЫ IIS перестают принимать новые запросы.
OnGlobalThreadCleanup Вызывается, когда СЛУЖБЫ IIS возвращают поток в пул потоков.
OnGlobalTraceEvent Вызывается при возникновении события трассировки.

Сравнение уведомлений о запросах

Хотя методы уведомления о запросах для модулей HTTP в машинном и управляемом коде во многом похожи, они не полностью аналогичны. Например, список детерминированных методов уведомления о запросах практически идентичен для модулей машинного и управляемого кода, но список недетерминированных методов уведомления о запросах сильно отличается.

Уведомления Native-Code детерминированных запросов

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

Метод уведомления о событиях Метод уведомления о событиях после события
OnBeginRequest OnPostBeginRequest
OnAuthenticateRequest OnPostAuthenticateRequest
OnAuthorizeRequest OnPostAuthorizeRequest
OnResolveRequestCache OnPostResolveRequestCache
OnMapRequestHandler OnPostMapRequestHandler
OnAcquireRequestState OnPostAcquireRequestState
OnPreExecuteRequestHandler OnPostPreExecuteRequestHandler
OnExecuteRequestHandler OnPostExecuteRequestHandler
OnReleaseRequestState OnPostReleaseRequestState
OnUpdateRequestCache OnPostUpdateRequestCache
OnLogRequest OnPostLogRequest
OnEndRequest OnPostEndRequest

Уведомления Managed-Code детерминированных запросов

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

Метод уведомления о событиях Метод уведомления о событиях после события
BeginRequest (нет)
AuthenticateRequest PostAuthenticateRequest
AuthorizeRequest PostAuthorizeRequest
ResolveRequestCache PostResolveRequestCache
MapRequestHandler PostMapRequestHandler
AcquireRequestState PostAcquireRequestState
PreRequestHandlerExecute (нет)
RequestHandlerExecute PostRequestHandlerExecute
ReleaseRequestState PostReleaseRequestState
UpdateRequestCache PostUpdateRequestCache
LogRequest PostLogRequest
EndRequest (нет)

Native-Code недетерминированные уведомления о запросах

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

Метод уведомления о событиях Метод уведомления о событиях после события
OnAsyncCompletion (нет)
OnCustomRequestNotification (нет)
OnMapPath (нет)
OnReadEntity (нет)
OnSendResponse (нет)

Managed-Code недетерминированные уведомления о запросах

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

Метод уведомления о событиях Метод уведомления о событиях после события
PreSendRequestHeaders (нет)
PreSendRequestContent (нет)

См. также:

Создание Native-Code http-модулей
Проектирование Native-Code http-модулей