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="https://www.tw511.com/"/>  
</input>  
<output>  
<soap:body use="literal" namespace="https://www.tw511.com/"/>  
</output>  
</operation>  
</binding>

文件樣式

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

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

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

<types>  
<xsd:schema>  
<xsd:import namespace="https://www.tw511.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>