Версии схемы EWS в Exchange
Узнайте о схеме EWS и о том, как спроектировать приложение для работы с ней, а также о функциях, доступных в каждой версии схемы, и о том, как схема связана с версией службы Exchange.
Схема EWS определяет структуры данных, которые могут быть отправлены и возвращены Exchange. Каждая новая версия Exchange, содержащая значительное изменение функциональных возможностей EWS, будет содержать новую схему. EWS и схема EWS имеют обратную и в некоторых случаях прямую совместимость. Приложения, разработанные на основе более ранних версий EWS, будут работать в большинстве случаев с более поздними версиями EWS, а приложения, предназначенные для более поздних версий EWS, будут работать, если те же функции были включены в более раннюю версию. Эта статья поможет вам понять роль схемы EWS, как работает управление версиями схемы, связь между версией схемы и версией службы, а также как спроектировать приложение для работы со схемой EWS.
Роль схемы EWS
Схема EWS выполняет следующие действия:
Определяет набор функций, доступный клиенту. Клиент может получить список поддерживаемых версий схемы с помощью службы автообнаружения SOAP. Затем клиент может определить, к каким функциям он может получить доступ, так как каждая версия схемы представляет набор функций EWS. Каждая новая схема, выпущенная для EWS, содержит сущности схемы из предыдущей версии, а также определения схемы для любых новых функций. Таким образом, EWS поддерживает приложения, предназначенные для более ранней версии EWS.
Предоставляет общее описание контракта API. Этот контракт можно использовать для определения структур данных, которые можно отправлять и получать из Exchange.
Предоставляет механизм управления версиями для отправки запросов. Сервер Exchange server содержит все поддерживаемые версии схемы EWS в своем виртуальном каталоге.
Проектирование приложения с учетом версии схемы
При проектировании приложения для работы с различными версиями схемы EWS учитывайте следующие моменты:
Включите или выключите функциональные возможности на основе версии схемы. Вы хотите сопоставить функциональность клиента с версией схемы, а в некоторых случаях — с версией службы. В следующем примере возвращается свойство PropertySet на основе версии схемы и службы.
private static PropertySet InitPropertySetByVersion(ExchangeService service) { PropertySet props; // The schema version to target to access the NormalizedBody property // is Exchange2013 or later. The server version to target to access the // NormalizedBody property on an email is 15 or later, which // equates to Exchange 2013. if (service.RequestedServerVersion >= ExchangeVersion.Exchange2013 && service.ServerInfo.MajorVersion >= 15) { props = new PropertySet(EmailMessageSchema.NormalizedBody); } else { props = new PropertySet(EmailMessageSchema.Body); } return props; }
Версия запросов с самой ранней версией схемы EWS, которая поддерживает нужные функции. Это сделает ваш клиент применимым к большему числу потенциальных серверов Exchange. Это менее важно, если вы разрабатываете бизнес-приложение, предназначенное только для серверов вашей организации, но очень важно, если вы создаете приложение для более широкой аудитории Exchange.
Функции по версиям схемы
Версии схемы, доступные клиенту, определяются в простом типе ExchangeVersionType , расположенном в схеме types.xsd. ExchangeVersionType реализуется элементом RequestServerVersion. Элемент RequestServerVersion отправляется во всех запросах EWS, чтобы указать серверу, какую версию схемы предназначен клиент. Это, в свою очередь, определяет набор функций, доступный клиенту.
Таблица 1. Функции EWS по продуктам и версиям схемы
Версия продукта | Связанная версия схемы | Компоненты |
---|---|---|
Exchange Online | Последняя версия схемы. | Включает все функции в текущей версии Exchange в дополнение к новым функциям, добавленным для интернет-клиентов. |
Exchange 2013 SP1 | Exchange2013_SP1 | Включает все функции Exchange 2013. В Exchange 2013 с пакетом обновления 1 (SP1) появились следующие функции:
|
Exchange 2013 | Exchange2013 | Включает все функции, представленные в Exchange 2007 и Exchange 2010. В Exchange 2013 появились следующие возможности:
|
Exchange 2010 с пакетом обновления 2 (SP2) | Exchange2010_SP2 | Включает все функции, представленные в Exchange 2010 с пакетом обновления 1 (SP1). В Exchange 2010 с пакетом обновления 2 (SP2) появились следующие функции:
|
Exchange 2010 SP1 | Exchange2010_SP1 | Включает все функции, представленные в Exchange 2010. В Exchange 2010 с пакетом обновления 1 (SP1) появились следующие функции:
|
Exchange 2010 | Exchange2010 | Включает все функции, представленные в Exchange 2007 с пакетом обновления 1 (SP1). В первоначальной версии Exchange 2010 появились следующие функции:
|
Exchange 2007 SP1 | Exchange2007_SP1 | Включает все функции, представленные в Exchange 2007. В Exchange 2007 с пакетом обновления 1 (SP1) появились следующие функции:
|
Exchange 2007 | Exchange2007 | В первоначальной версии Exchange 2007 появились следующие функции:
|
Связь между схемой EWS и версией службы
Версия схемы EWS связана с версией службы EWS, запущенной на сервере. Шаблон именования для схемы EWS связан с локальными версиями Exchange. Например, первоначальный выпуск Exchange 2013 имеет версию службы 15.00.0516.032 и имя схемы Exchange2013. Так как схема была обновлена для Exchange 2013, и Exchange 2013, и Exchange Online с версией службы 15.00.0516.032 и более поздних версий имеют одно и то же имя для последней схемы. В более ранних версиях Exchange схема EWS не обновлялась накопительными обновлениями (ранее назывались накопительными пакетами). Но так как Exchange обновляется чаще для поддержки Exchange Online, накопительные обновления теперь содержат обновления схемы для EWS. Имена файлов схемы и связанные с ними имена версий схемы обновляются только с помощью пакетов обновления или основных выпусков локальной версии Exchange.
Хотя схема EWS определяет контракт, в некоторых сценариях версия службы является единственным способом для клиента определить, как он должен взаимодействовать со службой. Изменения в поведении службы, которые не отражены в схеме, могут определяться только версией службы, возвращенной во всех ответах EWS. Например, когда общедоступные папки были переработаны в Exchange 2013, операции, используемые для перемещения и копирования общедоступных папок, изменились. Если вы разработали клиент для копирования общедоступных папок в Exchange 2010, вам потребуется обновить его, чтобы использовать различные операции, чтобы получить тот же результат в Exchange 2013.
Обновление схемы EWS
Серверы Exchange под управлением версий Exchange, начиная с Exchange 2007, включают схему EWS в виртуальный каталог, в котором размещается служба EWS. Текущая версия схемы всегда представлена файлами types.xsd и messages.xsd. На рисунке 1 показано, как схема messages.xsd создается вилкой при разработке новой версии схемы. Перед добавлением новых функций копия исходной схемы messages.xsd включается и переименовывается для представления предыдущей версии схемы. Затем файл messages.xsd обновляется с описанием службы для новой версии.
Рис. 1. Обновление схемы EWS
Перед обновлением схемы EWS для новой версии текущая версия схемы создается вилкой и переименовывается с помощью следующего соглашения:
<schemaname>-<majorserverversion><servicepack>.xsd
Затем исходное имя файла представляет последнюю схему. Все новые функции добавляются в последнюю схему, за исключением обновлений и исправлений в более ранних версиях схемы.