Partilhar via


Arquitetura de ativação do WAS

Este tópico discrimina e discute 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.

  • FOI. 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).

  • Gestor de aplicações. Gerencia a criação e o tempo de vida de domínios de aplicativos 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 de 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 AppDomain que os protocolos de rede usados pelo aplicativo exigem.

Screenshot that shows the WAS architecture.

Adaptadores de ouvinte

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

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

Adaptadores de ouvinte para protocolos específicos são registrados durante a instalação no arquivo applicationHost.config, conforme mostrado no exemplo 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

Os manipuladores de protocolo Process e AppDomain para protocolos específicos são registrados no arquivo Web.config no nível da máquina.

<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>  

Consulte também