Compartilhar via


Integração com o Azure Service Bus

O Microsoft Dataverse dá suporte à integração com o Azure. Os desenvolvedores podem registrar plug-ins com o Dataverse que passam dados de mensagem de runtime, conhecidos como o contexto de execução, para uma ou mais soluções do Azure na nuvem. Essa funcionalidade é especialmente importante porque o Azure é uma das poucas soluções com suporte para comunicar o contexto de runtime a aplicativos LOB (linha de negócios) externos.

O Barramento de Serviço do Azure fornece um canal de comunicação seguro e confiável entre dados de runtime do Dataverse e aplicativos LOB (linha de negócios baseados em nuvem) externos. Essa funcionalidade é especialmente útil para manter sistemas Dataverse diferentes ou outros servidores Dataverse sincronizados com alterações de dados empresariais.

Elementos-chave da conexão

Os principais elementos que implementam a conexão entre o Dataverse e o Barramento de Serviço do Azure são descritos a seguir. Um diagrama na próxima seção mostra esses elementos em operação.

Contexto de dados

O contexto de dados contém os dados de negócios que a operação dataverse atual processa. Um usuário, fluxo de trabalho ou aplicativo inicia esse processamento quando solicita uma determinada operação do Dataverse. O pipeline de eventos passa o contexto de dados para quaisquer plug-ins ou atividades de fluxo de trabalho personalizadas que estão registradas para serem executadas na combinação de solicitação e tabela específica que o pipeline está processando no momento. O contexto de dados é do tipo IPluginExecutionContext quando transmitido no pipeline de execução de eventos e RemoteExecutionContext quando postado no Barramento de Serviço.

O contexto de dados contido na mensagem que é postada no Barramento de Serviço do Azure pode ser formatado em XML ou JSON, além do formato binário .NET padrão. O suporte para esses formatos de dados permite a interoperabilidade entre plataformas em que clientes não .NET hospedados no Azure podem ler dados do Dataverse a partir do barramento de serviço.

Importante

Quando o tamanho de toda a carga HTTP excede 192 KB, as seguintes propriedades são removidas:

ParentContext, InputParameters, , PreEntityImagesPostEntityImages

Algumas operações não incluem essas propriedades.

  • Se o tamanho da carga for menor que 192 KB depois que os dados adicionais forem removidos, o sistema adicionará uma propriedade extra MessageMaxSizeExceeded ao BrokeredMessage. Essa propriedade indica que alguns dos dados são truncados.
  • Se o tamanho da carga exceder 192 KB depois que os dados adicionais forem removidos, ocorrerá um erro e a mensagem não será enviada.

Para obter mais informações sobre as tecnologias descritas anteriormente, consulte:

Plug-ins

Os plug-ins são um dos dois métodos que você pode usar para começar a postar a mensagem que contém o contexto de dados no Barramento de Serviço do Azure. O outro método é uma atividade de fluxo de trabalho personalizada. O recurso de conexão Dataverse-Azure dá suporte a dois tipos de plug-ins: OOB (out-of-box) e personalizado. Em ambos os casos, registre o plug-in para ser executado de forma assíncrona para obter o melhor desempenho do sistema.

Um plug-in OOB padrão compatível com Azure está disponível. Registre-o no Dataverse registrando um ponto de extremidade de serviço usando a ferramenta de Registro de Plug-in. Você deve registrar uma "etapa" de plug-in no pipeline de execução de eventos que identifica a combinação de mensagens e tabelas que dispara o plug-in para executar e realizar a notificação de publicação. Quando executado, o plug-in notifica o serviço assíncrono por meio de um serviço de notificação de ponto de extremidade de serviço (IServiceEndpointNotificationService), para postar o contexto de dados da solicitação atual no Barramento de Serviço do Azure (Azure Service Bus).

Você também pode escrever seu próprio plug-in personalizado com reconhecimento do Azure. O plug-in personalizado é executado no sandbox. Um plug-in personalizado pode iniciar a publicação do contexto de dados no barramento de serviço por meio do serviço de notificação do endpoint de serviço. Adicionar código para invocar esse serviço torna o plug-in com reconhecimento do Azure.

Para obter mais informações sobre plug-ins em geral, consulte Como escrever um plug-in. Para obter mais informações sobre plug-ins com reconhecimento do Azure, consulte Gravar um plug-in personalizado com reconhecimento do Azure.

Atividades de fluxo de trabalho personalizadas

Da mesma forma que nos plug-ins, você pode escrever atividades personalizadas de fluxo de trabalho para iniciar o envio do contexto atual de dados da mensagem de solicitação para o "Azure Service Bus" usando o serviço de notificação do endpoint de serviço. Para obter mais informações, consulte extensões de fluxo de trabalho.

Serviço assíncrono

Depois que o serviço de notificação do ponto de extremidade de serviço o notifica, o serviço assíncrono manipula a postagem do contexto de dados da mensagem de solicitação atualmente sendo processada pelo pipeline de execução de eventos no Barramento de Serviço do Azure. Cada postagem é realizada por uma tarefa do sistema do serviço assíncrono. Um usuário pode exibir o status de cada trabalho do sistema usando a exibição Trabalhos do Sistema do aplicativo Web do Power Apps. No aplicativo Web, escolha Configurações avançadas para exibir a interface herdada do Dynamics 365. Em seguida, selecione Configurações>Trabalhos do Sistema.

Para obter mais informações sobre o serviço assíncrono, consulte o serviço assíncrono.

Barramento de Serviço do Microsoft Azure

O barramento de serviço retransmite o contexto de dados das mensagens de solicitação entre as aplicações ouvintes da solução do Dataverse e do Azure Service Bus. O barramento de serviço também fornece segurança de dados, garantindo que apenas aplicativos autorizados possam acessar os dados armazenados no Dataverse. A autorização do Dataverse para postar o contexto de dados no barramento de serviço e para que os aplicativos ouvintes o leiam é gerenciada pela SAS (Assinaturas de Acesso Compartilhado) do Azure.

Para obter mais informações sobre o barramento de serviço, consulte Barramento de Serviço. Para obter mais informações sobre a autorização do barramento de serviço, consulte autenticação e autorização do Barramento de Serviço.

Solução do Microsoft Azure

Para que a conexão do Dataverse e do Azure funcione, uma conta do Azure Service Bus deve conter pelo menos uma solução, e essa solução deve conter um ou mais endpoints de serviço. Para um contrato de ponto de extremidade de retransmissão, um aplicativo ouvinte que esteja "integrado ao Dataverse" deve monitorar ativamente o ponto de extremidade para receber as solicitações do Dataverse no Barramento de Serviço. Para um contrato de endpoint de fila, um receptor não precisa escutar ativamente. Você torna um ouvinte consciente do Dataverse vinculando-o ao Microsoft.Xrm.Sdk assembly para definir o tipo RemoteExecutionContext. Para obter mais informações, consulte Escrever um ouvinte para uma solução do Microsoft Azure.

O Dataverse dá suporte ao envio de dados de eventos para uma solução dos Hubs de Eventos do Azure. Para obter mais informações sobre hubs de eventos, consulte Trabalhar com dados de eventos em sua solução dos Hubs de Eventos do Azure.

Cenário do Dataverse para Barramento de Serviço

Esse cenário implementa os componentes de conexão mencionados anteriormente. Como pré-requisito, configure o SAS para reconhecer o Dataverse como o emissor suportado e configure a solução do Azure Service Bus com regras para permitir que o Dataverse publique no ponto de extremidade onde o consumidor está localizado.

O diagrama a seguir mostra os elementos físicos que compõem o cenário.

Cenário do Dynamics 365 para o Service Bus.

A sequência de eventos conforme identificado neste diagrama é a seguinte:

  1. Registre uma aplicação de escuta em um ponto de extremidade de solução no Barramento de Serviço do Azure. O ouvinte começa a escutar ativamente o contexto de execução remota do Dataverse no Service Bus.

  2. Um usuário executa alguma operação no Dataverse que dispara a execução do plug-in OOB registrado ou de um plug-in personalizado com reconhecimento do Azure. O plug-in inicia um envio, através de uma tarefa assíncrona de sistema de serviço, do contexto de dados de solicitação atual para o Service Bus.

  3. As declarações postadas pelo Dataverse são autenticadas. Em seguida, o Barramento de Serviço retransmite o contexto de execução remota para o ouvinte. O ouvinte processa as informações de contexto e executa algumas tarefas relacionadas aos negócios com essas informações. O Service Bus notifica o serviço assíncrono de um envio bem-sucedido e define o status do trabalho do sistema relacionado como concluído.

Estabelecer um contrato entre o Dataverse e uma solução do Azure

Para cada endpoint de solução, você configura um contrato que define o tratamento dessas "mensagens" de contexto de execução remota no Barramento de Serviço e a segurança que o endpoint deve usar. Um ponto de extremidade recebe mensagens do Barramento de Serviço usando um dos contratos com suporte listados aqui.

Fila

Um contrato de fila fornece uma fila de mensagens na nuvem. Quando você usa um contrato de fila, um ouvinte não precisa escutar ativamente as mensagens no ponto de extremidade. Para filas, há uma leitura destrutiva e uma leitura não destrutiva. Uma leitura destrutiva lê uma mensagem disponível da fila e a elimina. Uma leitura não destrutiva não remove uma mensagem da fila.

O Dataverse dá suporte a uma fila persistente. As filas persistentes têm uma duração de disponibilidade de mensagem longa, mas finita, que você pode especificar no código.

Unidirecional

Um contrato unidirecional requer um ouvinte ativo. Se não houver nenhum listener ativo em um endpoint, a postagem no Service Bus falhará. O Dataverse repete a postagem em intervalos de tempo exponencialmente maiores até que o trabalho de sistema assíncrono que está postando a solicitação seja finalmente cancelado e seu status seja definido como Falha.

Bidirecional

Um contrato bidirecional é semelhante a um contrato unidirecional, exceto pelo fato de que um valor de cadeia de caracteres pode ser retornado do ouvinte para o plug-in do Dataverse ou a atividade de fluxo de trabalho personalizada que iniciou a postagem.

REST

Um contrato REST é semelhante a um contrato de duas vias em um endpoint REST.

Tópico

Um tópico é semelhante a uma fila, exceto que um ou mais ouvintes podem assinar para receber mensagens do tópico.

Hubs de Eventos

Esse tipo de contrato se aplica às soluções dos Hubs de Eventos do Azure.

Identificar o tipo de segurança que um contrato usa faz parte da configuração do contrato. Um contrato pode usar a segurança de transporte, que usa TLS (Transport Layer Security) ou SSL (Secure Sockets Layer) (https).

A autenticação baseada em declarações é usada para acesso seguro ao Service Bus. A declaração usada para autenticar no Service Bus é gerada no Dataverse e assinada pelo certificado AppFabricIssuer especificado no banco de dados de configuração do Dataverse.

Gerenciar erros em tempo de execução

Se ocorrer um erro após uma tentativa de postagem no Barramento de Serviço, verifique o status da tarefa do sistema relacionada na aplicação web para obter mais informações sobre o erro. Se o Barramento de Serviço estiver inativo ou um ouvinte ou ponto de extremidade não estiver disponível, a mensagem atual que está sendo processada no Dataverse não será postada no barramento. O serviço assíncrono continua tentando postar a mensagem em um padrão exponencial em que tenta postar com frequência no início e depois em intervalos mais longos e longos. Para um erro interno do Dataverse, as postagens de mensagem não são tentadas. Para um erro de barramento de serviço externo ou de rede, a tarefa do sistema relacionada está em um estado de espera.