Usos típicos do Service Broker

O Agente de Serviços pode ser útil para qualquer aplicativo que precise executar de modo assíncrono um processamento ou que precise distribuir o processamento a uma série de computadores. Os usos normais de um Agente de Serviços incluem:

  • Gatilhos assíncronos

  • Processamento confiável de consultas

  • Coleta de dados confiável

  • Processamento distribuído do lado do servidor para aplicativos clientes

  • Consolidação de dados para aplicativos clientes

  • Processamento em lotes em larga escala

Gatilhos assíncronos

Muitos aplicativos que usam gatilhos, como sistemas OLTP (processamento de transações online), podem se beneficiar do Agente de Serviços. Um gatilho enfileira uma mensagem que solicita trabalho de um serviço do Agente de Serviços. Na verdade, o gatilho não executa o trabalho solicitado. Em vez disso, o gatilho cria uma mensagem que contém informações sobre o trabalho a ser feito e envia essa mensagem para o serviço que realiza o trabalho. Em seguida, o gatilho retorna.

Depois da confirmação da transação original, o Agente de Serviços entrega a mensagem ao serviço de destino. O programa que implementa o serviço executa o trabalho em uma transação separada. Executando esse trabalho em uma transação distinta, a transação original pode ser imediatamente confirmada. O aplicativo evita retardamentos que resultem em manter a transação original aberta durante a execução do trabalho.

Processamento confiável de consultas

Alguns aplicativos devem processar consultas de modo confiável, sem levar em conta falhas de computador, falta de energia ou problemas semelhantes. Um aplicativo que necessite de um processamento confiável de consultas pode submeter consultas enviando mensagens para um serviço do Agente de Serviços. O aplicativo que implementa o serviço lê a mensagem, executa a consulta e retorna os resultados. Todas essas três operações ocorrem na mesma transação. Se houver uma falha antes de a transação ser confirmada, toda a transação será revertida e a mensagem retornará para a fila. Quando o computador se recupera, o aplicativo reinicia e processa novamente a mensagem.

Coleta de dados confiável

Os aplicativos que coletam dados de um grande conjunto de fontes podem tirar vantagem do Agente de Serviços para coletar dados de forma confiável. Por exemplo, um aplicativo de varejo com vários sites pode usar o Agente de Serviços para enviar informações de transações para um armazenamento de dados central. Como o Agente de Serviços faz a entrega confiável e assíncrona de mensagens, cada site pode continuar a processar as transações mesmo perdendo temporariamente a conexão com o armazenamento central de dados. A segurança do Agente de Serviços ajuda a assegurar que as mensagens não sejam distribuídas com erro e ajuda a proteger os dados em trânsito.

Processamento distribuído do lado do servidor para aplicativos clientes

Os grandes aplicativos que acessam vários bancos de dados do SQL Server podem se beneficiar do Agente de Serviços. Por exemplo, um aplicativo da Web para compra de livros pode usar o Agente de Serviços no servidor para troca de informações entre diversos bancos de dados que contenham dados sobre a solicitação, o cliente, o estoque e o crédito. Como o Agente de Serviços faz o serviço de enfileiramento de mensagens e a entrega confiável de mensagens, o aplicativo pode continuar a aceitar ordens, mesmo se um dos bancos de dados estiver indisponível ou pesadamente carregado. Nesse cenário, o Agente de Serviços funcionará como uma estrutura para um sistema OLTP distribuído.

Consolidação de dados para aplicativos clientes

Os aplicativos que precisem usar ou exibir simultaneamente as informações de vários bancos de dados podem se beneficiar do Agente de Serviços. Por exemplo, um aplicativo de serviço cliente que consolide dados de vários locais em uma única tela pode usar o Agente de Serviços para executar essas várias solicitações em paralelo, em vez de seqüencialmente, e com isso reduzir significativamente o tempo de resposta de aplicativo. O aplicativo de serviço cliente envia solicitações a diferentes serviços em paralelo. À medida que os serviços respondem às solicitações, o aplicativo de serviço cliente coleta as respostas e exibe os resultados.

Processamento em lotes em larga escala

Os aplicativos que precisam realizar processamento em lotes de larga escala podem se beneficiar do enfileiramento e do processamento paralelo oferecido pelo Agente de Serviços para manipular grandes volumes de trabalho de forma ágil e eficaz. O aplicativo armazena dados a serem processados em uma fila do Agente de Serviços. Um programa lê periodicamente a fila e processa os dados. Um aplicativo pode tirar vantagem do sistema de mensagens confiável fornecido pelo Agente de Serviços para realizar o processamento em lotes em outro computador que não seja aquele em que a solicitação se originou.