Share via


Windows Process Activation Service (WAS) - Um mecanismo de ativação de processos e serviços.

Olá pessoal, tudo certo?

No último post, falamos sobre a integração entre WCF e WF, uma combinação interessante para a implementação de processos de negócio e serviços. Nessa integração, podemos pensar em 2 cenários típicos:

  • Cenário 1: serviços WCF (multi-protocolo, multi-host e baseados em mensagens) implementando fluxos de trabalho através de WF sendo consumidos por clientes WCF, como vemos a seguir:

image

  • Cenário 2: ou ainda processos de negócio implementados em WF consumindo (de forma nativa) serviços implementados em WCF, como no exemplo abaixo:

image

Para os dois cenários, o desafio será o mesmo: identificar quais etapas da lógica de negócio serão implementadas em workflows (WF) e identificar quais funcionalidades e recursos das aplicações LOB (Line Of Business) serão implementados na forma de serviços (WCF). No fundo, essa é a questão essencial de um modelo de arquitetura SOA.

Claro, podemos sempre adicionar outras questões como desempenho, latência, tempo de resposta, mecanismos de transporte utilizados, segurança, monitoração, transação e compensação, colaboração, identificação, catálogo de serviços, entre outras.

Um dos assuntos importantes nesse contexto é o host<T> , isto é, qual o mecanismo de hosting que será usado por seu serviço. Nesse ponto, vamos falar um pouco de WAS.

Windows Process Activation Service (WAS)

Como sabemos, uma das qualidades do WCF é poder hospedar serviços baseados no WCF em qualquer processo do Windows, incluindo um aplicativo console, um aplicativo Windows Forms ou até mesmo um aplicativo WPF (Windows Presentation Foundation). É possível até mesmo hospedar internamente os serviços WCF em serviços de longa duração do Windows, que são executados em segundo plano e trabalham personificando uma identidade previamente configurada. Os serviços WCF com endpoints baseados em HTTP também podem ser hospedados dentro do próprio IIS, da mesma forma que os Web Services tradicionais são quando implementados por ASP.NET e ASMX.

Se desejamos fornecer serviços WCF robustos pelo IIS 7.0, é essencial que conheçamos um novo recurso do IIS chamado WAS (Serviço de Ativação de Processos do Windows). O WAS é um componente fundamental do IIS 7.0, que torna possível hospedar serviços WCF além do HTTP sem precisar instalar o pacote do IIS inteiro.

Da fato, o WAS é um novo mecanismo de ativação de processos adjacente ao IIS, presente no Windows Vista e que também faz parte do Application Server Foundation no Windows Server 2008.

Um dos principais recursos do WAS é poder iniciar (START) e parar (STOP) aplicações dinamicamente, com base nas mensagens que forem recebidas da rede através de transportes como HTTP, Message Queuing, TCP e Named Pipes. Ou seja, ele funciona como um host de serviços, integrado aos mecanismos de transporte do WCF, para o tratamento das mensagens e disparo dinâmico de instâncias de serviços, aproveitando o modelo de instânciamento do IIS, sem precisar de todo o IIS 7.0 instalado na máquina.

A figura a seguir apresenta a arquitetura básica do WAS no IIS 7.0:

image

Note que o modelo implementa adaptadores para cada mecanismo de entrega de mensagens, aderente aos transportes e bindings previsto no WCF. Assim, mensagens recebeidas através do canal HTTP, são tratadas pelo núcleo HTTP.SYS, enquanto que mensagens recebidas por outros canais, como TCP, Named Pipes ou MSMQ serão "ouvidas" através dos adaptadores, ampliando o uso a infra-estrutura de dispatcher de serviços do IIS 7.0.

Em posts futuros, vamos avançar um pouco mais no assunto, enquanto criamos alguns exemplos de implementação de WCF sobre o WAS. Por enquanto, para saber mais sobre o tema, visite o link:

WAS Activation Architecture
Ref.: https://msdn2.microsoft.com/en-us/library/ms789006.aspx

E para ver alguns exemplos de ativação via MSMQ, Named Pipes e TCP no WAS, veja:

Windows Process Activation Service Samples
Ref.: https://msdn2.microsoft.com/en-us/library/ms751535.aspx

Por enquanto é só! Até o próximo post :)

Waldemir.