Exchange Web Services
Exchange Web Services (EWS) — это программный интерфейс приложения (API), разработанный компанией Microsoft для взаимодействия с сервером Microsoft Exchange Server. EWS обеспечивает программный доступ к почтовым ящикам, календарям, контактам, задачам и другим элементам, хранящимся на сервере Exchange, позволяя разработчикам создавать клиентские приложения, веб-сервисы и интеграционные решения для работы с корпоративной электронной почтой и совместной работы. Протокол обмена данными в EWS основан на технологии веб-служб: запросы и ответы отправляются в формате SOAP (Simple Object Access Protocol) по протоколам HTTP или HTTPS.
История
Предшественники и появление
До появления EWS доступ к данным Exchange осуществлялся через проприетарные протоколы, такие как MAPI (Messaging API) и WebDAV (Web Distributed Authoring and Versioning). MAPI, используемый в клиенте Microsoft Outlook, был сложен для сторонних разработчиков и требовал установки дополнительных компонентов на клиентской машине. WebDAV, доступный в Exchange Server 2000/2003, был более открытым, но имел ограниченные возможности и не обеспечивал полного доступа ко всем функциям Exchange.
EWS был впервые представлен в 2007 году вместе с выпуском Microsoft Exchange Server 2007 и клиентской версией Microsoft Office Outlook 2007. Изначально он позиционировался как замена как MAPI, так и WebDAV, предоставляя единый, более гибкий и масштабируемый интерфейс для удаленного доступа к серверу.
Развитие и версии
После выхода Exchange 2007 API активно развивался. В Exchange 2010 EWS был существенно расширен: появилась поддержка работы с личными архивами, календарями и задачами, улучшена обработка ошибок. Версия Exchange 2013 значительно упростила модель аутентификации и повысила производительность за счёт оптимизации транспортного уровня.
Ключевой вехой стало введение в Exchange 2013 Managed API — набора библиотек .NET, который упрощал разработку клиентов на C# и VB.NET, скрывая сложность SOAP-вызовов. Этот API долгое время оставался стандартом для интеграции с Exchange в среде Windows.
Статус и закат эпохи
С середины 2010-х годов компания Microsoft начала постепенное смещение акцента с EWS на свой облачный продукт — Microsoft Graph. Графический API (Graph API) является современной RESTful-альтернативой, объединяющей доступ к данным Exchange, SharePoint (организация признана нежелательной в РФ), OneDrive, Azure AD и другим сервисам Microsoft 365.
С выходом Exchange Online (часть Microsoft 365) и появлением Microsoft Graph, поддержка EWS в облачном сервисе была сохранена, но Microsoft официально объявила, что больше не вкладывает ресурсы в развитие EWS. С 1 октября 2022 года все новые возможности, связанные с почтой, календарями и контактами, в Exchange Online реализуются исключительно через Graph API. EWS для Exchange Online стал «унаследованным» API, который можно использовать, но на который не стоит рассчитывать при создании новых решений. В локальных версиях Exchange Server (начиная с Exchange 2019) EWS остаётся основным API для клиентского доступа, но его возможности не расширяются.
Архитектура и протокол
EWS использует модель «запрос-ответ», в которой клиент отправляет SOAP-запрос на сервер, а сервер возвращает SOAP-ответ. Обмен сообщениями происходит по протоколу HTTPS. Операции инкапсулируются в виде веб-методов, таких как CreateItem (создание письма или встречи), FindItem (поиск элементов), GetItem (получение конкретного элемента), UpdateItem (обновление) и DeleteItem (удаление).
Адреса точек доступа (endpoints) для EWS обычно имеют вид: https://[сервер]/EWS/Exchange.asmxhttps://outlook.office365.com/EWS/Exchange.asmx (для облачного Exchange Online). Аутентификация клиента осуществляется с помощью Basic-аутентификации (логин/пароль), NTLM, OAuth 2.0 (начиная с Exchange 2013/Online) или современного сертификата. (для локального Exchange Server) или
Основные транспортные протоколы, поддерживаемые EWS:
- SOAP over HTTP/HTTPS — основной метод.
- SOAP over TCP — использовался в ранних версиях для уменьшения накладных расходов, но в настоящее время не поддерживается.
- Direct Push — технология, позволяющая мобильным устройствам (Windows Phone) получать push-уведомления о новых письмах без постоянного опроса сервера.
Типы данных и поддерживаемые объекты
EWS предоставляет доступ к большинству типов элементов, хранящихся в почтовом ящике Exchange:
- Почтовые сообщения (MailItem) — работа с папками «Входящие», «Отправленные», «Черновики» и т.д.
- Встречи (AppointmentItem) — создание, изменение, отмена событий календаря.
- Собрания (MeetingItem) — управление приглашениями и ответами на собрания.
- Контакты (ContactItem) — управление персональными и глобальными контактами (GalContact).
- Задачи (TaskItem) — создание и отслеживание выполнения задач.
- Заметки (NoteItem) — поддержка текстовых заметок.
- Журналы (JournalItem) — ведение журнала действий.
- Папки и группы папок — работа с иерархией папок почтового ящика.
- Пользовательские свойства — возможность расширения схемы данных с помощью настраиваемых полей («user properties»).
- Вложения — работа с файлами, прикреплёнными к элементам.
Схемы аутентификации
- Basic Authentication (устаревшая) — передача логина и пароля в незашифрованном Base64 (требуется HTTPS). Отключена для Exchange Online в схеме по умолчанию с октября 2022 года.
- NTLM — традиционная Windows-аутентификация, используемая в локальных средах.
- OAuth 2.0 — современный стандарт, обеспечивающий делегирование доступа без передачи учётных данных. Рекомендуется корпорацией Microsoft для всех новых интеграций, как с Exchange Online, так и с локальным Exchange Server (начиная с Exchange 2016 CU3).
- Client certificate authentication — аутентификация на основе сертификатов, применяется в сервер-серверных сценариях.
Применение
EWS широко используется для следующих задач:
Автоматизация почтового трафика
Разработчики используют EWS для создания автоматических почтовых рассылок, обработки входящей почты (например, парсинга заявок), интеграции внешних систем (CRM, ERP) с почтовыми ящиками.
Разработка корпоративных клиентов
Несмотря на преобладание Microsoft Outlook, существуют сторонние клиенты, взаимодействующие с Exchange через EWS — например, клиенты на платформах macOS и Linux (Evolution, Thunderbird с расширением Owl).
Архивация и миграция данных
С помощью EWS выполняются задачи резервного копирования, миграции почтовых ящиков между серверами Exchange или в облачные платформы.
Синхронизация мобильных устройств
До появления ActiveSync протокол EWS (через Direct Push) использовался некоторыми мобильными устройствами для синхронизации календарей и почты.
Инструменты разработки и Managed API
Официально корпорация Microsoft предоставляла Managed API для C# (.NET), который значительно упрощал написание кода. Пакет Microsoft.Exchange.WebServices содержит классы, такие как ExchangeService, Folder, Item, Contact, Appointment и т.д.
Начиная с Exchange 2013 и до настоящего времени, основной рекомендуемый инструмент — PowerShell с модулем Exchange Web Services Managed API. Например, для доступа к почтовому ящику через PowerShell можно использовать следующие команды: ```powershell $service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2013_SP1) $service.Credentials = New-Object System.Net.NetworkCredential("user@domain.com", "password") $service.Url = "https://outlook.office365.com/EWS/Exchange.asmx"
$folder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service, [Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox) ``` Для платформ, отличных от .NET (Java, Python, Go), SDK не предоставляется, и разработчикам приходится напрямую формировать SOAP-запросы.
Критика и ограничения
- Сложность SOAP-протокола — SOAP-сообщения объёмны, трудоёмки для ручного разбора и имеют избыточную структуру по сравнению с REST.
- Зависимость от версии Exchange — каждая версия Exchange (2007, 2010, 2013, 2016, 2019) вводила свои версии схемы (
Exchange2007_SP1,Exchange2010_SP2,Exchange2013и т.д.), что требовало от разработчиков явного указания версии и тестирования на разных серверах. - Необходимость аутентификации с правами — для доступа к чужому почтовому ящику через EWS требуются расширенные права (ApplicationImpersonation), что создаёт административную нагрузку.
- Отсутствие поддержки современных сценариев — EWS не поддерживает работу с чатами (Microsoft Teams), файлами (OneDrive/SharePoint) и другими сервисами, которые стали частью современного рабочего пространства.
- Ухудшение позиции в облаке — политика Microsoft направлена на постепенное сворачивание поддержки EWS для Exchange Online, что делает его неперспективным для новых проектов в облачной среде.
Перспективы
Корпорация Microsoft рекомендует всем новым разработкам, ориентированным на Exchange Online, использовать Microsoft Graph API. Для локальных развёртываний (Exchange Server 2019) EWS остаётся основным API, но его развитие заморожено. Существующие интеграции, использующие EWS, могут продолжать работать, однако компания предупреждает, что в будущем может потребоваться их миграция на Graph API, особенно при переходе на облачные решения.
Источники
- Microsoft Docs: «EWS reference for Exchange» (архивированная документация).
- Microsoft Docs: «Comparison of Exchange Web Services and Microsoft Graph».
- TechNet: «Exchange 2013: What's new for EWS».
- MSDN Magazine: «Moving from EWS to Microsoft Graph» (2019).
- Официальный блог Microsoft Exchange Team: «Deprecation of basic authentication in Exchange Online» (2022).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →