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


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

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

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

Общие сведения

При публикации метаданных с использованием System.ServiceModel.Description.ServiceMetadataBehavior производится проверка System.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 в субъектах сообщения, операции или конечной точки.

Дополнительные сведения см. в разделе Как экспортировать утверждения пользовательской политики.

См. также

Задачи

Как экспортировать пользовательскую информацию WSDL
Как экспортировать утверждения пользовательской политики

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

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