Web Service概述

概述

当前,Web Service技术可谓炙手可热,即使MS宣布放弃Web Service。在没有更好技术标准出现之前,Web Service技术仍是企业级应用集成的基础,也是支撑SOA的构建技术之一。本文试图从一个比较高的角度来分析和概述一下Web Service的核心技术。

Web Service与其说是软件技术发展的进步,不如说是商业和政治上的策略。看看COBRA的推广和接受程度,COM/DCOM组件、J2EE等软件技术的成功,我们有理由相信,无论在技术上,还是商业营销上,软件产业都需要一次概念上的更新。WWW/HTTP的巨大成功和XML的广泛应用给软件业带来了很大的启发,Web Service借助WWW/HTTPXML的袈裟横空出世,进入企业开发的概念之列,成为程序员的必修技术。

Web Service本质上是一种分布式软件的耦合交互技术,其主要目标是实现跨平台的可互操作性。所谓耦合交互,就是让分布式软件的两端在某种协议下能够交互,而不用关心彼此使用的编程技术。当然,不管这个协议叫RPC(远程过程调用)还是服务(services),我们都可以理解为一种操作。

核心技术

Web Service的核心技术主要有:XML/XML SchemaSOAPWSDLUDDIHTTP

Web Service使用XML/XSD(可扩展标记语言/ XML Schema )描述数据结构及类型,XML实例易于建立和易于分析,其主要的优点在于平台无关性和厂商无关性。

Web Service使用SOAP表示信息传输协议, SOAP基于XML/XSD,独立于平台和编程语言。

Web Service使用WSDL描述web服务,WSDL基于XML

Web Service使用UDDI (Universal Description, Discovery and Integration)描述、发现与集成web服务。

概念模型

Web Service概览 - dinstone - dinstone的编码人生

Web Service概念模型

SOAP

软件就是接受输入数据,处理数据,然后输出结果的过程,分布式软件也不例外。为了实现分布式软件的交换,需要一种协议保证输入数据和输出数据的格式是彼此可理解的,并且与具体的编程语言无关,而SOAPsimple object access protocol)就是规定如何用XML来格式化输入数据和格式化输出结果的协议。Web Service 中将这种格式化后的数据称作SOAP消息(message)。

SOAP特性

l         SOAP是一种基于XML的标准消息传输协议,其消息格式由XML Schema模式定义,通过XML命名空间使SOAP具有很强的扩展性。

l         SOAP中根元素是Envelope元素。Envelope元素中可以包含多个可选的Header元素,必须同时包含一个Body元素。Header元素必须是Envelope元素的直接子元素,并且要位于Body元素之前

l         SOAP的命名空间:xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/,命名空间定义了标准SOAP元素(如:Envelope HeaderBody等)。

l         SOAP支持四种消息传输模式(RPC/Literal, Document/ Literal, RPC/Encoded, and Document/Encoded),但是WS-I Basic Profile只允许RPC/LiteralDocument/Literal,不支持编码模式。Literal(明文)文档可以根据XML Schema验证XML实例的有效性,而Encoded(编码)文档将失去此优势。

l         Document/Literal Unwrapped(非包装的文档/明文)模式,如果参数为soap:Body的直接子元素,则为该模式。

l         Document/Literal Wrapped(包装的文档/明文)模式,参数包装在一个“wrapper”元素中,“wrapper”元素为soap:Body的直接子元素。

Web Service交互过程

Web Service概览 - dinstone - dinstone的编码人生 

传输模式的例子

1.Document/Literal UnwrappedSOAP请求消息例子:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">

       <env:Body xmlns:getord="http://www.example.com/oms/getorders">

              <getord:startDate>2005-11-19</getord:startDate>

              <getord:endDate>2005-11-22</getord:endDate>

       </env:Body>

</env:Envelope>

 

2.Document/Literal WrappedSOAP请求消息例子:

<env1:Envelope xmlns:env1="http://schemas.xmlsoap.org/soap/envelope/">

       <env1:Body>

              <getord:getOrdersDates xmlns:getord="http://www.example.com/oms/getorders">

                     <getord:startDate>2005-11-19</getord:startDate>

                     <getord:endDate>2005-11-22</getord:endDate>

              </getord:getOrdersDates>

       </env1:Body>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值