Управление версиями службы данных (службы WCF Data Services)

Протокол Open Data Protocol (OData) позволяет создавать службы данных, чтобы клиенты могли получить доступ к данным как к ресурсам с помощью идентификаторов URI, которые основаны на модели данных. OData также поддерживает определение операций службы. После начального развертывания и, возможно, несколько раз в течение всего времени существования эти службы данных приходится изменять по различным причинам, например в силу меняющихся потребностей бизнеса, требований информационной технологии или иных проблем. При внесении изменений в существующую службу данных необходимо принять решение, следует ли определить новую версию службы данных и как оптимальным способом свести к минимуму воздействие на существующие клиентские приложения. Этот раздел содержит указания о том, когда и как следует создавать новую версию службы данных. В нем также описывается, как Службы WCF Data Services обслуживает обмен между клиентами и службами данных, которые поддерживают разные версии протокола OData.

Управление версиями службы данных WCF

После того как служба данных развернута и данные получены, изменения в службе данных могут стать причиной несовместимости с существующими клиентскими приложениями. Однако, поскольку изменения часто обусловлены общими бизнес-потребностями службы, необходимо решить, когда и как создать новую версию службы данных с минимальным воздействием на клиентские приложения.

Изменения в модели данных, при внесении которых рекомендуется перейти на новую версию службы данных

При рассмотрении вопроса о необходимости публиковать новую версию службы данных важно понимать, как различные изменения могут повлиять на клиентские приложения. Изменения в службе данных, которые могут привести к необходимости создать новую версию службы данных, можно разделить на следующие две категории.

  • Изменения в контракте службы, которые включают обновления операций службы, изменения в доступности наборов сущностей (каналы), изменения версии и другие изменения поведения службы.

  • Изменения в контракте данных, которые включают изменения в модели данных, форматах каналов или настройках каналов.

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

Тип изменения

Требует новой версии

Новая версия не нужна

Операции службы

  • Добавление нового параметра

  • Изменение типа возвращаемого значения

  • Удаление операции службы

  • Удаление существующих параметров

  • Добавление новой операции службы

Поведение службы

  • Отключение запросов счетчиков

  • Отключение поддержки проекции

  • Увеличение требуемой версии службы данных

  • Включение запросов счетчиков

  • Включение поддержки проекции

  • Уменьшение требуемой версии службы данных

Разрешения набора сущностей

  • Ограничение разрешений набора сущностей

  • Изменение кода ответа (новое значение первой цифры) 1

  • Смягчение разрешений набора сущностей

  • Изменение кода ответа (то же, что и для значения первой цифры)

Свойства сущности

  • Удаление существующего свойства или связь

  • Добавление свойства, не допускающего значения null

  • Изменение существующего свойства

  • Добавление свойства, допускающего значение null2

Наборы сущностей

  • Удаление набора сущностей

  • Добавление производного типа

  • Изменение базового типа

  • Добавление набора сущностей

Настройка канала

  • Изменение сопоставления «сущность-свойство»

1 Это может зависеть от строгости обработки полученного конкретного кода ошибки клиентским приложением.

2 Вы можете назначить свойству IgnoreMissingProperties значение true, чтобы клиент игнорировал любые новые свойства, отправленные службой данных и не определенные на клиенте. Однако при выполнении вставок свойствам, не включенным клиентом в запрос POST, назначаются значения по умолчанию. Для обновлений все данные, существующие в неизвестном клиенту свойстве, могут быть перезаписаны значениями по умолчанию. В этом случае следует отправить обновление как запрос MERGE, который используется по умолчанию. Дополнительные сведения см. в разделе Управление контекстом службы данных (службы WCF Data Services).

Управление версиями службы данных

При необходимости новая версия службы данных определяется путем создания нового экземпляра службы с обновленным контрактом службы или моделью данных. Затем новая служба предоставляется с использованием новой конечной точки URI, в чем заключается отличие от предыдущей версии. Пример.

При обновлении службы данных необходимо также обновить клиенты на основе новых метаданных службы данных и использовать новый корневой URI. Если возможно, следует сохранить предыдущую версию службы данных для поддержки клиентов, которые еще не обновлены для работы с новой версией. Более старые версии службы данных можно удалить, если они более не требуются. Следует рассмотреть вопрос о сохранении конечной точки URI службы данных во внешнем файле конфигурации.

Версии протокола OData

По мере выпуска новых версий OData может оказаться, что клиентские приложения не могут использовать версию протокола OData, поддерживаемую службой данных. Старое клиентское приложение может получить доступ к службе данных, поддерживающей новую версию OData. Кроме того, возможно, клиентское приложение может использовать новую версию клиентской библиотеки Службы WCF Data Services, которая поддерживает более новую версию OData, чем служба данных, к которой осуществляется доступ.

Службы Службы WCF Data Services используют поддержку обработки таких сценариев управления версиями в OData. Имеется также поддержка создания и использования метаданных модели данных для создания классов клиентской службы данных, если клиент использует версию служб OData, отличную от версии, которую использует служба данных. Дополнительные сведения см. в разделе OData: Управление версиями.

Согласование версий

Служба данных может быть настроена для определения наибольшей версии протокола OData, который будет использоваться службой, независимо от версии, запрошенной клиентом. Это вы можете сделать, задав значение DataServiceProtocolVersion для свойства MaxProtocolVersion объекта DataServiceBehavior, используемого службой данных. Дополнительные сведения см. в разделе Настройка службы данных (службы WCF Data Services).

Если приложение использует клиентские библиотеки служб Службы WCF Data Services для доступа к службе данных, библиотеки автоматически устанавливают правильные значения для этих заголовков, в зависимости от версии служб OData и компонентов, используемых в приложении. По умолчанию службы Службы WCF Data Services используют самую раннюю версию протокола, поддерживающую запрошенную операцию.

В следующей таблице описаны версии .NET Framework и Silverlight, которые включают в себя поддержку Службы WCF Data Services для определенных версий протокола OData.

Версия протокола OData

Поддержка введена в...

Версия 1

  • .NET Framework, версия 3.5 с пакетом обновления 1 (SP1)

  • Silverlight, версия 3

Версия 2

  • .NET Framework, версия 4

  • Обновление для .NET Framework, версия 3.5 с пакетом обновления 1 (SP1). Загрузить и установить это обновление вы можете в центре загрузки Майкрософт.

  • Silverlight, версия 4

Версия 3

Версии метаданных

По умолчанию службы Службы WCF Data Services для представления модели данных используют язык CSDL версии 1.1. Это всегда справедливо для моделей данных, основанных на поставщике отражения или на специализированном поставщике служб данных. Но если модель данных определена с помощью платформы Entity Framework, возвращаемая версия языка CSDL та же, что и версия, используемая платформой Entity Framework. Версия языка CSDL определяется пространством имен элемента Schema. Дополнительные сведения см. в разделе Спецификация [MC-CSDL]: формат файла определения концептуальной схемы.

Элемент DataServices возвращаемых метаданных содержит также атрибут DataServiceVersion, имеющий то же значение, что и заголовок DataServiceVersion в ответном сообщении. Клиентские приложения, такие как диалоговое окно Добавление ссылки на службу в Visual Studio, используют эти данные для формирования классов клиентской службы данных, правильно работающих с версией служб Службы WCF Data Services, в которых размещается служба данных. Дополнительные сведения см. в разделе OData: Управление версиями.

См. также

Основные понятия

Поставщики службы данных (WCF Data Services)

Другие ресурсы

Служба данных (WCF Data Services)