Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[ПСП] Учебник WCF.docx
Скачиваний:
48
Добавлен:
26.03.2016
Размер:
147.76 Кб
Скачать

Загрузка метаданных

Средство Svcutil.exe можно использовать для загрузки метаданных из работающих служб и сохранения этих метаданных в локальных файлах. Для загрузки метаданных необходимо задать параметр /t:metadata. В противном случае создается код клиента. Для URL-схем HTTP и HTTPS средство Svcutil.exe предпринимает попытку извлечь метаданные с помощью WS-Metadata Exchange и DISCO. Для всех остальных URL-схем Svcutil.exe использует только WS-Metadata Exchange.

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

  • Запрос MEX (WS-Transfer) на предоставленный адрес

  • Запрос MEX на предоставленный адрес с присоединенным /mex

  • Запрос DISCO (с использованием протокола DiscoveryClientProtocol из ASMX) на предоставленный адрес.

По умолчанию для осуществления запросов MEX Svcutil.exe использует привязки, определенные в классе MetadataExchangeBindings. Для настройки привязки, используемой для WS-Metadata Exchange, необходимо определить в конфигурации, использующей контракт IMetadataExchange, конечную точку клиента. Ее можно определить в файле конфигурации средства Svcutil.exe или в другом файле конфигурации, заданном с помощью параметра /svcutilConfig.

svcutil.exe /t:metadata <url>* | <epr>

Аргумент

Описание

url

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

epr

Путь к файлу XML, который содержит ссылку на конечную точку службы WS-Addressing EndpointReference, которая поддерживает WS-Metadata Exchange.

Создание типа XmlSerializer

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

Примечание

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

Svcutil.exe может улучшить производительность при запуске этих приложений путем создания необходимого кода сериализации C# из компилированных сборок для приложения. Дополнительные сведения см. в разделе Как сократить время запуска клиентских приложений WCF с использованием XmlSerializer.

Примечание

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

svcutil.exe /t:xmlSerializer <assemblyPath>*

Аргумент

Описание

assemblyPath

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

Параметр

Описание

/reference:<путь к файлу>

Добавляет заданную сборку в набор сборок, используемых для разрешения ссылок на типы.

Сокращенная форма: /r

/excludeType:<тип>

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

Сокращенная форма: /et

/out:<файл>

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

По умолчанию: наследуется от имени сборки.

Сокращенная форма: /o

/UseSerializerForFaults

Указывает, что вместо сериализатора по умолчанию DataContractSerializerдля чтения и записи ошибок следует использовать сериализатор XmlSerializer.