Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve um padrão de integração comum do Microsoft Graph para um cenário de negócios que oferece aprimoramentos de colaboração empresarial para aplicativos móveis para receber um feed somente leitura de mensagens compartilhadas do Microsoft Teams quase em tempo real.
Este cenário é um caso de uso não interativo que depende de alterações de dados disparadas por eventos externos e tem os seguintes requisitos de arquitetura:
- Um tipo de integração de dados.
- Um fluxo de dados de saída dos limites do Microsoft 365 para o aplicativo.
- Um baixo volume de dados por interação humana, mas um volume de dados potencialmente alto, dependendo do número de usuários.
- Uma latência de dados quase em tempo real para gerar feed atualizado.
A melhor opção de integração para esse cenário é usar notificações de alteração do Microsoft Graph, que podem fornecer notificações de eventos, bem como o conteúdo de uma mensagem compartilhada, e implementar webhooks. O aplicativo cliente fornece um segredo do cliente e uma chave de criptografia e expõe um ponto de extremidade HTTP no qual o serviço de notificação do Microsoft Graph posta as alterações. O aplicativo cliente pode aceitar e responder prontamente a solicitações síncronas do Microsoft Graph e pode ser dimensionado para lidar com eventos disparados por outros clientes que geram mensagens. Esse tipo de interação de aplicativo é chamado de modo push.
O diagrama a seguir mostra a arquitetura dessa solução.
Componentes da solução
A arquitetura da solução inclui os seguintes componentes:
- O Serviço de Aplicativo do Azure permite criar e hospedar aplicativos Web, back-ends móveis e APIs RESTful em sua linguagem de programação preferencial, sem gerenciar a infraestrutura. Ele oferece dimensionamento automático e alta disponibilidade, dá suporte a Windows e Linux e permite implantações automatizadas do GitHub, Azure DevOps ou qualquer repositório Git.
- O Microsoft Entra ID, que é necessário para gerenciar a autenticação para APIs do Microsoft Graph e dá suporte a permissões delegadas e de aplicativo para habilitar o fluxo OAuth.
- Aplicativo de funções, que é um componente sem servidor que permite dimensionar para um grande volume de notificações e tem lógica de negócios para processar notificações e enviá-las a um serviço de destino.
- Fila de Armazenamento Simples, que ajuda você a eliminar a carga do serviço de aplicativo persistindo notificações antes do processamento assíncrono por uma instância de um Aplicativo de Funções.
- Gateway de Aplicativo do Azure, que fornece funcionalidades de roteamento e segurança na Web.
- Serviço de notificação do Microsoft Graph, que gerencia assinaturas de notificação e fornece notificações de alteração aos clientes.
Considerações
As considerações a seguir dão suporte ao uso desse padrão de integração:
Disponibilidade: o Microsoft Graph chama o webhook do cliente sempre que uma nova mensagem é publicada em um canal compartilhado ou chat. O webhook deve ter alta disponibilidade ao longo do dia ou até mesmo por 24 horas completas.
Latência: o webhook deve reconhecer as solicitações de notificação do Microsoft Graph em até três segundos. Se o Microsoft Graph não receber um código de classe 200 dentro desse período, ele reenviará a notificação de alteração várias vezes, por até quatro horas.
Escalabilidade: o webhook do cliente deve ser capaz de escalar para um grande volume de notificações a qualquer hora do dia. Ele pode fazer isso adicionando mais instâncias ao serviço de aplicativo e instanciando mais instâncias de aplicativo de funções para atualizar o serviço de destino prontamente.
Complexidade da solução: a solução de webhook também requer código personalizado para manter assinaturas e chaves de criptografia para processar os dados. Essa solução é altamente complexa devido ao número de componentes envolvidos e aos requisitos de escalabilidade e disponibilidade.