`
KingZha
  • 浏览: 12516 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Web Service理论-SOAP

阅读更多
转载自:http://www.blogjava.net/zpuser/archive/2008/07/04/212593.html

什么是WebServcie

    网上有很多解释版本。我是技术研发,所以个人理解从技术角度说:Web Service是一种轻量级别的基于XML的跨平台远程服务通讯框架技术,可以很好解决各平台和语言间的数据通讯。

语意协议:使用基于XML的SOAP协议,定义业务数据格式。
传输协议:使用HTTP,TPC/IP,FTP,SMTP和JMS等,一般采用和支持较多的是HTTP。
接口描述语言:使用基于XML的WDSL作为统一服务描述。
简单的说,WEBSERVICE就是规定一系列的规范和框架,提供一个基于SOA(面向服务的架构)概念的使用WSDL来描述服务接口定义的方案,可以使用传统的传输协议(一般使用HTTP)传输基于XML的SOAP格式报文数据来实现跨平台间系统的通讯。下面分别介绍WEBSERVICE中必须了解的几个部分:SOAP,WSDL和传输协议

SOAP

简单对象访问协议(SOAP:Simple Object Access Protocol)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。主要负责在WEBSERVICE服务中通讯报文数据格式的定义。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME),传统SOCKET通讯(TCP/IP),JAVA消息系统(JMS)等传输协议。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。

 SOAP 包括三个部分:
SOAP 封装:它定义了一个框架,该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的。
SOAP 编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。
SOAP RPC 表示:它定义了用于表示远程过程调用和应答的协定。
  SOAP 消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求 / 应答的模式。所有的 SOAP 消息都使用 XML 编码。一条 SOAP 消息就是一个包含有一个必需的 SOAP 的封装包,一个可选的 SOAP 标头和一个必需的 SOAP 体块的 XML 文档。

  把 SOAP 绑定到 HTTP 提供了同时利用 SOAP 的样式和分散的灵活性的特点以及 HTTP 的丰富的特征库的优点。在 HTTP 上传送 SOAP 并不是说 SOAP 会覆盖现有的 HTTP 语义,而是 HTTP 上的 SOAP 语义会自然的映射到 HTTP 语义。在使用 HTTP 作为协议绑定的场合中, RPC 请求映射到 HTTP 请求上,而 RPC 应答映射到 HTTP 应答。简单的说就是,通过HTTP POST(当然也可以GET或其它,一般是POST)方式传输一个SOAP协议定义的报文数据体,用于双向通讯。然而,在 RPC 上使用 SOAP 并不仅限于 HTTP 协议绑定,也可以和其他的现行传输协议绑定。

语法规则

SOAP 消息必须用 XML 来编码
SOAP 消息必须使用 SOAP Envelope 命名空间
SOAP 消息必须使用 SOAP Encoding 命名空间
SOAP 消息不能包含 DTD 引用
SOAP 消息不能包含 XML 处理指令
SOAP报文结构

一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:

必需的 Envelope标签,文档的ROOT,可把此 XML 文档标识为一条 SOAP 消息
必需的 SOAP 的 Envelope 元素是 SOAP 消息的根元素。它可把 XML 文档定义为 SOAP 消息

可选的 Header标签,包含头部信息
可选的 SOAP Header 元素可包含有关 SOAP 消息的应用程序专用信息(比如认证、支付等)。如果 Header 元素被提供,则它必须是 Envelope 元素的第一个子元素。


必需的 Body标签,包含所有的调用和响应信息

必需的 SOAP Body 元素可包含打算传送到消息最终端点的实际 SOAP 消息。

SOAP Body 元素的直接子元素可以是合格的命名空间。SOAP 在默认的命名空间中("http://www.w3.org/2001/12/soap-envelope")定义了 Body 元素内部的一个元素。即 SOAP 的 Fault 元素,用于指示错误消息。

可选的 Fault 元素,提供有关在处理此消息所发生错误的信息

来自 SOAP 消息的错误消息被携带于 Fault 元素内部。

如果已提供了 Fault 元素,则它必须是 Body 元素的子元素。在一条 SOAP 消息中,Fault 元素只能出现一次。

SOAP 的 Fault 元素用于下列子元素:

子元素 描述
<faultcode> 供识别故障的代码
<faultstring> 可供人阅读的有关故障的说明
<faultactor> 有关是谁引发故障的信息
<detail> 存留涉及 Body 元素的应用程序专用错误信息


SOAP请求报文
<!-- 信封 -->
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" //SOAP报文默认命名空间
                   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" //编码数据类型命名空间
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"//文档XSD实例方案,规定格式
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema">         //文档XSD方案,规定格式
    <!-- 信头 -->
    <SOAP-ENV:HEADER></SOAP-ENV:HEADER>
    <!-- 信体 -->
    <SOAP-ENV:Body>
        <m:activateEpurse xmlns:m="http://service.payment.ipayment.justinmobile.com">
            <m:appNo>String</m:appNo>
            <m:mobileNo>String</m:mobileNo>
        </m:activateEpurse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SOAP应答报文(返回一个entry数组,也就是MAP)
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soap:Body>
        <ns1:activateEpurseResponse xmlns:ns1="http://service.payment.ipayment.justinmobile.com">
            <ns1:out>
                <entry xmlns="http://service.payment.ipayment.justinmobile.com">
                    <key>transStatus</key>
                    <value>0001</value>
                </entry>
            </ns1:out>
        </ns1:activateEpurseResponse>
    </soap:Body>
</soap:Envelope>


所有以上的元素均被声明于针对 SOAP 封装的默认命名空间中:

http://www.w3.org/2001/12/soap-envelope
SOAP 在默认的命名空间中 ("http://www.w3.org/2001/12/soap-envelope") 定义了三个属性。这三个属性是:actor、 mustUnderstand 以及 encodingStyle。这些被定义在 SOAP 头部的属性可定义容器如何对 SOAP 消息进行处理。

actor
通过沿着消息路径经过不同的端点,SOAP 消息可从某个发送者传播到某个接收者。并非 SOAP 消息的所有部分均打算传送到 SOAP 消息的最终端点,不过,另一个方面,也许打算传送给消息路径上的一个或多个端点。

SOAP 的 actor 属性可被用于将 Header 元素寻址到一个特定的端点。

soap:actor="URI"

mustUnderstand
SOAP 的 mustUnderstand 属性可用于标识标题项对于要对其进行处理的接收者来说是强制的还是可选的。

假如您向 Header 元素的某个子元素添加了 "mustUnderstand="1",则它可指示处理此头部的接收者必须认可此元素。假如此接收者无法认可此元素,则在处理此头部时必须失效。

soap:mustUnderstand="0|1"

encodingStyle
SOAP 的 encodingStyle 属性用于定义在文档中使用的数据类型。此属性可出现在任何 SOAP 元素中,并会被应用到元素的内容及元素的所有子元素上。SOAP 消息没有默认的编码方式。

soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"




以及针对 SOAP 编码和数据类型的默认命名空间:

http://www.w3.org/2001/12/soap-encoding

转载自:http://www.blogjava.net/zpuser/archive/2008/07/04/212593.html
分享到:
评论

相关推荐

    webservice-soap资料

    Web服务(Web Service)是一种基于互联网的、使用标准XML(Extensible ...总之,这份“webservice-soap资料”对于想要深入理解Web服务和SOAP协议的人来说是宝贵的资源,它将帮助你从理论到实践全面掌握这一核心技术。

    实战Delphi6.Kylix2.SOAP.Web Service程序设计篇李维著.zip

    《实战Delphi6.Kylix2.SOAP.Web Service程序设计篇》是由知名技术专家李维编著的一本专业书籍,主要面向的是希望深入理解和应用Delphi6、Kylix2、SOAP以及Web Service技术的开发者。这本书详细介绍了如何利用这些...

    Delphi/Kylix SOAP/WEB SERVICE程序设计配书代码

    在IT行业中,SOAP(Simple Object Access Protocol)和Web服务是两个关键的概念...通过研究"Delphi/Kylix SOAP/WEB SERVICE程序设计配书代码"中的实例,开发者不仅可以深化理论知识,还能积累实践经验,提升自身技能。

    《实战Delphi6.Kylix2.SOAP.Web Service程序设计篇》配书代码

    压缩包中的2ccc.com.txt文件可能包含一些辅助信息或说明,而“实战Delphi6.Kylix2.SOAP.Web Service程序设计篇李维著”很可能是书中案例的源代码文件,读者可以结合这些源码加深对书中理论的理解,实际动手操作,...

    基于Delphi的Web Service 客户端调用

    通过本文介绍的理论和技术,开发者可以更好地理解和实施基于 Delphi 的 Web Service 客户端调用。 通过对 Web Service 的基本概念、关键技术和基于 Delphi 和 Java 的开发流程的详细介绍,本文为读者提供了一个全面...

    Web Service学习报告

    无论是从理论层面还是实践层面,掌握 Web Service 的开发和使用都将极大地提升开发者的技能水平,并有助于解决现实世界中的许多复杂问题。此外,随着技术的发展,Web Service 的应用场景也在不断扩大,成为连接不同...

    JAVA 调用Web Service的方法

    总的来说,Java调用Web Service涉及到多个环节,从理解协议和标准,到选择合适的工具和框架,再到实际的编码和测试,每个步骤都需要开发者具备扎实的理论基础和实践经验。通过以上知识点的学习和实践,你将能够熟练...

    asp Web Service 创建调用.rar

    ASP Web Service是使用.NET Framework实现的Web服务,使用SOAP(Simple Object Access Protocol)协议进行通信,这使得不同操作系统和编程语言的应用能够无缝交互。 2. **创建ASP Web Service** - **新建项目**:...

    用SOAP标题验证的WEB service

    这个修改自C#高级编程第5版本的例子,展示了如何将理论知识应用于实际问题解决,强化了对Web服务安全性和SOAP通信的理解。这样的实践有助于提升开发者在分布式系统和安全性方面的技能,对于构建可靠且安全的Web服务...

    SAP-ECC-6中WEB-SERVICE设置.docx

    ### SAP ECC 6中Web Service 设置详解 #### 一、引言 在现代企业信息化建设中,SAP ECC 6(Enhanced Commodity Code 6)作为一款强大的企业资源计划软件,为企业提供了全面的业务流程管理和集成解决方案。随着...

    Java+Web Service教程

    总的来说,"Java+Web Service教程"将引导你走过从基础理论到实战技能的全过程,使你能够熟练地利用Java技术构建和维护高效、安全的Web Service。通过学习和实践,你将成为一名能够解决跨平台通信问题的专家,为企业...

    atl web service论文

    这些论文涵盖了ATL Web Service在不同场景下的应用,包括系统集成、教学、企业管理等多个领域,为深入理解和实践ATL Web Service技术提供了丰富的理论与实例参考。通过阅读这些论文,读者可以全面了解ATL Web ...

    Android客户端访问Web Service的实现.pdf

    最后,文档列出了参考文献,这些文献可为深入研究和应用Web Service在Android客户端的实现提供更进一步的理论支持和技术参考。 综上所述,Android客户端访问Web Service的实现涉及对Android平台的了解,Web Service...

    基于J2EE的Web Service研究及构建

    Web Service是一种基于XML的开放式标准,它通过SOAP(Simple Object Access Protocol)协议进行通信,使用WSDL(Web Services Description Language)定义服务接口,UDDI(Universal Description, Discovery, and ...

    Understanding SOA with Web service( 中英版)

    Web服务是基于开放标准如WSDL(Web Services Description Language)、SOAP(Simple Object Access Protocol)和UDDI(Universal Description, Discovery, and Integration)等定义的,它们使得不同系统之间的互操作...

    SAP BC416 课程中文自学笔记

    - Web Service通过标准化的协议和技术(如SOAP、XML等)实现不同软件组件之间的通信与协作,从而支持异构系统间的互操作性和数据交换。 #### 四、总结 BC416课程主要聚焦于ABAP Web Services的理论与实践。通过本...

    Web service web服务

    总的来说,"Web service web服务"这个主题涵盖的内容广泛,从基础理论到实际操作,都对IT开发者有重要的学习价值。通过研究这个简单的实例,你可以快速上手并进一步探索更复杂的Web服务架构和应用场景,比如RESTful ...

    如何创建.NET Web Service

    尽管Visual Studio .NET是开发Web Service的理想IDE,但理论上,任何文本编辑器都可以用来编写Web Service的代码,只要理解基本的架构和步骤即可。 以创建一个简单的股票报价Web Service为例,服务需要接收股票代码...

    ASP.NET与Web Service实例剖析

    通过SOAP消息,Web Service能够传递结构化的XML数据,WSDL(Web服务描述语言)定义了服务的接口,而UDDI(统一描述、发现和集成)则用于服务的注册和查找。 在ASP.NET中实现Web Service通常涉及到创建一个ASMX文件...

    XML WEB Service开发

    XML Web服务是基于开放标准,如SOAP(Simple Object Access Protocol)、WSDL(Web Services Description Language)和UDDI(Universal Description, Discovery, and Integration)构建的,这些标准使得服务能够被...

Global site tag (gtag.js) - Google Analytics