Partilhar via


Web Hosting um aplicativo em fila

O Serviço de Ativação de Processos do Windows (WAS) gerencia a ativação e o tempo de vida dos processos de trabalho que contêm aplicativos que hospedam serviços WCF (Windows Communication Foundation). O modelo de processo WAS generaliza o modelo de processo do IIS 6.0 para o servidor HTTP removendo a dependência do HTTP. Isso permite que os serviços WCF usem protocolos HTTP e não-HTTP, como net.msmq e msmq.formatname, em um ambiente de hospedagem que oferece suporte à ativação baseada em mensagem e oferece a capacidade de hospedar um grande número de aplicativos em um determinado computador.

O WAS inclui um serviço de ativação do serviço de enfileiramento de mensagens (MSMQ) 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 que é iniciado automaticamente por padrão.

Para obter mais informações sobre o WAS e seus benefícios, consulte Hospedagem no Serviço de Ativação de Processos do Windows. Para obter mais informações sobre o MSMQ, consulte 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 de aplicativo têm duas partes: um prefixo de URI base e um endereço relativo específico do aplicativo (caminho). Essas duas partes fornecem o endereço externo para um aplicativo quando unidas. O prefixo URI base é construído a partir da vinculação do site e é usado para todos os aplicativos no site, por exemplo, "net.msmq://localhost", "msmq.formatname://localhost" ou "net.tcp://localhost". Os endereços de aplicativo são então construídos pegando fragmentos de caminho específicos do aplicativo (como "/applicationOne") e acrescentando-os ao prefixo URI base para chegar ao URI completo do aplicativo, por exemplo, "net.msmq://localhost/applicationOne".

O serviço de ativação do MSMQ usa o URI do aplicativo para corresponder à fila que o serviço de ativação do MSMQ deve monitorar para mensagens. Quando o serviço de ativação do MSMQ é iniciado, ele enumera todas as filas públicas e privadas no computador do qual está configurado para receber e as monitora em busca de mensagens. A cada 10 minutos, o serviço de ativação do MSMQ atualiza a lista de filas a serem monitoradas. Quando uma mensagem é encontrada em uma fila, o serviço de ativação faz a correspondência entre o nome da fila e o URI do aplicativo correspondente mais longo para a associação net.msmq e ativa o aplicativo.

Nota

O aplicativo que está sendo ativado deve corresponder (correspondência mais longa) 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.

Nota

Quando uma fila é criada, todas as mensagens enviadas a ela não ativam um aplicativo até que o serviço de ativação do 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 das filas públicas e privadas no endereçamento

O serviço de ativação do MSMQ não distingue entre monitoramento de fila privado e público. Como tal, não pode ter filas públicas e privadas com o mesmo nome. Se você fizer isso, um aplicativo hospedado na Web pode obter leitura ativada de qualquer uma das filas.

Configuração da fila para ativação

O serviço de ativação do MSMQ é executado como SERVIÇO DE REDE. É o serviço que monitora filas para ativar aplicativos. Para que ele ative aplicativos da fila, a fila deve fornecer acesso ao SERVIÇO DE REDE para espiar mensagens em sua lista de controle de acesso (ACL).

Mensagens venenosas

O tratamento de mensagens suspeitas no WCF é manipulado pelo canal, que não apenas deteta que uma mensagem está envenenada, 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 sucessivas vezes e a mensagem é movida para uma fila de novas tentativas. Em um ponto ditado pelo atraso do ciclo de repetição, a mensagem é movida da fila de repetição para a fila principal para tentar novamente. Mas isso requer que o canal em fila esteja ativo. Se o aplicativo for reciclado pelo WAS, a mensagem permanecerá na fila de novas tentativas até que outra mensagem chegue à fila principal para ativar o aplicativo em 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 no WAS não pode ser ativado com base em mensagens em uma fila do sistema, como a fila de letras mortas em todo o sistema, ou subfilas, como subfilas suspeitas. Esta é uma limitação para esta versão do produto.

Consulte também