Средство компилятора веб-служб
Для поддержки модели службы wsutil.exe создает заголовок, используемый как на стороне клиента, так и в службе. При необходимости он создает прокси-файл C для клиентской стороны и заглушки C для стороны службы.
Для поддержки сериализациикомпилятор создает заголовки для описания элементов для глобальных определений элементов и все сведения об определении типов в прокси-файле, которые будут использоваться подсистемой сериализации.
Употребление
WsUtil.exe [command-line-switchs [switch-options]:]<имя файла>
параметры командной строки
Задает параметры компилятора WsUtil.exe. Переключатели могут отображаться в любом порядке. Дефис ('-') и косая черта ('/) рассматриваются как те же.
Список параметров командной строки
- @filename Указывает, что входной файл должен рассматриваться как файл ответа. Этот параметр можно использовать несколько раз в любом месте в списке аргументов.
- /wsdl:<имя файла>:<optional_url> Указывает, что входной файл должен рассматриваться как wsdl-файл. Разрешено несколько входных данных wsdl, и обрабатываются все указанные wsdl-файлы. В optional_url указывается расположение, из которого извлекаются метаданные. Если optional_url не указан, Wsutil создает уникальный URL-адрес внутри. См. также поддержку политик.
- /xsd:<имя файла> Указывает, что входное имя файла должно рассматриваться как файл схемы. Разрешено несколько входных данных xsd, и обрабатываются все указанные файлы схемы.
- /wsp:<имя файла>:<optional_url> Указывает, что входное имя файла должно рассматриваться как метаданные политики. Разрешено несколько входных данных wsp и обрабатываются все указанные файлы политики. В optional_url указывается расположение, из которого извлекаются метаданные. Если optional_url не указан, Wsutil создает уникальный URL-адрес внутри. Файлы политики игнорируются, если указан флаг /nopolicy. См. также поддержку политик.
- /nopolicy Disable policy processing.
- /out:<имя dirname> Указывает имя каталога для выходных файлов
- /noclient Не создавайте заглушку на стороне клиента.
- /noservice Не создавайте заглушку на стороне службы.
- /prefix:<строке> указанную строку перед всеми созданными идентификаторами.
- /fullname Prepend нормализованное имя файла для созданных идентификаторов. По умолчанию для создания идентификаторов связанных описаний будет использоваться только имя, указанное в атрибуте name.
- /string:<WS_STRING>|<WCHAR*> По умолчанию wsutil создает WCHAR* для типа xsd:string. Приложение может использовать этот флаг для перезаписи этого поведения и создания WS_STRING для xsd:type.
- /help Display help message
- /? То же, что и /help
- Параметры обработки ошибок /W:x. Может быть W:0-W:4 | WX
- /nologo Не создавайте определенные сведения компилятора в выходных данных консоли.
- /nostamp не создает определенные сведения компилятора о созданных файлах.
По умолчанию компилятор создает следующие файлы для WSDL-файла или WSDL, возвращаемого из обмена метаданными:
Прокси-сервер клиента ({inputfilename}.c)
Заглушка службы ({inputfilename}.c)
Файл заголовка ({inputfilename}.h)
Корнем созданного имени файла является имя входного файла. Исходные расширения входных файлов сохраняются, чтобы предотвратить столкновение имен файлов для созданных файлов. По умолчанию заглушки клиента и службы создаются в том же файле с кодом заглушки службы, созданной после прокси-кода.
По умолчанию компилятор создает следующие файлы для XSD-файла для схемы, возвращаемой из обмена метаданными:
описания сериализации ({inputfilename}.c)
Файл заголовка ({inputfilename}.h)
Корнем имени файла является имя службы.
Wsutil.exe создает раздел "метка" в начале всех созданных файлов, указывающий параметр компилятора, версию средства, вариант командной строки и т. д. Этот раздел можно отключить с помощью параметра /nostamp, чтобы избежать шума при сравнении созданных файлов.
Wsutil не поддерживает скачивание метаданных
Компилятор Wsutil работает только из локального файла метаданных. Средство не поддерживает скачивание метаданных из запуска веб-служб. Разработчики могут использовать другие поддерживаемые средства веб-службы, такие как svcutil, для скачивания метаданных на локальный компьютер, проверки сохраненных файлов и передачи этих файлов в wsutil.exe для компиляции.
Поддержка нескольких входных и выходных файлов
Схема WSDL и XML позволяет включать и импортировать определения из других пространств имен, указанных в других расположениях и файлах. Wsutil поддерживает несколько входных данных схемы/wsdl/policy и создает один набор заглушки/заголовка для каждого входного файла. Wsutil не выполняет инструкции включения и импорта. Вместо этого приложение должно передавать файлы, содержащие все необходимые пространства имен для wsutil, таким образом, что средство может разрешать все зависимости во время компиляции.
WsUtil.exe /xsd:stockquote.xsd /wsdl:stockquote.wsdl /wsdl:stockquoteservice.wsdl
wsutil создает три набора выходных файлов:
- stockquote.xsd.c stockquote.xsd.h
- stockquote.wsdl.c stockquote.wsdl.h
- stockquoteservice.wsdl.h stockquoteservices.wsdl.c
Формат выходного файла
Для каждого выходного файла wsutil создает внешние доступные определения в файле заголовка. Кроме определений структуры C и прототипов заглушки, все остальные определения, связанные с веб-службами, инкапсулируются в глобальной структуре с нормализованным именем файла.
typedef struct _stockquote_wsdl {
struct {
... // list of WS_STRUCT_DESCRIPTION for all global complex types.
} globalTypes;
struct {
... // WS_ELEMENT_DESCRIPTION for all global elements.
} globalElements;
struct {
...
} messages;
struct {
...
} contracts;
} _stockquote_wsdl;
EXTERN_C _stockquote_wsdl stockquote_wsdl;
Обратите внимание, что не все поля создаются для глобальной структуры. Поле верхнего уровня создается только в том случае, если в входном файле указаны связанные определения. Например, поля сообщений, операций и контрактов не создаются для xsd-файлов.
Уровни предупреждений и уровень ошибок
Как и компилятор C, WsUtil.exe поддерживает четыре уровня предупреждений и один уровень ошибки:
- WsUtil.exe создает ошибки с неустранимыми сбоями, такими как недопустимый wsdl-файл, недопустимые параметры компилятора и т. д.
- WsUtil создает предупреждения W1 с серьезными проблемами, которые можно восстановить. Компилятор может продолжаться, но пользователь должен знать о проблеме. Например, предупреждение W1 будет создано, если существуют неподдерживаемые атрибуты, например некоторые аспекты WSDL, в wsdl, которые не влияют на создание кода.
- WsUtil создает предупреждения W2 с менее серьезными проблемами. Нет потери функциональных возможностей, но разработчик приложений может знать, что. Как и поведение, которое может отличаться от других платформ.
- WsUtil создает предупреждения W3 с минимальным воздействием на созданный код. Например, wsutil.exe создает предупреждение W3, если нормализованная строка отличается от исходной строки.
- Предупреждение W4 больше похоже на "информационные" предупреждения, и WsUtil проблема W4 в случаях, таких как игнорировать атрибут документации в WSDL.
- WX указывает, что компилятор обрабатывает предупреждение как ошибку. Например, wsutil создает ошибку для всех предупреждений W1 при указании /W:1 /WX.
/W:{N} указывает, какой уровень предупреждения следует создать. /W:1 означает, что предупреждения уровня 1 должны быть созданы, а предупреждения уровня предупреждения 2 и ниже должны быть маскированы и не создаются средством.
/fullname
Этот параметр указывает, что WsUtil.exe создает полное имя идентификаторов, чтобы избежать потенциального столкновения имен. Например, в примере xsd у нас есть:
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://Example.org"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" targetNamespace="http://Example.org"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xs:element name="SimpleStruct">
<xs:complexType>
<xs:sequence>
<xs:element name="a" type="xs:int" />
<xs:element name="b" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</wsdl:types>
</wsdl:definitions>
По умолчанию WsUtil.exe создает:
typedef struct SimpleStruct {
int a;
int b;
};
Но если указан параметр командной строки /fullname, WsUtil.exe создает следующее определение структуры.
typedef struct exmaple_xsd_SimpleStruct {
int a;
int b;
};
Глобализация
Средство является нейтральным языком и может быть локализовано на разных языках. Все сообщения об ошибках или выходные данные консоли могут быть локализованы. Однако параметры командной строки остаются на английском языке.
Переменная среды
WsUtil.exe не использует переменные среды.
Независимое от платформы
Выходные файлы из WsUtil.exe являются независимыми от платформы. В заглушку не создается зависимый от архитектуры код; все, что зависит от архитектуры, будет заботиться компилятор C. Заглушки можно использовать во всех поддерживаемых платформах.
Описание выходных данных wsutil.exe можно найти в поддержке WSDL и поддержке схемы части.