Escrever um aplicativo ouvinte para uma solução do Microsoft Azure

 

Publicado: janeiro de 2017

Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Este tópico descreve como gravar um Microsoft Azure aplicativo de ouvinte de solução que possa ler e processar Microsoft Dynamics 365 mensagens postadas no Barramento de Serviço do Microsoft Azure. Como um pré-requisito, você deve se familiarizar como gravar um ouvinte Barramento de Serviço do Microsoft Azure antes de tentar aprender as especificidades de um ouvinte Microsoft Dynamics 365. Para obter mais informações, consulte a Documentação do Barramento de Serviço do Azure.

Neste tópico

Gravar um ouvinte da fila

Grave um ouvinte unidirecional, bidirecional ou REST

Filtrar mensagens

Ler o contexto dos dados em vários formatos de dados

Gravar um ouvinte da fila

Uma fila de mensagem é um repositório de mensagens recebidas em um ponto de extremidade do barramento de serviço. O ouvinte da fila é um aplicativo que lê e processa essas mensagens em fila. Como as mensagens do barramento de serviço são armazenadas em uma fila, um ouvinte não precisa estar ativamente ouvindo para que as mensagens sejam recebidas na fila. Um ouvinte da fila pode ser iniciado após mensagens chegarem na fila e ainda processarem essas mensagens. Outros tipos de ouvintes discutidos na seção a seguir devem estar ativamente ouvindo ou perderão a oportunidade de ler uma mensagem. Essas mensagens podem ser originadas a partir de Microsoft Dynamics 365 ou de outra fonte. .

Importante

Para gravar um ouvinte de fila, verifique cada ação do cabeçalho da mensagem para determinar se a mensagem foi originada a partir do Microsoft Dynamics 365. Para obter informações sobre como fazer isso, consulte Filtrar mensagens.

Você pode executar uma leitura da mensagem destrutiva usando Receber no modo ReceiveAndDelete, em que a mensagem é lida e removida da fila ou uma leitura não destrutiva usando o modo PeekLock, em que a mensagem é lida, mas ainda continua disponível na fila. O código de exemplo do ouvinte persistente da fila fornecido neste SDK faz uma leitura destrutiva. Para obter mais informações sobre a leitura de mensagens de uma fila, consulte Como receber mensagens de uma fila.

Um tópico é semelhante a uma fila, mas implementa um modelo de publicação/assinatura. Um ou mais ouvintes podem se inscrever no tópico e receber mensagens da fila.Para obter mais informações:Filas, tópicos e assinaturas

Importante

Para usar estes contratos de fila ou tópico, você deve gravar seus aplicativos de ouvinte usando o SDK do Azure versão 1.7 ou superior.

O uso de filas e tópicos em seu projeto de software do sistema múltiplo pode resultar na dissociação de sistemas. Se o aplicativo do ouvinte sempre ficar indisponível, a entrega de mensagens de Microsoft Dynamics 365 ainda terá êxito e o aplicativo do ouvinte poderá continuar a processar mensagens da fila quando estiver on-line novamente.Para obter mais informações:Filas, tópicos e assinaturas

Grave um ouvinte unidirecional, bidirecional ou REST

Além do ouvinte da fila descrito anteriormente, você pode gravar um ouvinte para outros três contratos de barramento de serviço que são suportados por Microsoft Dynamics 365: unidirecional, bidirecional e REST. Um ouvinte unidirecional pode ler e processar uma mensagem postada ao barramento de serviço. Um ouvinte bidirecional pode fazer o mesmo, mas também pode retornar uma cadeia de caracteres de algumas informações de volta a Dynamics 365. Um ouvinte REST é o mesmo que o ouvinte bidirecional, exceto que ele trabalha com um ponto de extremidade REST. Observe que esses ouvintes devem estar ativamente ouvindo um ponto de extremidade de serviço para ler uma mensagem enviada pelo barramento de serviço. Se o ouvinte não estiver ouvindo quando Microsoft Dynamics 365 tentar postar uma mensagem ao barramento de serviço, a mensagem não será enviada.

Gravar um ouvinte é estruturado sobre o que é conhecido como ABC: endereço, associação e contrato. As informações a seguir identificam os ABCs do ouvinte unidirecional.

Depois que o ouvinte estiver registrado com um ponto de extremidade, o método Execute do ouvinte será chamado sempre que uma mensagem for postada no barramento de serviço por Microsoft Dynamics 365. O método Execute não retorna os dados da chamada de método. Para obter mais informações, consulte o exemplo do ouvinte unidirecional, Exemplo: Ouvinte unidirecional.

Um ouvinte bidirecional é codificado de maneira semelhante ao ouvinte unidirecional. Os ABCs de um ouvinte bidirecional são os seguintes:

Para este contrato bidirecional, o método Executar retorna uma cadeia de caracteres da chamada de método. Para obter mais informações, consulte o exemplo do ouvinte bidirecional, Exemplo: Listener bidirecional.

Um ouvinte REST é codificado de maneira semelhante ao ouvinte bidirecional. Os ABCs de um ouvinte REST são os seguintes:

Para o contrato REST, o método Execute retorna uma cadeia de caracteres da chamada de método. Consulte o exemplo de ouvinte REST, Exemplo: Ouvinte REST, para obter mais informações. Observe que no exemplo de ouvinte REST, um WebServiceHost é instanciado e não um ServiceHost, como foi feito no exemplo bidirecional.

Observação

Ao usar o plug-in (ServiceBusPlugin) integrado com um ouvinte bidirecional ou REST, o plug-in não usa os dados de cadeia de caracteres retornados do ouvinte. No entanto, um plug-in de conhecimento Azure personalizado pode fazer uso dessas informações.

Quando você executa os exemplos de ouvintes, a confidencialidade do expedidor que você solicitou é a chave de gerenciamento Barramento de Serviço do Microsoft Azure. A associação HTTP de Federação WS2007 usa o modo “token” e o protocolo de WS-Trust 1.3.

Filtrar mensagens

Há um conjunto de propriedades de informações extras adicionado a cada propriedade de mensagem mediada de Propriedades enviadas do Microsoft Dynamics 365 e Dynamics 365 (online). O conjunto de propriedades, disponível com a fila, retransmissão e pontos de extremidade de contrato tópico, contém as seguintes informações:

  • Organização URI

  • Chamando a ID do usuário

  • Iniciando a ID do usuário

  • Nome lógico da entidade

  • Nome da solicitação

Estas informações identificam a organização, o usuário, a entidade e a solicitação de mensagem que está sendo processada por Microsoft Dynamics 365 que resultou na postagem da mensagem de barramento de serviço. A disponibilidade dessas propriedades indica que a mensagem foi enviada do Microsoft Dynamics 365. O código de ouvinte pode decidir como processar a mensagem com base nesses valores.

Ler o contexto dos dados em vários formatos de dados

O contexto dos dados da operação Microsoft Dynamics 365 atual será passado para o seu Azure aplicativo do ouvinte de solução no corpo da mensagem do barramento de serviço. Nas versões anteriores, somente um formato binário .NET tinha suporte. Para interoperabilidade multiplataforma (não .NET), você pode agora especificar um dos três formatos de dados para o corpo da mensagem: Binário .NET, JSON ou XML. Esse formato está especificado no MessageFormat atributo da ServiceEndpoint entidade.

Observação

Esse recurso foi apresentado na Atualização 1 do CRM Online 2016 e no CRM 2016 Service Pack 1 (local).

A receber mensagens, seu aplicativo de ouvinte pode ler o contexto dos dados no corpo da mensagem com base no tipo de conteúdo da mensagem. O código de exemplo para se fazer isso é mostrado a seguir.

var receivedMessage = inboundQueueClient.Receive(TimeSpan.MaxValue);

if (receivedMessage.ContentType = "application/msbin1")
{
    RemoteExecutionContext context = receivedMessage.GetBody<RemoteExecutionContext>();
}
else if (receivedMessage.ContentType = "application/json")
{
    //string jsonBody = new StreamReader(receivedMessage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();
    RemoteExecutionContext contextFromJSON = receivedMessage.GetBody<RemoteExecutionContext>(
        new DataContractJsonSerializer(typeof(RemoteExecutionContext)));
}
else if (receivedMessage.ContentType = "application/xml")
{
    //string xmlBody = new StreamReader(receivedMessage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();
    RemoteExecutionContext contextFromXML = receivedMessage.GetBody<RemoteExecutionContext>(
        new DataContractSerializer(typeof(RemoteExecutionContext)));
}

Confira Também

Extensões do Azure para Microsoft Dynamics 365
Redigir um plug-in com reconhecimento de Azure personalizado
Amostra: Ouvinte de fila persistente
Exemplo: Ouvinte unidirecional
Exemplo: Listener bidirecional
Exemplo: Ouvinte REST
Trabalhar com dados do Dynamics 365 em sua solução Azure
Trabalhar com dados de eventos do Dynamics 365 em sua solução de Hub de Evento do Azure

Microsoft Dynamics 365

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais