Web サービス コンパイラ ツール
サービス モデルをサポートするために、wsutil.exe はクライアント側とサービス側の両方で使用されるヘッダーを生成します。 必要に応じて、クライアント側の C プロキシ ファイルとサービス側の C スタブ ファイルが生成されます。
シリアル化をサポートするために、コンパイラはグローバル要素定義の要素記述用のヘッダーと、シリアル化エンジンによって使用されるプロキシ ファイル内のすべての型定義情報を生成します。
使い
WsUtil.exe [コマンド ライン スイッチ [switch-options]:]<ファイル名の>
コマンド ライン スイッチ
コンパイラ オプション WsUtil.exe 指定します。 スイッチは任意の順序で表示できます。 ダッシュ ('-') とスラッシュ ('/') は同じとして扱われます。
コマンド ライン オプションの一覧
- @filename 入力ファイルを応答ファイルとして扱う必要があることを指定します。 このオプションは、引数リスト内の任意の場所で複数回使用できます。
- /wsdl:<filename>:<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 ポリシー処理を無効にします。
- /out:<dirname> 出力ファイルのディレクトリ名を指定します
- /noclient クライアント側のスタブを生成しません。
- /noservice サービス側スタブを生成しません。
- /prefix: 指定した文字列> 生成されたすべての識別子の先頭に文字列を<します。
- /fullname では、正規化されたファイル名を生成された識別子に付加します。 既定では、"name" 属性で指定された名前のみが、関連する説明の識別子の生成に使用されます。
- /string:<WS_STRING>|<WCHAR*> 既定では、wsutil は xsd:string 型に対して WCHAR* を生成します。 アプリケーションでは、このフラグを使用してその動作を上書きし、代わりに xsd:type のWS_STRINGを生成できます。
- /help ヘルプ メッセージを表示する
- /? /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 コンパイラは、ローカル メタデータ ファイルからのみ機能します。 このツールは、実行中の Web サービスからのメタデータのダウンロードをサポートしていません。 開発者は、サポートされている他の Web サービス ツール (svcutil など) を使用して、メタデータをローカル コンピューターにダウンロードし、保存されたファイルを検査し、それらのファイルを wsutil.exe に渡してコンパイルできます。
複数の入出力ファイルのサポート
WSDL および XML スキーマを使用すると、他の場所/ファイルで指定された他の名前空間から定義を含める/インポートできます。 Wsutil は複数のスキーマ/wsdl/policy 入力をサポートし、入力ファイルごとに 1 セットのスタブ/ヘッダーを生成します。 Wsutil は include ステートメントと import ステートメントに従いません。 代わりに、アプリケーションは、コンパイル時にすべての依存関係を解決できるように、必要なすべての名前空間を含むファイルを wsutil に渡す必要があります。
WsUtil.exe /xsd:stockquote.xsd /wsdl:stockquote.wsdl /wsdl:stockquoteservice.wsdl
wsutil は、次の 3 セットの出力ファイルを生成します。
- stockquote.xsd.c stockquote.xsd.h
- stockquote.wsdl.c stockquote.wsdl.h
- stockquoteservice.wsdl.h stockquoteservices.wsdl.c
出力ファイル形式
各出力ファイルについて、wsutil はヘッダー ファイルに外部から使用可能な定義を生成します。 C 構造体定義とスタブ関数プロトタイプ以外の他のすべての Web サービス関連の定義は、正規化されたファイル名で名前付けされたグローバル構造にカプセル化されます。
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 では 4 つの警告レベルと 1 つのエラー レベルがサポートされます。
- WsUtil.exe は、無効な wsdl ファイル、無効なコンパイラ オプションなど、回復不可能なエラーを含むエラーを生成します。
- WsUtil は、重大な回復可能な問題を含む W1 警告を生成します。 コンパイラは先に進むことができますが、ユーザーはこの問題を認識する必要があります。 たとえば、一部の WSDL ファセットのような、コード生成に影響しない WSDL の属性がサポートされていない場合、W1 警告が生成されます。
- WsUtil では、W2 警告が生成され、重大な問題が少なくなります。 機能の損失はありませんが、アプリケーション開発者はそのことを知りたいと思うかもしれません。 他のプラットフォームとは異なる可能性のある動作と同様です。
- WsUtil は、生成されたコードへの影響を最小限に抑えながら W3 警告を生成します。 たとえば、正規化された文字列が元の文字列と異なる場合、wsutil.exe は W3 警告を生成します。
- W4 警告は "情報" 警告に似ています。WSUtil では WSDL のドキュメント属性を無視する場合に W4 が発行されます。
- WX は、コンパイラが警告をエラーとして扱うことを示します。 たとえば、/W:1 /WX が指定されている場合、wsutil はすべての W1 警告に対してエラーを生成します。
/W:{N} では、生成する警告メッセージのレベルを指定します。 /W:1 は、警告レベル 1 の警告を生成し、警告レベル 2 以下の警告をマスクし、ツールで生成しないことを意味します。
/fullname
このオプションは、WsUtil.exe が名前の競合を回避するために識別子の完全な名前を生成することを示します。 たとえば、example.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 のサポート と スキーマサポート パート 参照してください。