単純な WSDL
単純な WSDL は WSDL ドキュメントの簡易版で、既定の WSDL で詳しく説明されている SQL Server 2005 システム型の代わりに XSD データ型を使用します。単純な WSDL では、既定の WSDL で完全にサポートされる SQL Server データ型ほど詳しい記述を行うことはできませんが、クライアントやプロキシ クラス ジェネレータに、既定の WSDL のすべてのファセットや型システムに対してマッピングや処理を行う機能が実装されていなくても使用できる WSDL ドキュメントを簡単に提供できます。
単純な WSDL と既定の WSDL の違い
単純な WSDL と既定の WSDL の両方の WSDL フォーマットが用意されている最大の理由は、単純な WSLD フォーマットにより旧バージョンとの互換性を確保し、既定の WSDL フォーマットを解釈できない SOAP クライアントをサポートすることにあります。
これには、SOAP Toolkit を基に作成された単純な Web サービス クライアントも含まれます。このようなクライアントは、既定の WSDL ドキュメントを SQL Server インスタンスが生成した状態のままでは解釈できません。この制限は、SOAP Toolkit や他の単純な Web サービス クライアントが、一部の SQL Server 2005 システム型の豊富な表現を解釈できないために生じます。したがって、単純なクライアントや古いクライアントの持つこの制限に対処するために、単純な WSDL ではすべての SQL Server 型要素をネイティブ XSD 型にマップしています。
たとえば、SOAP Toolkit クライアントでは、totalDigits
と fractionDigits
という定義の粒度と、元の XSD 型の派生に使用される他の追加要素のために、sqltypes:money の解釈に問題があることがわかっています。ただし、SOAP Toolkit は、int
など、XSD 型の直接マッピングは問題なく処理できます。
派生型 (既定の WSDL)
<xsd:simpleType name="money">
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="19">
</xsd:totalDigits>
<xsd:fractionDigits value="4">
</xsd:fractionDigits>
<xsd:maxInclusive value="922337203685477.5807">
</xsd:maxInclusive>
<xsd:minInclusive value="-922337203685477.5808">
</xsd:minInclusive>
</xsd:restriction>
</xsd:simpleType>
直接マッピング (単純な WSDL)
<xsd:simpleType name="int">
<xsd:restriction base="xsd:int">
</xsd:restriction>
</xsd:simpleType>
その他の例としては、RPC 応答が挙げられます。既定の WSDL では、応答の種類が SqlResultStream に設定されます。これは、"Types" セクションに追加で定義されます。これとは対照的に、RPC 応答の種類は、<xsd:any> を指定する汎用 <xsd:complexType> に設定されます。これにより、あらゆるコンテンツを受け入れられるようになります。WSDL ドキュメントをこのように変更することで、単純な Web サービス クライアントが、派生した SQL Server 応答の種類を解析できない問題を回避できます。
メモ : |
---|
WSDL 要求は、SOAP セッション内に参加できません。SOAP セッションの詳細については、「SOAP セッションを使用した作業」を参照してください。 |
単純な WSDL での SQL Server から XSD への型マッピング
単純な WSDL で SQL Server システム データ型を XML スキーマ (XSD) 型にマップする方法の詳細については、「ネイティブ XML Web サービスでのデータ型マッピング」を参照してください。