当前位置: 首页 > 教程 > WebService >

RPC和文档Web服务的区别

精华
小牛编辑
165浏览
2023-03-14

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

文档样式

  • 可以根据预定义模式验证文档样式Web服务。
  • 在文档样式中,SOAP消息作为单个文档发送。
  • 文档样式消息松散耦合。
  • 在文档样式中,SOAP消息中不需要操作名称。
  • 在文档样式中,参数以XML格式发送。

让我们看一下文档样式生成的WSDL文件。

WSDL文件:
在WSDL文件中,它指定具有namespaceschemaLocation的类型详细信息。

<types>  
<xsd:schema>  
<xsd:import namespace="http://yiibai.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>