`
softstone
  • 浏览: 478164 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

了解WSDL中的style和use

阅读更多

1.   Styleuse的组合

<o:p> </o:p>

use属性可以为literalencodedstyle可以为rpcdocument,我们来对五种类型的style/use决定的binding作一比较,分别是rpc/literal, document/literal none-wrapper, document/literal with wrapper, rpc/encoded, 以及document/encoded<o:p></o:p>

从生成soap消息的角度看,rpcdocument的差别在于方法的操作名是否出现在生成的Soap消息中,encodedliteral编码方式的差别在于参数类型是否出现在生成的Soap消息中。

这样rpc/encoded能够完整地表示一个方法调用,但缺点是性能很差,而且不能校验Soap消息的有效性。

rpc/literal不对参数类型进行编码,但仍然无法对Soap消息进行校验。Document/encoded没有意义,因为没有方法名,对参数类型编码没有什么意义。

document/literal none-wrapper无法生成操作名,适用于完整的文档作为参数传递给方法的场景。

document/literal with wrapper应该是目前使用最多的方式,在xfire中也是默认配置。

2.   示例

<o:p> </o:p>

2.1. Java方法

<o:p> </o:p>

public void myMethod(int x);<o:p></o:p>

2.2. Rpc/encoded

<o:p> </o:p>

Rpc风格的特点是message元素的每一个part都必须用type属性定义。encoded用来指明一个类型编码模型,不依赖于XML Schema

清单 2. 用于 myMethod RPC/编码的 WSDL <o:p></o:p>

<message name="myMethodRequest"><o:p></o:p>

    <part name="x" type="xsd:int"/><o:p></o:p>

</message><o:p></o:p>

<message name="empty"/><o:p></o:p>

<portType name="PT"><o:p></o:p>

    <operation name="myMethod"><o:p></o:p>

        <input message="myMethodRequest"/><o:p></o:p>

        <output message="empty"/><o:p></o:p>

    </operation><o:p></o:p>

</portType><o:p></o:p>

<binding .../>  <o:p></o:p>

<!-- I won't bother with the details, just assume it's RPC/encoded. --><o:p></o:p>

<o:p> </o:p>

现在用“5”作为参数 x 的值来调用此方法。我们将发送一个与 清单3类似的 SOAP 消息。

清单 3. 用于 myMethod RPC/编码的 SOAP 消息 <o:p></o:p>

<soap:envelope><o:p></o:p>

    <soap:body><o:p></o:p>

        <myMethod><o:p></o:p>

            <x xsi:type="xsd:int">5</x><o:p></o:p>

        </myMethod><o:p></o:p>

    </soap:body><o:p></o:p>

</soap:envelope><o:p></o:p>

<o:p> </o:p>

2.3. RPC/文字

<o:p> </o:p>

用于我们的方法的 RPC/文字的 WSDL 看起来与 RPC/编码的 WSDL 几乎一样。只是绑定的用法由 编码改为 文字。仅此而已。

4. 用于 myMethod RPC/文字的 WSDL<o:p></o:p>

<message name="myMethodRequest"><o:p></o:p>

    <part name="x" type="xsd:int"/><o:p></o:p>

</message><o:p></o:p>

<message name="empty"/><o:p></o:p>

<portType name="PT"><o:p></o:p>

    <operation name="myMethod"><o:p></o:p>

        <input message="myMethodRequest"/><o:p></o:p>

        <output message="empty"/><o:p></o:p>

    </operation><o:p></o:p>

</portType><o:p></o:p>

<binding .../>  <o:p></o:p>

<!-- I won't bother with the details, just assume it's RPC/<o:p></o:p>

        literal. --><o:p></o:p>

      <o:p></o:p>

<o:p> </o:p>

RPC/文字的 SOAP 消息去掉了类型编码。

清单 5. 用于 myMethod RPC/文字的 SOAP 消息<o:p></o:p>

<soap:envelope><o:p></o:p>

    <soap:body><o:p></o:p>

        <myMethod><o:p></o:p>

            <x>5</x><o:p></o:p>

        </myMethod><o:p></o:p>

    </soap:body><o:p></o:p>

</soap:envelope><o:p></o:p>

<o:p> </o:p>

2.4. document/literal

<o:p> </o:p>

document/literal的主要特点是message元素的每一个part都使用element属性引用一个types下面定义的schema元素。<o:p></o:p>

清单6. 用于 myMethod 的文档/文字的 WSDL<o:p></o:p>

<types><o:p></o:p>

    <schema><o:p></o:p>

        <element name="xElement" type="xsd:int"/><o:p></o:p>

    </schema><o:p></o:p>

</types><o:p></o:p>

<message name="myMethodRequest"><o:p></o:p>

    <part name="x" element="xElement"/><o:p></o:p>

</message><o:p></o:p>

<message name="empty"/><o:p></o:p>

<portType name="PT"><o:p></o:p>

    <operation name="myMethod"><o:p></o:p>

        <input message="myMethodRequest"/><o:p></o:p>

        <output message="empty"/><o:p></o:p>

    </operation><o:p></o:p>

</portType><o:p></o:p>

<binding .../>  <o:p></o:p>

<!-- I won't bother with the details, just assume it's <o:p></o:p>

        document/literal. --><o:p></o:p>

      <o:p></o:p>

清单7. 用于 myMethod 的文档/文字的 SOAP 消息<o:p></o:p>

<soap:envelope><o:p></o:p>

    <soap:body><o:p></o:p>

        <xElement>5</xElement><o:p></o:p>

分享到:
评论

相关推荐

    WSDL样式详解,soap中Rpc和Document的区别

    WSDL示例中展示了`&lt;soap:body use="encoded" ...&gt;`,表示使用编码方式。这意味着服务调用看起来像远程过程调用,且消息内容经过SOAP编码,可能更难阅读和解析。 - **RPC/Literal**:与Encoded不同,Literal风格不...

    简单WSDL实例

    - `wsdl:message`:定义服务交互中的消息结构,包括输入和输出参数。 - `wsdl:portType`:定义服务的操作集合,不涉及具体实现细节。 - `wsdl:binding`:定义服务如何通过特定协议(如HTTP、SOAP)进行通信。 - ...

    WSDL 文件及其属性

    接下来,我们讨论WSDL中的style和use属性,这两个属性共同决定了Web服务通信的方式。style属性有两个可选值:`rpc`(Remote Procedure Call)和`document`。`rpc`风格模拟远程方法调用,使得客户端和服务端之间的...

    WSDL文件简介-本文介绍了如何编写一个简单的WSDL文件,并根据WSDL文件编写服务器端和客户端代码,并发布Web Service服务的过程

    为了更好地理解 WSDL 文件,我们需要了解一些基本的概念和常用的命名空间: - **prefix**: 表示前缀。 - **namespace URI**: 命名空间的统一资源标识符。 以下是一些常见的命名空间: - `wsdl`: `...

    wsdl文件详解 web wervices

    **WSDL文件详解:Web Services基础** Web服务(Web Services)是一种通过互联网交换数据和执行功能的方式...通过阅读和学习`wsdl-xsd.doc`和`wsdl文件详解.doc`这两个文档,你将能深入理解WSDL的工作原理和实际应用。

    WSDL(Web服务描述语言)详细解析

    这在分布式计算和SOA(面向服务架构)中尤为重要,因为它确保了服务的发现、绑定和调用的一致性和兼容性。 #### WSDL文档结构详解 WSDL文档结构由一系列相互关联的元素构成,主要包括: 1. **types**:这个元素...

    WebService之WSDL文件讲解

    例如,JAX-RPC提供商(如BEA WebLogic)可以通过API读取WSDL文档并生成相应的代理类(stub),IBM WebSphere、Microsoft .NET 和 Apache Axis 等也有类似的工具来生成客户端和服务端所需的代码。 #### 二、WSDL的...

    Web Service描述语言 WSDL 详解(转)

    - **服务发现**:UDDI(统一描述、发现和集成)目录可以存储WSDL文档,帮助其他开发者查找和了解可用的服务。 ### 4. WSDL的版本与扩展 WSDL有多个版本,最常用的是WSDL 1.1,但随着Web服务技术的发展,出现了WSDL...

    WSDL文件详解.doc

    WSDL(Web Services Description Language)是一种用于描述网络服务的标准格式,它能够帮助实现跨语言和跨平台的服务交互。随着互联网技术的发展,不同系统之间的通信变得越来越重要。然而,由于各种系统通常采用...

    WSDL绑定样式各种组合优劣势比较

    WSDL绑定样式由两个关键属性组成:`style` 和 `use`。这两个属性的不同组合产生了多种绑定模型,每种模型都有其特定的应用场景和优缺点。 - **Style**: 可以是 `RPC` 或 `Document`。 - **RPC (Remote Procedure ...

    初探WSDL2JAVA工具的使用

    2. **生成Java存根和骨架**:根据WSDL文档中的描述,工具会自动生成对应的Java存根和骨架类。存根类用于客户端调用远程服务,而骨架类则用于服务端处理请求。 3. **实现消息映射**:每个操作对应的消息会被映射到...

    java的wsdl语言实现web service的服务创建和调用实例

    在本实例中,我们将探讨如何使用Java和WSDL来创建和调用Web Service。 一、创建Web Service 1. 定义WSDL文件:首先,你需要创建一个WSDL文件来描述你的服务。WSDL文件定义了服务的端点(也称为SOAP地址),服务的...

    Web Service描述语言 WSDL 详解

    我们深入探讨《Web Service描述语言 WSDL 详解》这一主题,了解WSDL为何如此关键以及其内部结构如何支撑Web服务的交互。 ### 为什么使用WSDL? WSDL,即Web Services Description Language,是一种用于描述Web服务...

    WebService描述语言WSDL详解

    #### XML schema运用于WSDL的类型和消息中 XML Schema是WSDL中定义数据类型的一种方式,它用于描述消息中涉及的数据结构。通过XML Schema,可以详细定义复杂类型,包括简单类型、复杂类型以及数组。 - **XML ...

    WebService之WSDL自学笔记

    通过这种方式,WSDL文档清晰地描述了一个简单的Web服务的结构和功能。 总之,WSDL提供了一种标准的方式来描述Web服务,使得不同的系统能够相互理解和交互。通过对WSDL文档结构的理解,开发者可以更好地设计、开发和...

    wsdl的描述

    每个Operation包含一个或两个Message,分别代表请求和响应,这与Java中的方法调用相似,有输入参数和返回值。 4. **PortType**: PortType是服务接口的抽象定义,它定义了一组可以被服务实现的操作集合。在Java...

    WSDL创建对象,然后传递过程.doc

    &lt;service name="MyRegister" provider="java:RPC" style="document" use="literal"&gt; ... qname="ns:UserInfoResponse" type="java:org.Register.www.MyRegister.UserInfoResponse" serializer="org.apache....

Global site tag (gtag.js) - Google Analytics