Получение обновлений для изменений данных в режиме реального времени с помощью Microsoft Graph
В этой статье описывается распространенный шаблон интеграции Microsoft Graph для бизнес-сценария, который предлагает улучшения совместной работы предприятия для мобильных приложений, чтобы получать веб-канал общих сообщений из Microsoft Teams только для чтения в режиме почти в реальном времени.
Этот сценарий является неинтерактивным вариантом использования, который зависит от изменений данных, вызванных внешними событиями, и имеет следующие требования к архитектуре:
- Тип интеграции данных.
- Исходящий поток данных из границ Microsoft 365 в приложение.
- Низкий объем данных на взаимодействие с пользователем, но потенциально большой объем данных в зависимости от количества пользователей.
- Задержка данных практически в реальном времени для создания актуального веб-канала.
Лучший вариант интеграции для этого сценария — использовать уведомления об изменениях Microsoft Graph, которые могут доставлять уведомления о событиях, а также содержимое общего сообщения и реализовывать веб-перехватчики. Клиентское приложение предоставляет секрет клиента и ключ шифрования, а также предоставляет конечную точку HTTP, в которой служба уведомлений Microsoft Graph публикует изменения. Клиентское приложение может принимать синхронные запросы Microsoft Graph и быстро реагировать на них, а также может масштабироваться для обработки событий, активируемых другими клиентами, создающими сообщения. Этот тип взаимодействия с приложением называется режимом отправки.
На следующей схеме показана архитектура для этого решения.
Компоненты решения
Архитектура решения включает в себя следующие компоненты:
- Служба приложений 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 в течение этого времени, он повторно отправляет уведомление об изменении несколько раз в течение четырех часов.
Масштабируемость. Клиентский веб-перехватчик должен иметь возможность масштабирования для большого объема уведомлений в любое время суток. Это можно сделать путем добавления дополнительных экземпляров в службу приложений и создания экземпляров приложения-функции для быстрого обновления целевой службы.
Сложность решения. Для решения веб-перехватчика также требуется пользовательский код для обслуживания подписок и ключи шифрования для обработки данных. Это решение является очень сложным из-за количества задействованных компонентов и требований к масштабируемости и доступности.