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


Экспорт пользовательских метаданных для расширения WCF

В Windows Communication Foundation (WCF) экспорт метаданных — это процесс описания конечных точек службы и их проецирования в параллельно стандартизированное представление, которое клиенты могут использовать для понимания использования службы. Пользовательские метаданные состоят из элементов XML, которые не могут быть экспортированы с помощью средств экспорта метаданных, предоставляемых системой. Обычно сюда входят пользовательские элементы WSDL для определенных пользователем поведений, элементов привязки и утверждений политики о возможностях и требованиях привязок и контрактов.

В этом разделе описано, как экспортировать пользовательские элементы WSDL и утверждения политики, но при этом не рассматривается сам процесс экспорта. Дополнительные сведения об использовании типов, экспортируемых и импортируемых метаданных независимо от того, являются ли метаданные пользовательскими или системными, см. в разделе "Экспорт и импорт метаданных".

Обзор

При публикации метаданных с помощью System.ServiceModel.Description.ServiceMetadataBehaviorSystem.ServiceModel.Description.ServiceDescription функции проверки и XSD и WSDL, включая утверждения политики, создаются для всех контрактов и привязок, которые WCF может поддерживать с помощью системных атрибутов и привязок. Однако для правильного экспорта пользовательских атрибутов поведения или элементов привязки требуется их поддержка.

В данном разделе рассматриваются следующие вопросы.

  1. Реализация и использование интерфейса System.ServiceModel.Description.IWsdlExportExtension, который предоставляет данные создания WSDL перед публикацией WSDL.

  2. Реализация и использование интерфейса System.ServiceModel.Description.IPolicyExportExtension, который предоставляет данные политики для экспорта утверждений политики в данные WSDL.

Дополнительные сведения об импорте пользовательских утверждений WSDL и политик см. в разделе "Импорт пользовательских метаданных" для расширения WCF.

Экспорт пользовательских элементов WSDL

Реализуйте IWsdlExportExtension в поведении операции, поведении контракта, поведении конечной точки или элементе привязки (IOperationBehavior, IContractBehavior, IEndpointBehavior или System.ServiceModel.Channels.BindingElement соответственно) и вставьте эти поведения или элементы привязки в описание службы, которую требуется экспортировать. (Дополнительные сведения о поведении вставки см. в разделе .Настройка и расширение среды выполнения с помощью поведения). Для каждой конечной точки вызывается метод IWsdlExportExtension, и каждая конечная точка сначала экспортирует контракт, если он еще не был экспортирован. Можно принять участие в любом процессе экспорта, в зависимости от потребностей:

Метод ExportContract вызывается для всех реализаций IWsdlExportExtension в экспортируемом экземпляре System.ServiceModel.Description.ContractDescription. Метод ExportEndpoint вызывается для всех реализаций IWsdlExportExtension с экспортируемым экземпляром System.ServiceModel.Description.ServiceEndpoint.

Дополнительные сведения см. в разделе "Практическое руководство. Экспорт пользовательского WSDL и пример пользовательской публикации WSDL".

Экспорт утверждений пользовательской политики

Реализуйте IPolicyExportExtension в BindingElement и добавьте в привязку этот элемент привязки, чтобы записать в WSDL утверждения пользовательской политики о поддержке привязки и возможностях контракта. Метод IPolicyExportExtension вызывается один раз при экспорте реализованного элемента привязки в привязке и передает PolicyConversionContext в метод ExportPolicy. Эти методы можно использовать для экземпляра PolicyConversionContext, чтобы добавить утверждения политики, присоединенные к привязке WSDL в субъектах сообщения, операции или конечной точки.

Дополнительные сведения см. в разделе "Практическое руководство. Экспорт утверждений настраиваемой политики".

См. также