Compartilhar via


Hospedagem Web de um Aplicativo Enfileirado

O Was (Serviço de Ativação de Processo do Windows) gerencia a ativação e o tempo de vida dos processos de trabalho que contêm aplicativos que hospedam os serviços do 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 em HTTP. Isso permite que os serviços do WCF usem protocolos HTTP e não HTTP, como net.msmq e msmq.formatname, em um ambiente de hospedagem que dá suporte à ativação baseada em mensagens 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 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 do MSMQ é um serviço NT iniciado automaticamente por padrão.

Para obter mais informações sobre 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 a Visão geral das 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 para 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 do MSMQ atualiza a lista de filas a serem monitoradas. Quando uma mensagem é encontrada em uma fila, o serviço de ativação relaciona o nome da fila ao URI de aplicativo mais longo correspondente para o binding 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, o nome de uma 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 do MSMQ não distingue entre o monitoramento de filas pública e privada. Dessa forma, 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 do 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 venenosas

O tratamento de mensagens envenenadas no WCF é realizado pelo canal, que não só detecta que uma mensagem é envenenada, mas também 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 em fila esteja ativo. Se o aplicativo for reciclado por WAS, a mensagem permanecerá na fila de tentativas até que outra mensagem chegue na 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 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.

Consulte também