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
,它定义了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://yiibai.com/"/>
</input>
<output>
<soap:body use="literal" namespace="http://yiibai.com/"/>
</output>
</operation>
</binding>
文档样式
- 可以根据预定义模式验证文档样式Web服务。
- 在文档样式中,SOAP消息作为单个文档发送。
- 文档样式消息松散耦合。
- 在文档样式中,SOAP消息中不需要操作名称。
- 在文档样式中,参数以XML格式发送。
让我们看一下文档样式生成的WSDL文件。
WSDL文件:
在WSDL文件中,它指定具有namespace
和schemaLocation
的类型详细信息。
<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>