とりあえずWebサービス記述言語ツールとやらを使ってみる

お客さんからメールでWSDLが2セット送られてきた。このWSDLで問題ないか確認してほしいとのこと。
1セットの構成は
WSDL (Web Service Description Language)
XSD (XML Schema File)
の2ファイル。
それとはぐれXSDファイル1つで合計5ファイル。

XSDがさっぱりわからない。なんですかこのファイルは?
私がいつも作るSOAPサービスはWSDLファイルしかないのだが。以前、私がVisual Studio 2005で作ったウェブサービスWSDLを確認してもXSDなんてものは存在しない。

今回、送られてきたWSDLテキストエディタで確認すると以下のようなXSDを指定する部分があった。
送られてきたhoge1.wsdlの一部





テキストエディタで見てみると、WSDLファイルではメソッドの一覧風定義、XSDファイルではメソッドや型の詳細を定義しているっぽい。

とりあえずXSDをググってみる。
ZDNet Japanの答え

.xsdとは、XSDスキーマファイルにつく拡張子である。

・・・説明が1行だけ?

他も似たり寄ったりの記述。XSDについてはさっぱりわからない。


よくわからないが、とりあえず、MSの未知なるテクノロジーで作られた「Webサービス記述言語ツール」のwsdl.exeにもらったWSDLファイルを読ませてみることにする。
wsdl.exeに'/server'または'/serverInterface'のオプションを付けるとASP.NETウェブサービスのインタフェースとなるクラスを生成してくれるらしいのである。

さっそく2つのWSDLファイルで試してみた。
まず、「Visual Studio 2005 コマンドプロンプト」を起動する。

Setting environment for using Microsoft Visual Studio 2005 x86 tools.

C:\Program Files\Microsoft Visual Studio 8\VC>

カレントディレクトリをWSDL一式を置いたディレクトリに移動してwsdl.exeを起動してみる。

C:\temp>wsdl.exe /serverInterface hoge1.wsdl
Microsoft (R) Web Services Description Language Utility
[Microsoft (R) .NET Framework, Version 2.0.50727.42]
Copyright (C) Microsoft Corporation. All rights reserved.
警告: この Web 参照は、WS-I Basic Profile v1.1 に準拠していません。
R2028, R2029: http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd および http://schemas.xmlsoap.org/wsdl/soap/2003-02-11.xsd にある XML Schemas に従って、WSDL名前空間および WSDL SOAP バインディング名前空間を使用する説明を有効にする必要があります。
- 警告: 'location' 属性は無効です。値 'http://...' はデータ型 'http://www.w3.org/2001/XMLSchema:anyURI' に対して無効です。文字列 'http://...'Uri の有効な値ではありません。 行 136、位置 18。>

WS-I Basic Profile v1.1 の詳細については、http://www.ws-i.org/Profiles/BasicProfile-1.1.htmlの仕様を参照してください。

ファイル 'C:\temp\hoge1ServiceInterfaces.cs' に書き込んでいます。

C:\temp>wsdl.exe /serverInterface hoge2.wsdl
Microsoft (R) Web Services Description Language Utility
[Microsoft (R) .NET Framework, Version 2.0.50727.42]
Copyright (C) Microsoft Corporation. All rights reserved.
警告: この Web 参照は、WS-I Basic Profile v1.1 に準拠していません。
R2028, R2029: http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd および http://schemas.xmlsoap.org/wsdl/soap/2003-02-11.xsd にある XML Schemas に従って、WSDL名前空間および WSDL SOAP バインディング名前空間を使用する説明を有効にする必要があります。
- 警告: 'location' 属性は無効です。値 'http://...' はデータ型 'http://www.w3.org/2001/XMLSchema:anyURI' に対して無効です。文字列 'http://...'Uri の有効な値ではありません。 行 117、位置 18。>

WS-I Basic Profile v1.1 の詳細については、http://www.ws-i.org/Profiles/BasicProfile-1.1.htmlの仕様を参照してください。
ファイル 'C:\temp\hoge2ServiceInterfaces.cs' に書き込んでいます。

おー!?
警告が出ているが、WSDLに書かれたサービスのアドレスがダミーで無効な文字列だから出ていると思われる。

早速、ソースコードを見てみる。

クラス名、変数名が日本語である。これで良いのか!?
さっぱりわからない(笑)