Compartilhar via


Arquitetura de ativação do WAS

Este tópico descreve e aborda os componentes do Serviço de Ativação de Processos do Windows (também conhecido como WAS).

Componentes de ativação

O WAS é composto por vários componentes arquitetônicos:

  • Adaptadores de ouvinte. Serviços do Windows que recebem mensagens em protocolos de rede específicos e se comunicam com o WAS para rotear mensagens de entrada para o processo de trabalho correto.

  • WAS. O serviço do Windows que gerencia a criação e o tempo de vida dos processos de trabalho.

  • O executável do processo de trabalho genérico (w3wp.exe).

  • Gerenciador de aplicativos. Gerencia a criação e o tempo de vida de domínios de aplicativo que hospedam aplicativos dentro do processo de trabalho.

  • Manipuladores de protocolo. Componentes específicos do protocolo que são executados no processo de trabalho e gerenciam a comunicação entre o processo de trabalho e os adaptadores de ouvinte individuais. Existem dois tipos de manipuladores de protocolo: manipuladores de protocolo de processo e manipuladores de protocolo AppDomain.

Quando o WAS ativa uma instância do processo de trabalho, ele carrega os manipuladores de protocolo de processo necessários no processo de trabalho e usa o gerenciador de aplicativos para criar um domínio de aplicativo para hospedar o aplicativo. O domínio do aplicativo carrega o código do aplicativo, bem como os manipuladores de protocolo de AppDomain que os protocolos de rede usados pelo aplicativo exigem.

Screenshot that shows the WAS architecture.

Adaptadores de ouvinte

Adaptadores de ouvinte são serviços do Windows individuais que implementam a lógica de comunicação de rede usada para receber mensagens usando o protocolo de rede no qual escutam. A tabela a seguir lista os adaptadores de ouvinte para protocolos do WCF (Windows Communication Foundation).

Nome do serviço do adaptador do ouvinte Protocolo Observações
W3SVC http Componente comum que fornece ativação HTTP para o IIS 7.0 e o WCF.
NetTcpActivator net.tcp Depende do serviço NetTcpPortSharing.
NetPipeActivator net.pipe
NetMsmqActivator net.msmq Para uso com aplicativos de Enfileiramento de Mensagens baseados no WCF.
NetMsmqActivator msmq.formatname Fornece compatibilidade com versões anteriores com aplicativos de Enfileiramento de Mensagens existentes.

Os adaptadores de ouvinte para protocolos específicos são registrados durante a instalação no arquivo applicationHost.config, conforme mostrado no exemplo de XML a seguir.

<system.applicationHost>  
    <listenerAdapters>  
        <add name="http" />  
        <add name="net.tcp"
          identity="S-1-5-80-3579033775-2824656752-1522793541-1960352512-462907086" />  
         <add name="net.pipe"
           identity="S-1-5-80-2943419899-937267781-4189664001-1229628381-3982115073" />  
          <add name="net.msmq"
            identity="S-1-5-80-89244771-1762554971-1007993102-348796144-2203111529" />  
           <add name="msmq.formatname"
             identity="S-1-5-80-89244771-1762554971-1007993102-348796144-2203111529" />  
    </listenerAdapters>  
</system.applicationHost>  

Manipuladores de protocolo

Manipuladores de protocolo Process e AppDomain para protocolos específicos são registrados no arquivo de Web.config no nível do computador.

<system.web>  
   <protocols>  
      <add name="net.tcp"
        processHandlerType=  
         "System.ServiceModel.WasHosting.TcpProcessProtocolHandler"  
        appDomainHandlerType=  
         "System.ServiceModel.WasHosting.TcpAppDomainProtocolHandler"  
        validate="false" />  
      <add name="net.pipe"
        processHandlerType=  
         "System.ServiceModel.WasHosting.NamedPipeProcessProtocolHandler"  
          appDomainHandlerType=  
           "System.ServiceModel.WasHosting.NamedPipeAppDomainProtocolHandler"/>  
      <add name="net.msmq"  
        processHandlerType=  
         "System.ServiceModel.WasHosting.MsmqProcessProtocolHandler"  
        appDomainHandlerType=  
         "System.ServiceModel.WasHosting.MsmqAppDomainProtocolHandler"  
        validate="false" />  
   </protocols>  
</system.web>  

Confira também