Introdução às arquiteturas do IIS
pela equipe do IIS, Reagan Templin
Compatibilidade
Versão | Observações |
---|---|
IIS 7.0 e posteriores | Os recursos descritos nesse artigo foram introduzidos no IIS 7.0. |
IIS 6.0 e versões anteriores | Os recursos descritos nesse artigo não tinham suporte antes do IIS 7.0. |
Introdução
O IIS (Serviços de Informações da Internet) 7 e posteriores fornecem uma arquitetura de processamento de solicitação que inclui:
- O WAS (Serviço de Ativação de Processos do Windows), que permite que os sites usem protocolos diferentes de HTTP e HTTPS.
- Um mecanismo de servidor Web que pode ser personalizado adicionando ou removendo módulos.
- Pipelines de processamento de solicitações integrados do IIS e do ASP.NET.
Componentes no IIS
O IIS contém vários componentes que executam funções importantes para as funções de servidor Web e de aplicativos no Windows Server® 2008 (IIS 7.0) e no Windows Server 2008 R2 (IIS 7.5). Cada componente tem responsabilidades, como ouvir solicitações feitas ao servidor, gerenciar processos e ler arquivos de configuração. Esses componentes incluem ouvintes de protocolo, como HTTP.sys, e serviços, como o serviço WWW (Serviço de Publicação na World Wide Web) e o WAS (Serviço de Ativação de Processos do Windows).
Ouvintes de protocolo
Os ouvintes de protocolo recebem solicitações específicas do protocolo, enviam-nas ao IIS para processamento e retornam respostas aos solicitantes. Por exemplo, quando um navegador cliente solicita uma página da Web na Internet, o ouvinte HTTP, HTTP.sys, pega a solicitação e a envia ao IIS para processamento. Depois que o IIS processa a solicitação, o HTTP.sys retorna uma resposta ao navegador do cliente.
Por padrão, o IIS fornece o HTTP.sys como o ouvinte de protocolo que escuta as solicitações HTTP e HTTPS. O HTTP.sys foi introduzido no IIS 6.0 como um ouvinte de protocolo específico de HTTP para solicitações HTTP. O HTTP.sys permanece o ouvinte HTTP no IIS 7 e posteriores, mas inclui suporte para protocolo SSL.
Para dar suporte a serviços e aplicativos que usam protocolos diferentes de HTTP e HTTPS, você pode usar tecnologias como o WCF (Windows Communication Foundation). O WCF tem adaptadores de ouvinte que fornecem a funcionalidade de um ouvinte de protocolo e de um adaptador de escuta. Os adaptadores do ouvinte são abordados posteriormente neste documento. Para obter mais informações sobre o WCF, confira Windows Communication Foundation no MSDN.
Pilha de protocolo HTTP (HTTP.sys)
O ouvinte HTTP faz parte do subsistema de rede dos sistemas operacionais Windows e é implementado como um driver de dispositivo no modo kernel chamado de pilha HTTP (HTTP.sys). O HTTP.sys escuta as solicitações HTTP da rede, passa as solicitações para o IIS para processamento e, em seguida, retorna as respostas processadas para os navegadores cliente.
No IIS 6.0, o HTTP.sys substituiu o Winsock (Windows Sockets API), que era um componente de modo de usuário usado pelas versões anteriores do IIS para receber solicitações HTTP e enviar respostas HTTP. O IIS 7 e posteriores continuam a depender do HTTP.sys para solicitações HTTP.
O HTTP.sys oferece os seguintes benefícios:
- Cache no modo kernel. As solicitações de respostas armazenadas em cache são atendidas sem alternar para o modo de usuário.
- Enfileiramento de solicitação no modo kernel. As solicitações causam menos sobrecarga na alternância de contexto porque o kernel encaminha as solicitações diretamente para o processo de trabalho correto. Se nenhum processo de trabalho estiver disponível para aceitar uma solicitação, a fila de solicitações no modo kernel manterá a solicitação até que um processo de trabalho a pegue.
- Pré-processamento de solicitações e filtragem de segurança.
Serviço WWW (Serviço de Publicação na World Wide Web)
No IIS 7 e posteriores, a funcionalidade que anteriormente era tratada apenas pelo serviço WWW (Serviço de Publicação na World Wide Web) agora está dividida entre dois serviços: serviço WWW e um novo serviço, o WAS (Serviço de Ativação de Processos do Windows). Esses dois serviços são executados como LocalSystem no mesmo processo de Svchost.exe e compartilham os mesmos binários.
Observação
Você também pode ver o serviço WWW chamado W3SVC na documentação.
Como o serviço WWW funciona no IIS 6.0
No IIS 6.0, o serviço WWW gerencia as seguintes áreas principais no IIS:
- Administração e configuração de HTTP
- Gerenciamento de processos
- Monitoramento de desempenho
Administração e Configuração de HTTP
O serviço WWW lê informações de configuração da metabase do IIS e usa essas informações para configurar e atualizar o ouvinte HTTP, HTTP.sys. Além disso, o serviço WWW inicia, interrompe, monitora e gerencia processos de trabalho que processam solicitações HTTP.
Monitoramento de desempenho
O serviço WWW monitora o desempenho e fornece contadores de desempenho para sites e para o cache do IIS.
Gerenciamento de processo
O serviço WWW gerencia pools de aplicativos e processos de trabalho, como processos de trabalho de início, parada e reciclagem. Além disso, o serviço WWW monitora a integridade dos processos de trabalho e invoca a detecção rápida de falhas para impedir que novos processos sejam iniciados quando vários processos de trabalho falharem em um período configurável.
Como o serviço WWW funciona no IIS
No IIS, o serviço WWW não gerencia mais os processos de trabalho. Em vez disso, o serviço WWW é o adaptador de escuta para o ouvinte HTTP, HTTP.sys. Como adaptador de escuta, o serviço WWW é o principal responsável por configurar o HTTP.sys, atualizar o HTTP.sys quando a configuração é alterada e notificar o WAS quando uma solicitação entra na fila de solicitações.
Além disso, o serviço WWW continua a coletar os contadores para sites da Web. Como os contadores de desempenho continuam fazendo parte do serviço WWW, eles são específicos do HTTP e não se aplicam ao WAS.
Serviço de Ativação de Processos do Windows (WAS)
No IIS 7 e posteriores, o WAS (Serviço de Ativação de Processos do Windows) gerencia a configuração do pool de aplicativos e os processos de trabalho em vez do serviço WWW. Isso permite que você use a mesma configuração e modelo de processo para sites HTTP e não HTTP.
Além disso, você pode executar WAS sem o serviço WWW se não precisar da funcionalidade HTTP. Por exemplo, você pode gerenciar um serviço Web por meio de um adaptador de escuta do WCF, como o NetTcpActivator, sem executar o serviço WWW se não precisar ouvir solicitações HTTP no HTTP.sys. Para obter informações sobre adaptadores de escuta do WCF e sobre como hospedar aplicativos WCF no IIS 7 e posteriores usando o WAS, confira Hospedagem no WCF no MSDN.
Gerenciamento de configuração no WAS
Na inicialização, o WAS lê determinadas informações do arquivo ApplicationHost.config e passa essas informações para adaptadores de escuta no servidor. Os adaptadores de escuta são componentes que estabelecem a comunicação entre o WAS e os ouvintes de protocolo, como o HTTP.sys. Depois que os adaptadores de escuta recebem as informações de configuração, eles configuram seus ouvintes de protocolo relacionados e preparam os ouvintes para ouvir as solicitações.
No caso do WCF, um adaptador de escuta inclui a funcionalidade de um ouvinte de protocolo. Portanto, um adaptador de escuta do WCF, como NetTcpActivator, é configurado com base nas informações do WAS. Depois que o NetTcpActivator é configurado, ele escuta solicitações que usam o protocolo net.tcp. Para obter mais informações sobre os adaptadores de escuta do WCF, confira Arquitetura de ativação do WAS no MSDN.
A lista a seguir descreve o tipo de informação que o WAS lê da configuração:
- Informações de configuração global
- Informações de configuração de protocolo para protocolos HTTP e não HTTP
- Configuração do pool de aplicativos, como as informações da conta de processo
- Configuração do site, como associações e aplicativos
- Configuração do aplicativo, como os protocolos habilitados e os pools de aplicativos aos quais os aplicativos pertencem
Se o ApplicationHost.config for alterado, o WAS receberá uma notificação e atualizará os adaptadores de escuta com as novas informações.
Gerenciamento de processo
O WAS gerencia pools de aplicativos e processos de trabalho para solicitações HTTP e não HTTP. Quando um ouvinte de protocolo pega uma solicitação de cliente, o WAS determina se um processo de trabalho está em execução ou não. Se um pool de aplicativos já tiver um processo de trabalho que esteja atendendo a solicitações, o adaptador de escuta passará a solicitação para o processo de trabalho para processamento. Se não houver nenhum processo de trabalho no pool de aplicativos, o WAS iniciará um processo de trabalho para que o adaptador de escuta possa passar a solicitação para ele para processamento.
Observação
Como o WAS gerencia processos para protocolos HTTP e não HTTP, você pode executar aplicativos com protocolos diferentes no mesmo pool de aplicativos. Por exemplo, você pode desenvolver um aplicativo, como um serviço XML, e hospedá-lo em HTTP e net.tcp.
Módulos no IIS
O IIS fornece uma nova arquitetura diferente das versões anteriores do IIS. Em vez de manter a maior parte da funcionalidade dentro do próprio servidor, o IIS inclui um mecanismo de servidor Web no qual você pode adicionar ou remover componentes, chamados módulos, dependendo de suas necessidades.
Os módulos são recursos individuais que o servidor usa para processar solicitações. Por exemplo, o IIS usa módulos de autenticação para autenticar as credenciais do cliente e módulos de cache para gerenciar a atividade de cache.
A nova arquitetura fornece as seguintes vantagens em relação às versões anteriores do IIS:
- Você pode controlar quais módulos quer no servidor.
- Você pode personalizar um servidor para uma função específica em seu ambiente.
- Você pode usar módulos personalizados para substituir módulos existentes ou para introduzir novos recursos.
A nova arquitetura também melhora a segurança e simplifica a administração. Ao remover módulos desnecessários, você reduz a superfície de ataque do servidor e o volume de memória, que é a quantidade de memória que os processos de trabalho do servidor usam na máquina. Você também elimina a necessidade de gerenciar recursos desnecessários para seus sites e aplicativos.
Módulos Nativos
As seções a seguir descrevem os módulos nativos disponíveis com uma instalação completa do IIS 7 e posteriores. Você pode removê-los ou substituí-los por módulos personalizados, dependendo de suas necessidades.
Módulos HTTP
Vários módulos do IIS 7 e posteriores executam tarefas específicas do protocolo HTTP no pipeline de processamento de solicitações. Os módulos HTTP incluem módulos para responder a informações e consultas enviadas em cabeçalhos de clientes, para retornar erros HTTP, para redirecionar solicitações e muito mais.
Nome do Módulo | Descrição | Recurso |
---|---|---|
CustomErrorModule | Envia mensagens de erro HTTP padrão e configuradas quando um código de status de erro é definido em uma resposta. | Inetsrv\Custerr.dll |
HttpRedirectionModule | Oferece suporte ao redirecionamento configurável para solicitações HTTP. | Inetsrv\Redirect.dll |
ProtocolSupportModule | Executa ações relacionadas ao protocolo, como definir cabeçalhos de resposta e redirecionar cabeçalhos com base na configuração. | Inetsrv\Protsup.dll |
RequestFilteringModule | Adicionado no IIS 7.5. Filtra solicitações conforme configurado para controlar o comportamento do protocolo e do conteúdo. | Inetsrv\modrqflt.dll |
WebDAVModule | Adicionado no IIS 7.5. Permite a publicação mais segura do conteúdo usando HTTP via SSL. | Inetsrv\WebDAV.dll |
Módulos de segurança
Vários módulos no IIS executam tarefas relacionadas à segurança no pipeline de processamento de solicitações. Além disso, há módulos separados para cada um dos esquemas de autenticação, o que permite selecionar módulos para os tipos de autenticação desejados no servidor. Há também módulos que executam a autorização de URL e um módulo que filtra solicitações.
Nome do Módulo | Descrição | Recurso |
---|---|---|
AnonymousAuthenticationModule | Executa a autenticação anônima quando nenhum outro método de autenticação é bem-sucedido. | Inetsrv\Authanon.dll |
BasicAuthenticationModule | Executa a autenticação Básica. | Inetsrv\Authbas.dll |
CertificateMappingAuthenticationModule | Executa a autenticação de mapeamento de certificado usando o Active Directory. | Inetsrv\Authcert.dll |
DigestAuthenticationModule | Executa a autenticação Digest. | Inetsrv\Authmd5.dll |
IISCertificateMappingAuthenticationModule | Executa a autenticação de mapeamento de certificado usando a configuração de certificado do IIS. | Inetsrv\Authmap.dll |
RequestFilteringModule | Executa tarefas URLScan, como configurar verbos permitidos e extensões de nome de arquivo, definir limites e verificar se há sequências de caracteres inválidas. | Inetsrv\Modrqflt.dll |
UrlAuthorizationModule | Executa a autorização de URL. | Inetsrv\Urlauthz.dll |
WindowsAuthenticationModule | Executa a autenticação integrada do NTLM. | Inetsrv\Authsspi.dll |
IpRestrictionModule | Restringe os endereços IPv4 listados na lista ipSecurity na configuração. | Inetsrv\iprestr.dll |
Módulos de conteúdo
Vários módulos no IIS executam tarefas relacionadas ao conteúdo no pipeline de processamento de solicitações. Os módulos de conteúdo incluem módulos para processar solicitações de arquivos estáticos, para retornar uma página padrão quando um cliente não especifica um recurso em uma solicitação, para listar o conteúdo de um diretório e muito mais.
Nome do Módulo | Descrição | Recurso |
---|---|---|
CgiModule | Executa processos de interface CGI para criar a saída de resposta. | Inetsrv\Cgi.dll |
DefaultDocumentModule | Tenta retornar um documento padrão para solicitações feitas ao diretório pai. | Inetsrv\Defdoc.dll |
DirectoryListingModule | Lista o conteúdo de um diretório. | Inetsrv\dirlist.dll |
IsapiModule | Hospeda DLLs de extensão ISAPI. | Inetsrv\Isapi.dll |
IsapiFilterModule | Dá suporte a DLLs de filtro ISAPI. | Inetsrv\Filter.dll |
ServerSideIncludeModule | Processos do lado do servidor incluem código. | Inetsrv\Iis_ssi.dll |
StaticFileModule | Serve arquivos estáticos. | Inetsrv\Static.dll |
FastCgiModule | Dá suporte ao FastCGI, que fornece uma alternativa de alto desempenho ao CGI. | Inetsrv\iisfcgi.dll |
Módulos de compactação
Dois módulos no IIS executam compactação no pipeline de processamento de solicitação.
Nome do Módulo | Descrição | Recurso |
---|---|---|
DynamicCompressionModule | Compacta respostas e aplica a codificação de transferência de compactação Gzip às respostas. | Inetsrv\Compdyn.dll |
StaticCompressionModule | Executa a pré-compactação de conteúdo estático. | Inetsrv\Compstat.dll |
Módulos de cache
Vários módulos no IIS executam tarefas relacionadas ao cache no pipeline de processamento de solicitações. O cache melhora o desempenho de sites e aplicativos Web armazenando informações processadas, como páginas da Web, na memória do servidor e reutilizando essas informações em solicitações seguintes do mesmo recurso.
Nome do Módulo | Descrição | Recurso |
---|---|---|
FileCacheModule | Fornece cache no modo de usuário para arquivos e identificadores de arquivo. | Inetsrv\Cachfile.dll |
HTTPCacheModule | Fornece o cache do modo kernel e do modo de usuário em HTTP.sys. | Inetsrv\Cachhttp.dll |
TokenCacheModule | Fornece cache no modo de usuário de pares de nome de usuário e token para módulos que produzem entidades de usuário do Windows. | Inetsrv\Cachtokn.dll |
UriCacheModule | Fornece o cache do modo de usuário de informações de URL. | Inetsrv\Cachuri.dll |
Módulos de log e diagnóstico
Vários módulos no IIS executam tarefas relacionadas ao registro em log e diagnóstico no pipeline de processamento de solicitações. Os módulos de log dão suporte ao carregamento de módulos personalizados e à passagem de informações para HTTP.sys. Os módulos de diagnóstico seguem e relatam eventos durante o processamento da solicitação.
Nome do Módulo | Descrição | Recurso |
---|---|---|
CustomLoggingModule | Carrega módulos de log personalizados. | Inetsrv\Logcust.dll |
FailedRequestsTracingModule | Dá suporte ao recurso de rastreamento de solicitação com falha. | Inetsrv\Iisfreb.dll |
HttpLoggingModule | Passa informações e status de processamento para HTTP.sys para registro em log. | Inetsrv\Loghttp.dll |
RequestMonitorModule | Controla as solicitações atualmente em execução nos processos de trabalho e relata informações com a interface de programação de aplicativo de controle e status de runtime (RSCA). | Inetsrv\Iisreqs.dll |
TracingModule | Relata eventos para o ETW (Rastreamento de Eventos para Windows) da Microsoft. | Inetsrv\Iisetw.dll |
Módulos de suporte gerenciado
Alguns módulos no IIS dão suporte à integração gerenciada no pipeline de processamento de solicitações do IIS.
Nome do Módulo | Descrição | Recurso |
---|---|---|
ManagedEngine | Fornece a integração de módulos de código gerenciado no pipeline de processamento de solicitações do IIS. | Microsoft.NET\Framework\v2.0.50727\webengine.dll |
ConfigurationValidationModule | Valida problemas de configuração, como quando um aplicativo está em execução no modo Integrado, mas tem manipuladores ou módulos declarados na seção system.web. | Inetsrv\validcfg.dll |
Módulos gerenciados
Além dos módulos nativos, o IIS permite que você use módulos de código gerenciado para estender a funcionalidade do IIS. Alguns dos módulos gerenciados, como UrlAuthorization, têm um equivalente de módulo nativo que fornece uma alternativa nativa ao módulo gerenciado.
Observação
Os módulos gerenciados dependem do módulo ManagedEngine.
A tabela a seguir lista os módulos gerenciados disponíveis com uma instalação completa do IIS 7 e posteriores. Para obter mais informações sobre os módulos gerenciados, confira o SDK do .NET Framework 2.0 no MSDN.
Nome do Módulo | Descrição | Recurso |
---|---|---|
AnonymousIdentification | Gerencia identificadores anônimos, que são usados por recursos que oferecem suporte à identificação anônima, como o perfil ASP.NET. | System.Web.Security.AnonymousIdentificationModule |
DefaultAuthentication | Garante que um objeto de autenticação esteja presente no contexto. | System.Web.Security.DefaultAuthenticationModule |
FileAuthorization | Verifica se um usuário tem permissão para acessar o arquivo solicitado. | System.Web.Security.FileAuthorizationModule |
FormsAuthentication | Oferece suporte à autenticação usando a autenticação do Forms. | System.Web.Security.FormsAuthenticationModule |
OutputCache | Oferece suporte ao cache de saída. | System.Web.Caching.OutputCacheModule |
Perfil | Gerencia perfis de usuário usando o perfil ASP.NET, que armazena e recupera as configurações do usuário em uma fonte de dados, como um banco de dados. | System.Web.Profile.ProfileModule |
RoleManager | Gerencia uma instância RolePrincipal para o usuário atual. | System.Web.Security.RoleManagerModule |
Sessão | Oferece suporte à manutenção do estado da sessão, o que permite o armazenamento de dados específicos de um único cliente em um aplicativo no servidor. | System.Web.SessionState.SessionStateModule |
UrlAuthorization | Determina se o usuário atual tem permissão para acessar a URL solicitada, com base no nome do usuário ou na lista de funções das quais o usuário é membro. | System.Web.Security.UrlAuthorizationModule |
UrlMappingsModule | Oferece suporte ao mapeamento de uma URL real para uma URL mais amigável. | System.Web.UrlMappingsModule |
WindowsAuthentication | Define a identidade do usuário para um aplicativo ASP.NET quando a autenticação do Windows está habilitada. | System.Web.Security.WindowsAuthenticationModule |
Processamento de solicitações no IIS
No IIS, os pipelines de solicitação do IIS e ASP.NET são combinados para processar solicitações com uma abordagem integrada. A nova arquitetura de processamento de solicitações consiste em uma lista ordenada de módulos nativos e gerenciados que executam tarefas específicas em resposta a solicitações.
Esse design oferece vários benefícios em relação às versões anteriores do IIS. Primeiro, todos os tipos de arquivos podem usar recursos que originalmente estavam disponíveis apenas para o código gerenciado. Por exemplo, agora você pode usar a autenticação de ASP.NET Forms e a autorização URL (Uniform Resource Locator) para arquivos estáticos, arquivos ASP (Active Server Pages) e todos os outros tipos de arquivo em seus sites e aplicativos.
Em segundo lugar, esse design elimina a duplicação de vários recursos no IIS e ASP.NET. Por exemplo, quando um cliente solicita um arquivo gerenciado, o servidor chama o módulo de autenticação apropriado no pipeline integrado para autenticar o cliente. Nas versões anteriores do IIS, essa mesma solicitação passava por um processo de autenticação no pipeline do IIS e no pipeline do ASP.NET.
Em terceiro lugar, você pode gerenciar todos os módulos em um único local, em vez de gerenciar alguns recursos no IIS e outros na configuração do ASP.NET. Isso simplifica a administração de sites e aplicativos no servidor.
Pools de aplicativos no IIS
Os pools de aplicativos separam aplicativos por limites de processo para impedir que um aplicativo afete outro aplicativo no servidor. No IIS 7 e posteriores, os pools de aplicativos continuam a usar o modo de isolamento do processo de trabalho do IIS 6.0. Além disso, agora você pode especificar uma configuração que determina como processar solicitações que envolvem recursos gerenciados: modo Integrado ou modo Clássico.
Observação
No IIS 6.0, o modo de isolamento do processo de trabalho e o modo de isolamento do IIS 5.0 são definidos no nível do servidor. Isso torna impossível executar ambos os modos de isolamento no mesmo servidor. No entanto, no IIS 7 e posteriores, o modo Integrado e o modo Clássico são definidos no nível do pool de aplicativos, o que permite executar aplicativos simultaneamente em pools de aplicativos com modos de processo diferentes no mesmo servidor.
Modo de pool de aplicativos integrado
Quando um pool de aplicativos está no modo Integrado, você pode aproveitar a arquitetura integrada de processamento de solicitações do IIS e ASP.NET. Quando um processo de trabalho em um pool de aplicativos recebe uma solicitação, a solicitação passa por uma lista ordenada de eventos. Cada evento chama os módulos nativos e gerenciados necessários para processar partes da solicitação e gerar a resposta.
Há vários benefícios na execução de pools de aplicativos no modo Integrado. Primeiro, os modelos de processamento de solicitação do IIS e ASP.NET são integrados a um modelo de processo unificado. Esse modelo elimina etapas que antes eram duplicadas no IIS e no ASP.NET, como a autenticação. Além disso, o modo Integrado permite a disponibilidade de recursos gerenciados para todos os tipos de conteúdo.
Modo Clássico de pool de aplicativos
Quando um pool de aplicativos está no modo Clássico, o IIS 7 e posteriores tratam as solicitações da mesma forma que no modo de isolamento do processo de trabalho do IIS 6.0. As solicitações do ASP.NET passam primeiro pelas etapas de processamento nativo no IIS e, em seguida, são roteadas para Aspnet_isapi.dll para processamento do código gerenciado no runtime gerenciado. Por fim, a solicitação é roteada de volta por meio do IIS para enviar a resposta.
Essa separação dos modelos de processamento de solicitações do IIS e do ASP.NET resulta na duplicação de algumas etapas de processamento, como autenticação e autorização. Além disso, os recursos de código gerenciado, como a autenticação de formulários, só estão disponíveis para aplicativos ASP.NET ou aplicativos para os quais você tenha mapeado por script todas as solicitações a serem tratadas por aspnet_isapi.dll.
Certifique-se de testar a compatibilidade dos aplicativos existentes no modo Integrado antes de atualizar um ambiente de produção para o IIS 7 e posteriores e atribuir aplicativos a pools de aplicativos no modo Integrado. Você só deve adicionar um aplicativo a um pool de aplicativos no modo Clássico se o aplicativo não funcionar no modo Integrado. Por exemplo, seu aplicativo pode depender de um token de autenticação passado do IIS para o runtime gerenciado e, devido à nova arquitetura do IIS 7 e posteriores, o processo interrompe o aplicativo.
Processamento de solicitações HTTP no IIS
O IIS 7 e posteriores têm um fluxo de processamento de solicitações HTTP semelhante ao do IIS 6.0. Os diagramas nessa seção fornecem uma visão geral de uma solicitação HTTP em processo.
A lista a seguir descreve o fluxo de processamento de solicitações mostrado na Figura 1:
- Quando um navegador cliente inicia uma solicitação HTTP para um recurso no servidor Web, o HTTP.sys intercepta a solicitação.
- O HTTP.sys entra em contato com o WAS para obter informações do repositório de configuração.
- O WAS solicita informações de configuração do repositório de configuração, applicationHost.config.
- O serviço WWW recebe informações de configuração, como o pool de aplicativos e a configuração do site.
- O serviço WWW usa as informações de configuração para configurar o HTTP.sys.
- O WAS inicia um processo de trabalho para o pool de aplicativos ao qual a solicitação foi feita.
- O processo de trabalho processa a solicitação e retorna uma resposta ao HTTP.sys.
- O cliente recebe uma resposta.
Figura 1: Visão geral de uma solicitação HTTP
Em um processo de trabalho, uma solicitação HTTP passa por várias etapas ordenadas, chamadas de eventos, no Web Server Core. Em cada evento, um módulo nativo processa parte da solicitação, como autenticar o usuário ou adicionar informações ao log de eventos. Se uma solicitação exigir um módulo gerenciado, o módulo ManagedEngine nativo criará um AppDomain, no qual o módulo gerenciado poderá executar o processamento necessário, como autenticar um usuário com a autenticação do Forms. Quando a solicitação passa por todos os eventos no Web Server Core, a resposta é retornada ao HTTP.sys. A Figura 2, abaixo, mostra uma solicitação HTTP inserindo o processo de trabalho.
Figura 2: detalhes de uma solicitação HTTP dentro do processo de trabalho