Поделиться через


Получение обновлений для изменений данных в режиме реального времени с помощью Microsoft Graph

В этой статье описывается распространенный шаблон интеграции Microsoft Graph для бизнес-сценария, который предлагает улучшения совместной работы предприятия для мобильных приложений, чтобы получать веб-канал общих сообщений из Microsoft Teams только для чтения в режиме почти в реальном времени.

Этот сценарий является неинтерактивным вариантом использования, который зависит от изменений данных, вызванных внешними событиями, и имеет следующие требования к архитектуре:

  • Тип интеграции данных.
  • Исходящий поток данных из границ Microsoft 365 в приложение.
  • Низкий объем данных на взаимодействие с пользователем, но потенциально большой объем данных в зависимости от количества пользователей.
  • Задержка данных практически в реальном времени для создания актуального веб-канала.

Лучший вариант интеграции для этого сценария — использовать уведомления об изменениях Microsoft Graph, которые могут доставлять уведомления о событиях, а также содержимое общего сообщения и реализовывать веб-перехватчики. Клиентское приложение предоставляет секрет клиента и ключ шифрования, а также предоставляет конечную точку HTTP, в которой служба уведомлений Microsoft Graph публикует изменения. Клиентское приложение может принимать синхронные запросы Microsoft Graph и быстро реагировать на них, а также может масштабироваться для обработки событий, активируемых другими клиентами, создающими сообщения. Этот тип взаимодействия с приложением называется режимом отправки.

На следующей схеме показана архитектура для этого решения.

Схема, показывающая службу уведомлений Microsoft Graph, взаимодействующую с Microsoft Entra ID, шлюзом, службами приложений, очередью хранилища, приложениями-функциями и конечной службой.

Компоненты решения

Архитектура решения включает в себя следующие компоненты:

  • Служба приложений Azure позволяет создавать и размещать веб-приложения, мобильные серверные серверы и ИНТЕРФЕЙСы API RESTful на предпочитаемом языке программирования без управления инфраструктурой. Он предлагает автоматическое масштабирование и высокий уровень доступности, поддерживает Windows и Linux, а также включает автоматическое развертывание из GitHub, Azure DevOps или любого репозитория Git.
  • Microsoft Entra ID, которая необходима для управления проверкой подлинности для API Microsoft Graph и поддерживает делегированные разрешения и разрешения приложений для включения потока OAuth.
  • Приложение-функция— бессерверный компонент, который позволяет масштабировать большое количество уведомлений и имеет бизнес-логику для обработки уведомлений и их отправки в целевую службу.
  • Простая очередь хранилища, которая помогает сбрасывать нагрузку из службы приложений, сохраняя уведомления перед асинхронной обработкой экземпляром приложения-функции.
  • Шлюз приложений Azure, которая предоставляет возможности веб-безопасности и маршрутизации.
  • Служба уведомлений Microsoft Graph, которая управляет подписками на уведомления и предоставляет клиентам уведомления об изменениях.

Рекомендации

Использование этого шаблона интеграции поддерживается следующими рекомендациями.

  • Доступность. Microsoft Graph вызывает веб-перехватчик клиента при публикации нового сообщения в общем канале или чате. Веб-перехватчик должен иметь высокий уровень доступности в течение дня или даже в течение 24 часов.

  • Задержка. Веб-перехватчик должен подтвердить запросы уведомлений Microsoft Graph в течение трех секунд. Если Microsoft Graph не получает код класса 200 в течение этого времени, он повторно отправляет уведомление об изменении несколько раз в течение четырех часов.

  • Масштабируемость. Клиентский веб-перехватчик должен иметь возможность масштабирования для большого объема уведомлений в любое время суток. Это можно сделать путем добавления дополнительных экземпляров в службу приложений и создания экземпляров приложения-функции для быстрого обновления целевой службы.

  • Сложность решения. Для решения веб-перехватчика также требуется пользовательский код для обслуживания подписок и ключи шифрования для обработки данных. Это решение является очень сложным из-за количества задействованных компонентов и требований к масштабируемости и доступности.