Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

SoapBindingStyle

このクラスで定義されている Web メソッドが使用するバインディング・スタイルまたは SOAP 呼び出し機能を指定します。Web サービスまたは Web クライアントとして定義されているクラス内でのみ適用されます。

使用法

このクラスで定義されているいずれかの Web メソッドにより使用されるバインディング・スタイルを指定するには、以下の構文を使用します。

Class MyApp.MyClass [ SoapBindingStyle = soapbindingstyle ] 
{
//class members
}

soapbindingstyle は以下のいずれかになります。

  • document (既定値) — このクラスの Web メソッドは、既定でドキュメント・スタイルのバインディングを使用します。

    このバインディング・スタイルにより、SOAP メッセージはドキュメントとしてフォーマットされ、通常はパートを 1 つのみ持ちます。

    SOAP メッセージでは、通常、<Body> 要素に 1 つの子要素が含まれます。<Body> 要素のそれぞれの子は、メッセージ・パートに対応します。

  • rpc — このクラスの Web メソッドは、RPC (リモート・プロシージャ呼び出し) スタイルのバインディングを既定で使用します。

    このバインディング・スタイルにより、SOAP メッセージは複数のパートを持つメッセージとしてフォーマットされます。

    SOAP メッセージでは、<Body> 要素に 1 つの子要素が含まれ、その名前は対応する処理名から取得されます。この要素は生成されたラッパ要素であり、これにはメソッドの引数リストの引数ごとに 1 つの子要素が含まれます。

SoapBindingStyle が document であり ARGUMENTSTYLEmessage である場合、メッセージ・スタイルは RPC に非常によく似たものになります。これについては、"Caché での Web サービスおよび Web クライアントの作成" を参照してください。

Important:

手動で作成した Web サービスでは、通常はこのキーワードの既定値が最適な値となります。SOAP ウィザードで WSDL から Web クライアントまたは Web サービスを生成すると、このキーワードはその WSDL に最適に設定されます。この値を変更すると、Web クライアントまたは Web サービスは機能しなくなる場合があります。

詳細

このキーワードにより、このクラスで定義された任意の Web メソッドが使用する既定のバインディング・スタイルを指定できます。これは、SOAP 本文の形式に影響します (SOAP ヘッダの形式には影響しません)。

SoapBindingStyle メソッド・キーワードまたは SoapBindingStyle クエリ・キーワードを使用して、個々のメソッドのバインディング・スタイルをオーバーライドできます。

サブクラスへの影響

このキーワードは継承されません。

既定値

既定値は document です。SOAP 標準 v1.1Opens in a new tab の Chapter 7 “Using SOAP for RPC” では、Web メソッドで RTC スタイルのバインディングを使用するように規定しています。ただし、.NET を含むほとんどの SOAP クライアントでは、ドキュメント・スタイルのバインディングを使用しています。

WSDL との関係

SoapBindingStyle クラス・キーワードにより、WSDL の <binding>セクション内の <soap:binding> 要素の style 属性の値を指定します。例えば、SoapBindingStyle が document の場合、WSDL は次のようになります。

...
<binding ...>
    <soap:binding ... style="document"/>
    <operation ...>
        <soap:operation ... style="document"/>
...

ここで示すように、SoapBindingStyle クラス・キーワードでは、WSDL の <binding> セクション内の <soap:operation> 要素の style 属性の既定値も指定されます。この属性は、SoapBindingStyle メソッド・キーワードで詳細に制御できます。

一方、SoapBindingStyle が rpc の場合は、WSDL は次のようになります。

...
<binding ...>
    <soap:binding ... style="rpc"/>
    <operation ...>
        <soap:operation ... style="rpc"/>
...

バインディング・スタイルは、<message> 要素にも次のように影響します。

  • バインディング・スタイルが document の場合、既定ではメッセージはパートを 1 つのみ持ちます。以下に例を示します。

    <message name="AddSoapIn">
        <part name="parameters" .../>
    </message>
    

    ARGUMENTSTYLE パラメータが message の場合、メッセージは複数のパートを持つことができます。以下に例を示します。

    <message name="AddSoapIn">
       <part name="a" .../>
       <part name="b" .../>
    </message>
    
    
  • バインディング・スタイルが rpc の場合、メッセージは複数のパートを持つことができます。以下に例を示します。

    <message name="AddSoapIn">
        <part name="a" .../>
        <part name="b" .../>
    </message>
    

SOAP メッセージへの影響

SOAP メッセージへの主な影響は、SOAP 本文に複数のサブ要素を含められるようにするかどうかを制御することです。

以下に、RPC スタイルのバインディングおよびエンコードスタイルのメッセージを使用する Web メソッドに対して考えられる要求メッセージの本文の例を示します。

<SOAP-ENV:Body SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
   <types:Add>
      <a href="#id1" /><b href="#id2" />
   </types:Add>
   <types:ComplexNumber id="id1" xsi:type="types:ComplexNumber">
      <Real xsi:type="s:double">10</Real>
      <Imaginary xsi:type="s:double">5</Imaginary>
   </types:ComplexNumber>
   <types:ComplexNumber id="id2" xsi:type="types:ComplexNumber">
      <Real xsi:type="s:double">17</Real>
      <Imaginary xsi:type="s:double">2</Imaginary>
   </types:ComplexNumber>
</SOAP-ENV:Body>

一方、リテラル・バインディングおよびエンコードスタイルのメッセージを使用する Web メソッドに対して考えられる要求メッセージの本文の例を以下に示します。

<SOAP-ENV:Body>
   <tns:Add>
      <tns:a xsi:type="tns:ComplexNumber">
         <Real xsi:type="s:double">10</Real>
         <Imaginary xsi:type="s:double">5</Imaginary>
      </tns:a>
      <tns:b xsi:type="tns:ComplexNumber">
         <Real xsi:type="s:double">17</Real>
         <Imaginary xsi:type="s:double">2</Imaginary>
      </tns:b>
      </tns:Add>
</SOAP-ENV:Body>

この場合、SOAP 本文はサブ要素を 1 つ持ちます。

%XML.DataSet での使用

タイプ %XML.DataSetOpens in a new tab のオブジェクトの場合、以下のテーブルに示すように、SoapBindingStyle キーワードと SoapBodyUse キーワードのすべての組み合わせがサポートされるわけではありません。

  SoapBodyUse=literal (既定) SoapBodyUse=encoded
SoapBindingStyle=document (既定) サポートされる サポートされない
SoapBindingStyle=rpc サポートされる サポートされる

関連項目

FeedbackOpens in a new tab