Hospedando na Web um aplicativo em fila
O Serviço de Ativação de Processos do Windows (WAS) gerencia a ativação e a vida útil dos processos de trabalho que contêm aplicativos que hospedam os serviços do Windows Communication Foundation (WCF). O modelo de processo WAS generaliza o modelo de processo IIS 6.0 para o servidor HTTP ao remover a dependência do HTTP. Isso permite que os serviços WCF usem protocolos HTTP e não HTTP, como o net.msmq e msmq.formatname, em um ambiente de hospedagem que suporte a ativação baseada em mensagens e oferece a capacidade de hospedar um grande número de aplicativos em uma determinada máquina.
O WAS inclui um serviço de ativação MSMQ (Enfileiramento de Mensagens) que ativa um aplicativo em fila quando uma ou mais mensagens são colocadas em uma das filas usadas pelo aplicativo. O serviço de ativação MSMQ é um serviço NT iniciado automaticamente por padrão.
Para mais informações sobre WAS e seus benefícios, consulte Hospedagem no serviço de ativação de processo do Windows. Para mais informações sobre MSM, consulta Visão geral de filas
Endereçamento de fila no WAS
Os aplicativos WAS têm endereços URI (Uniform Resource Identifier). Os endereços do aplicativo têm duas partes: um prefixo de URI base e um endereço relativo (caminho) específico do aplicativo. Essas duas partes fornecem o endereço externo de um aplicativo quando unidas. O prefixo de URI base é construído a partir da associação de site e é usado para todos os aplicativos no site, por exemplo, "net.msmq://localhost", "msmq.formatname://localhost" ou "net.tcp://localhost". Os endereços do aplicativo são construídos usando fragmentos de caminho específicos do aplicativo (como "/applicationOne") e acrescentando-os ao prefixo de URI base para chegar ao URI completo do aplicativo, por exemplo, "net.msmq://localhost/applicationOne".
O serviço de ativação MSMQ usa o URI do aplicativo para corresponder à fila que o serviço de ativação MSMQ deve monitorar para mensagens. Quando o serviço de ativação MSMQ é iniciado, ele enumera todas as filas públicas e privadas na máquina em que está configurado para receber e monitora-as em busca de mensagens. A cada 10 minutos, o serviço de ativação MSMQ atualiza a lista de filas a serem monitoradas. Quando uma mensagem é encontrada em uma fila, o serviço de ativação corresponde o nome da fila ao URI do aplicativo de maior correspondência para a associação net.msmq e ativa o aplicativo.
Observação
O aplicativo que está sendo ativado deve corresponder (maior correspondência) ao prefixo do nome da fila.
Por exemplo, um nome de fila é: msmqWebHost/orderProcessing/service.svc. Se o Aplicativo 1 tiver um diretório virtual /msmqWebHost/orderProcessing com um service.svc sob ele e o Aplicativo 2 tiver um diretório virtual /msmqWebHost com um orderProcessing.svc sob ele, o Aplicativo 1 será ativado. Se o Aplicativo 1 for excluído, o Aplicativo 2 será ativado.
Observação
Quando uma fila é criada, todas as mensagens enviadas a ela não ativam um aplicativo até que o serviço de ativação MSMQ atualize a lista de filas, que é, no máximo, 10 minutos a partir do momento em que a fila foi criada. Reiniciar o serviço de ativação também atualiza a lista de filas.
O efeito de filas públicas e privadas no endereçamento
O serviço de ativação MSMQ não distingue entre o monitoramento de filas pública e privada. Sendo assim, você não pode ter filas públicas e privadas com o mesmo nome. Se o tiver, um aplicativo hospedado na Web poderá ser ativado a partir da leitura de qualquer uma das filas.
Configuração de fila para ativação
O serviço de ativação MSMQ é executado como SERVIÇO DE REDE. É o serviço que monitora filas para ativar aplicativos. Para ativar aplicativos da fila, a fila deve fornecer acesso ao SERVIÇO DE REDE para procurar mensagens na ACL (lista de controle de acesso).
Mensagens suspeitas
O tratamento de mensagens suspeitas no WCF é realizado pelo canal, que não só detecta que uma mensagem é suspeita, mas seleciona uma disposição com base na configuração do usuário. Como resultado, há uma única mensagem na fila. O aplicativo hospedado na Web anula tempos sucessivos e a mensagem é movida para uma fila de repetição. Em um ponto ditado pelo atraso do ciclo de repetição, a mensagem é movida da fila de repetição para a fila principal para uma nova tentativa. Mas isso requer que o canal na fila esteja ativo. Se o aplicativo for reciclado por WAS, a mensagem permanecerá na fila de repetição até que outra mensagem chegue à fila principal para ativar o aplicativo na fila. A solução alternativa nesse caso é mover a mensagem manualmente da fila de repetição de volta para a fila principal para reativar o aplicativo.
Subfila e ressalva da fila do sistema
Um aplicativo hospedado por WAS não pode ser ativado com base em mensagens em uma fila do sistema, como a fila de mensagens mortas em todo o sistema, ou subfilas, como subfilas suspeitas. Essa é uma limitação para esta versão do produto.