3.2.3 Microsoft .NET Webサービス・クライアントのプログラミング・ツールキット
Microsoft .Net 1.1/2.0は、.Net SDKパッケージでwsdl.exe
を提供しています。これはMicrosoftの無料の開発ツールキットです。SALTのsimpapp
サンプルでは、simpapp/dnetclient
ディレクトリに.Netプログラムが用意されています。
.Net Webサービスのプログラミングはわかりやすくて簡単です。wsdl.exe
ユーティリティとSALTのWSDLドキュメントを使用してスタブ・コードを生成し、スタブ・コードまたはバイナリの中の.Netオブジェクトをビジネス・ロジックの実装で参照します。
ヒント:
- CARRAYに.NetプログラムのMIME添付バインディングを使用しないでください。
MicrosoftはSOAP通信のMIMEバインディングをサポートしていません。.Net開発では、
CARRAY
のMIMEバインディングが指定されたWSDLドキュメントを使用しないでください。SALTは、
CARRAY
データのbase64Binary
エンコーディング(デフォルトのWSDLドキュメントの生成)をサポートしています。 - RPC/encodedスタイルのSOAPメッセージは、GWWSサーバーで認識されないことがあります。
RPC/encodedスタイルでSALTのWSDLドキュメントを生成すると、.Netによって
soapenc:arrayType
を含むSOAPメッセージが送信されます。SALTは、RPC/encodedスタイルでsoapenc:arrayType
をサポートしません。RPC/encodedスタイルで生成されたWSDLドキュメントの例を次に示します:例: RPC/encodedスタイルで生成されたWSDLドキュメント
<wsdl:types> <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:pack.TuxAll_typedef.salt11"> <xsd:complexType name="fml_TFML_In"> <xsd:sequence> <xsd:element maxOccurs="60" minOccurs="60" name="tflong" type="xsd:long"></xsd:element> <xsd:element maxOccurs="80" minOccurs="80" name="tffloat" type="xsd:float"></xsd:element> </xsd:sequence> </xsd:complexType> <xsd:complexType name="fml_TFML_Out"> … </xsd:complexType> </xsd:schema> </wsdl:types>
回避策: .Netクライアントには、Microsoftが推奨するDocument/literalエンコーディング・スタイルを使用します。
- RPC/encodedスタイルの
xsd:base64Binary
に関するエラー・メッセージSALTのWSDLドキュメントで
xsd:base64Binary
がRPC/encodedスタイルで使用されている場合、wsdl.exe
ではスタブ・コードが生成されます。ただし、クライアント・プログラムでは、次のような実行時エラーが報告される可能性があります:System.InvalidOperationException:'base64Binary'
は、SoapElementAttribute.DataType
プロパティには無効な値です。プロパティはプリミティブ型のみに対して指定する場合があります。回避策:これは.Netフレームワークの問題です。
.Netクライアントには、Microsoftが推奨するDocument/literalエンコーディング・スタイルを使用してください。