Извлечение метаданных
Извлечение метаданных — это процесс запроса и извлечения метаданных из конечной точки метаданных, например конечной точки метаданных WS-MetadataExchange (MEX) или конечной точки метаданных HTTP/GET.
Извлечение метаданных с помощью программы командной строки Svcutil.exe
Метаданные службы можно извлечь с помощью протокола WS-MetadataExchange и запросов HTTP/GET, воспользовавшись для этого средством Служебное средство ServiceModel Metadata Utility Tool (Svcutil.exe) и передав ему параметр /target:metadata
и адрес. Средство Svcutil.exe загружает метаданные, расположенные по указанному адресу, и сохраняет файл на диске. Средство Svcutil.exe использует внутри себя экземпляр System.ServiceModel.Description.MetadataExchangeClient и загружает из конфигурации конфигурацию конечной точки IMetadataExchange, имя которой соответствует схеме адреса, переданного в качестве входных данных средству Svcutil.exe.
Извлечение метаданных программным образом с помощью класса MetadataExchangeClient
Среда Windows Communication Foundation (WCF) позволяет извлекать метаданные служб с помощью стандартизованных протоколов, например WS-MetadataExchange и запросов HTTP/GET. Оба эти протокола поддерживаются типом MetadataExchangeClient. Чтобы получить метаданные службы с помощью типа System.ServiceModel.Description.MetadataExchangeClient, необходимо указать адрес конечной точки метаданных и необязательную привязку. В роли привязки, используемой экземпляром System.ServiceModel.Description.MetadataExchangeClient, может выступать одна из привязок по умолчанию статического класса MetadataExchangeBindings, предоставляемая пользователем привязка или привязка, загруженная из конфигурации конечной точки для контракта IMetadataExchange. Кроме того, тип System.ServiceModel.Description.MetadataExchangeClient может выполнять разрешение URL-адресов ссылок HTTP на метаданные с помощью типа HttpWebRequest.
По умолчанию экземпляр System.ServiceModel.Description.MetadataExchangeClient связан с одним экземпляром ChannelFactory. Можно изменить или заменить экземпляр System.ServiceModel.ChannelFactory, используемый экземпляром System.ServiceModel.Description.MetadataExchangeClient, переопределив виртуальный метод GetChannelFactory. Аналогично можно изменить или заменить экземпляр HttpWebRequest, используемый экземпляром System.ServiceModel.Description.MetadataExchangeClient для создания запросов HTTP/GET, переопределив виртуальный метод System.ServiceModel.Description.MetadataExchangeClient.GetWebRequest(System.Uri,System.String,System.String).
В этом разделе
- Как использовать Svcutil.exe для загрузки документов метаданных
Загрузка документов метаданных с помощью средства Svcutil.exe.
- Как использовать MetadataResolver для динамического получения метаданных привязки
Получение метаданных привязки динамически во время выполнения с помощью класса System.ServiceModel.Description.MetadataResolver.
- Как использовать MetadataExchangeClient для получения метаданных
Использование класса System.ServiceModel.Description.MetadataExchangeClient для загрузки файлов метаданных в объект System.ServiceModel.Description.MetadataSet, содержащий объекты System.ServiceModel.Description.MetadataSection, для записи в файлы или для других целей.