Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В Windows Communication Foundation (WCF) экспорт метаданных — это процесс описания конечных точек службы и проецирования их в параллельно стандартизированное представление, которое клиенты могут использовать для понимания использования службы. Импорт метаданных службы — это процесс создания ServiceEndpoint экземпляров или частей из метаданных службы.
Экспорт метаданных
Чтобы экспортировать метаданные из System.ServiceModel.Description.ServiceEndpoint экземпляров, используйте реализацию абстрактного MetadataExporter класса. Тип WsdlExporter — это реализация абстрактного класса, включенного MetadataExporter в WCF.
Тип System.ServiceModel.Description.WsdlExporter создает метаданные языка описания веб-служб (WSDL) с вложенными выражениями политики, инкапсулированными в экземпляре MetadataSet . Вы можете использовать экземпляр System.ServiceModel.Description.WsdlExporter для итеративного экспорта метаданных для объектов ContractDescription и ServiceEndpoint. Вы также можете экспортировать коллекцию ServiceEndpoint объектов и связать их с определенным именем службы.
Замечание
Вы можете использовать WsdlExporter для экспорта метаданных только из экземпляров ContractDescription, содержащих сведения о типе среды CLR, например экземпляр ContractDescription, созданный с помощью метода ContractDescription.GetContract или как часть ServiceDescription для ServiceHost экземпляра. Нельзя использовать WsdlExporter для экспорта метаданных из экземпляров, импортированных из ContractDescription метаданных службы или созданных без сведений о типе.
Импорт метаданных
Импорт документов WSDL
Чтобы импортировать метаданные службы в WCF, используйте реализацию абстрактного MetadataImporter класса. Тип System.ServiceModel.Description.WsdlImporter — это реализация абстрактного класса, включенного MetadataImporter в WCF. Тип WsdlImporter импортирует метаданные WSDL с присоединенными политиками, упакованными в MetadataSet объект.
Тип WsdlImporter позволяет управлять импортом метаданных. Вы можете импортировать все конечные точки, все привязки или все контракты. Вы можете импортировать все конечные точки, связанные с определенной службой WSDL, привязкой или типом порта. Можно также импортировать конечную точку для определенного порта WSDL, привязку для определенной привязки WSDL, или контракт для определенного типа порта WSDL.
Кроме того, WsdlImporter имеет свойство KnownContracts, позволяющее указать набор контрактов, которые не нужно импортировать. Контракты в свойстве WsdlImporter используются вместо импорта контракта KnownContracts с тем же полным именем из метаданных.
Импорт политик
Тип WsdlImporter собирает выражения политики, присоединенные к субъектам политики сообщения, операции и конечной точки, а затем использует реализации IPolicyImportExtension в коллекции PolicyImportExtensions для импорта выражений политики.
Логика импорта политики автоматически обрабатывает ссылки на выражения политики в том же документе WSDL и идентифицируется с атрибутом wsu:Id или xml:id. Логика импорта политики защищает приложения от циклических ссылок политики путем ограничения размера выражения политики до 4096 узлов, где узел является одним из следующих элементов: wsp:Policy, wsp:All, wsp:ExactlyOne. wsp:policyReference
Логика импорта политики также автоматически нормализует выражения политики. Вложенные выражения политики и wsp:Optional атрибут не нормализуются. Объем обработки нормализации ограничен 4096 шагами, где каждый шаг выдает утверждение политики или дочерний элемент элемента wsp:ExactlyOne .
Тип WsdlImporter пытается выполнить до 32 сочетаний вариантов политики, прикрепленных к различным субъектам политики WSDL. Если ни одно сочетание не импортируется без ошибок, первая комбинация используется для создания частичной пользовательской привязки.
Обработка ошибок
Оба типа, MetadataExporter и MetadataImporter, предоставляют Errors свойство, которое может содержать коллекцию сообщений об ошибках и предупреждениях, встречаемых во время процессов экспорта и импорта, соответственно, которые можно использовать при реализации средств.
Тип WsdlImporter обычно выбрасывает исключение при возникновении исключения во время процесса импорта и добавляет соответствующую ошибку в свойство типа Errors.
ImportAllContracts, ImportAllBindings, ImportAllEndpoints и ImportEndpoints методы, однако, не вызывают эти исключения, поэтому необходимо проверить свойство Errors, чтобы определить, возникли ли какие-либо проблемы при вызове этих методов.
Тип WsdlExporter повторно выбрасывает любые исключения, пойманные во время процесса экспорта. Эти исключения не регистрируются как ошибки в свойстве Errors .
WsdlExporter После возникновения исключения он находится в состоянии сбоя и не может быть повторно использован. Компонент WsdlExporter добавляет предупреждения в свойство Errors, если операция не может быть экспортирована, например, когда она использует операции с шаблонами и когда обнаруживаются повторяющиеся имена привязки.
В этом разделе
Практическое руководство. Импорт метаданных в конечные точки службы Описывает импорт скачанных метаданных в объекты описания.
Практическое руководство. Экспорт метаданных из конечных точек службы Описывает экспорт объектов описания в метаданные.
Справочник по ServiceDescription и WSDL Описывает сопоставление между объектами описания и WSDL.
Практическое руководство. Использование Svcutil.exe для экспорта метаданных из скомпилированного кода службы Описывает использование Svcutil.exe для экспорта метаданных для служб, контрактов и типов данных в скомпилированных сборках.
Справочник по схеме контракта данных Описывает подмножество схемы XML (XSD), используемое DataContractSerializer для описания типов CLR для сериализации XML.