转自:http://blog.csdn.net/sfdev/archive/2008/06/12/2540703.aspx
目前Web 服务的相关标准是 WSDL【Web 服务描述语言】 ,一种标准的类似 XML Schema 的 语言,用它来详细说明 Web 服务和 SOAP【简单对象访问协议】 , Web 服 务使用的实际的沟通协议就是 SOAP 。WSDL 绑定样式由两个属性组合而成:style、use;style可以是RPC/Document,use可以是Encoded/Literal;下面解释下 这4个名词的意思:
RPC 样式
RPC 样式指定 <soap:body> 元素 包含一个将被调用的 web 方法的名称的元素( wrapper element (封装元素))。这个元素依次为该方法的每个参数还有返回值作了 记录。
Document 样 式
如果是 document 样 式,就没有像在 RPC 样式中的 wrapper 元素。转而代之的是消息片断直接出现在 <soap:body > 元素之下。没有任何 SOAP 格式化规则规定 <soap:body> 元素下能包含什么;它包含的是一个发送者 和接收者都达成一致的 XML 文档。
Encoded 编码
如果 use 的值是 ” encoded ”, 则每个消息片段将使用类 型 属性来引用抽象类型。通过应用由 encodingStyle 属性所指定的编码样式,可使用这些抽象类型生成具体的消息。最常用到的 SOAP 编码样式是在 SOAP1.1 中 定义的一组序列化规则,它说明了对象、结构、数组和图形对象应该如何序列化。通常,在应用程序中使用 SOAP 编 码着重于远程进程调用和以后适合使用 RPC 消息样式。
Literal 文字?
如果 use 的值是 ” Literal ” , 则每个片段使用 element 属 性(对于简单片段)或 type 属性(对于复合片段)来引用具体架构,例如,数据根据指定的架构来序列化,这架构通常使用 W3C XML 架构来表述。
根据不同的组合,形成了四种绑定模型;另外,还有一种用Document模拟RPC样式的包装组合也很常见;
- RPC/Encoded
- RPC/Literal
- Document/Encoded
- Document/Literal
-
Document/Literal Wrapped
对于以上5种组合方式,由于Document/Encoded不被现有平台所支持,在实际中应用很少,所以这里就暂时不讨论该种组合;对于剩下的4 种组合,我们结合一个表格和实例来对比下各自的优劣情况;
Binding Type | Advantage/DisAdvantage |
RPC/
Encoded
| 优点:
缺点:
|
RPC/
Literal
| 优点:
缺点:
|
Document/
Litaral
| 优点:
缺点:
|
Document/
Literal
Wrapped
| 优点:
缺点:
|
假设我们需要调用的WS的method为:public void myMethod(int x); 各种绑定样式生成的WSDL/SOAP片段如下:
Binding Type | WSDL | SOAP |
RPC/ Encoded
|
|
|
RPC/ Literal
|
|
|
Document/ Litaral
|
|
|
Document/ Literal Wrapped
|
|
|