Web サービス コンパイラ ツール

サービス モデルをサポートするために、wsutil.exeはクライアント側とサービス側の両方で使用されるヘッダーを生成します。 必要に応じて、クライアント側の C プロキシ ファイルとサービス側の C スタブ ファイルが生成されます。

シリアル化をサポートするために、コンパイラはグローバル要素定義の要素説明のヘッダーと、シリアル化エンジンによって使用されるプロキシ ファイル内のすべての型定義情報を生成します。

使用

WsUtil.exe [コマンド ライン スイッチ [switch-options]:]<filename>

command-line-switches

コンパイラ オプションWsUtil.exe指定します。 スイッチは任意の順序で表示できます。 ダッシュ ('-') とスラッシュ ('/') は同じとして扱われます。

コマンド ライン オプションの一覧

  • @filename 入力ファイルを応答ファイルとして扱う必要があることを指定します。 このオプションは、引数リスト内の任意の場所で複数回使用できます。
  • /wsdl:<filename>:<optional_url> 入力ファイルを wsdl ファイルとして扱う必要があることを指定します。 複数の wsdl 入力が許可され、指定されたすべての wsdl ファイルが処理されます。 optional_urlは、メタデータの取得元の場所を指定します。 optional_urlが指定されていない場合、Wsutil は内部的に一意の URL を生成します。 「ポリシーのサポート」も参照してください。
  • /xsd:<filename> 入力ファイル名をスキーマ ファイルとして扱う必要があることを指定します。 複数の xsd 入力が許可され、指定されたすべてのスキーマ ファイルが処理されます。
  • /wsp:<filename>:<optional_url> 入力ファイル名をポリシー メタデータとして扱う必要があることを指定します。 複数の wsp 入力が許可され、指定されたすべてのポリシー ファイルが処理されます。 optional_urlは、メタデータの取得元の場所を指定します。 optional_urlが指定されていない場合、Wsutil は内部的に一意の URL を生成します。 /nopolicy フラグが指定されている場合、ポリシー ファイルは無視されます。 「ポリシーのサポート」も参照してください。
  • /nopolicy ポリシー処理を無効にします。
  • /out:<dirname> 出力ファイルのディレクトリ名を指定します
  • /noclient クライアント側スタブを生成しません。
  • /noservice サービス側スタブを生成しません。
  • /prefix:<string> 指定された文字列を生成されたすべての識別子に付加します。
  • /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 サービスからのメタデータのダウンロードはサポートされていません。 開発者は、svcutil などのサポートされている他の Web サービス ツールを使用して、メタデータをローカル コンピューターにダウンロードし、保存されたファイルを検査し、それらのファイルをコンパイルのために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 警告は "informational" 警告に似ています。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 サポート 」および 「スキーマ サポート パーツ」を参照してください。