Serviços assíncronos utilizam um padrão de interação de retorno de chamada para
as comunicações entre objetos. Serviços assíncronos podem ser utilizados, por exemplo, em
sistemas de publicação-assinatura que são oferecidos por fornecedores de middleware orientado
por mensagens ou em domínios de gerenciamento de sistema e dispositivo.
Serviços WS-Notification
Serviços assíncronos são padronizados
nas especificações WS-Notification:
- WS-BaseNotification define as interfaces de serviços da web para NotificationProducers e NotificationConsumers.
Essa especificação inclui trocas de mensagens padrão que são implementadas por provedores de
serviços que querem agir nesses mesmos papéis junto com os requisitos operacionais associados.
- WS-BrokeredNotification define a interface de serviços da web para NotificationBroker. NotificationBroker é um intermediário que, entre outras
coisas, permite que entidades que não são provedores de serviços publiquem mensagens. Isso
inclui trocas de mensagens padrão que são implementadas por provedores de serviços
NotificationBroker, junto com os requisitos operacionais associados dos provedores
de serviços e solicitantes que participam de notificações intermediadas.
- WS-Topics define um mecanismo para organizar e categorizar itens de
interesse para assinatura conhecidos como tópicos. Esses são utilizados
junto com os mecanismos de notificação definidos em WS-BaseNotification
e WS-BrokeredNotification.
É possível testar serviços da web e serviços XML que implementam a especificação WS-Notification criando uma solicitação assíncrona dentro de um teste. O pedido assíncrono contém as interfaces para a especificação WS-Notification correspondente, junto com uma estrutura de retorno de chamada.
Serviços Assíncronos Proprietários
Você pode testar serviços
assíncronos proprietários que não implementam especificações WS-Notification. Para testar esses serviços, você cria manualmente um pedido de serviço que contém as interfaces para o serviço e, então, é possível incluir a estrutura de retorno de chamada assíncrono no pedido.
Os dados XML do pedido assíncrono devem conter um terminal que especifique a URL do receptor do retorno de chamada. Durante o teste, esse terminal é
utilizado para redirecionar o retorno de chamada para o testador em vez de para o receptor
real.
Estrutura de Retorno de Chamada
Para testar serviços assíncronos, você deve criar uma estrutura de pedido assíncrono em seu teste, conforme mostrado no seguinte diagrama:
Uma solicitação de serviço da web ou uma solicitação XML simples fornece a ação de assinatura e contém um elemento de retorno de chamada que descreve o comportamento do teste em três estados:
- Paralelo contém elementos de teste que são executados após o pedido de assinatura e durante a espera da resposta de notificação.
- Recebimento contém elementos de teste que são executados quando a resposta
de notificação é recebida do serviço.
- Tempo Limite contém elementos de teste que são executados se a resposta de
notificação não for recebida após um atraso ser especificado no elemento de retorno de chamada.
Quando tudo que está contido nos elementos paralelo, recebimento e tempo limite tiver sua execução concluída, a execução continuará com o próximo elemento no teste após o pedido assíncrono.
O
método para gerar a estrutura de retorno de chamada assíncrona no teste depende se
os serviços assíncronos utilizam a especificação WS-Notification:
- Serviços WS-Notification: Crie o pedido assíncrono no teste.
- Serviços de proprietários: Crie manualmente uma solicitação de serviço da web ou solicitação XML no teste e, depois, inclua a estrutura de retorno de chamada assíncrono na solicitação.