日期:2012-09-26  浏览次数:20498 次

Web Service初探(推荐)<br>
<br>
<br>
<br>
简介<br>
<br>
回顾过去的六年,难以想象如果没有互联网的话,网络计算会变成什么样。更早的超文本模式失败了,而互联网成功了,这其中最基本的原因可以归结为:互联网简单且无处不在。从服务提供者(如网上商店)的角度来看,只要你会打字,你就可以接受服务。从服务API的角度来看,互联网上绝大多数的活动都可以由三种方法(GET, POST, 和PUT ) 以及一种标记语言来完成。Web Service的兴起正是基于这样一个事实:Web不仅可以作为一个信息平台 ,也可以作为一个服务平台。 <br>
这里的“Services”不是指Amazon.com提供的那种粗糙的服务,而是一种组件服务,其他人可以用来构造更强大的服务。例如,Microsoft提供了Passport服务,提供Web上的认证功能,所以,类似华盛顿邮报之类的电子报纸就不必自己开发认证服务,只要交给Passport做就可以了。当然,这只是一个假设。<br>
<br>
Oracle的动态服务白皮书(dynamic services whitepaper)提供了更多组件服务的例子:汇率转换,翻译,货物运输等等。IBM对Web Service有一个更为正式的定义:<br>
<br>
Web ervices 是一种新的web应用程序分支,他们是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。Web service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他web services应用程序可以发现并调用它部署的服务。<br>
<br>
IBM的Web Service指南接着说在几年前Web Service还是一个效率低下无法引起人们兴趣的概念。但是随着带宽和存储变的更为便宜,内容更为动态化,对不同平台上广泛而多样的计算设备的集成的要求也更为强烈,同时,也使得人们对代价(带宽和存储)不那么敏感。<br>
<br>
当我已经有了我中意的中间件平台(RMI, Jini, CORBA, DCOM 等等)时,为什么还要为Web而烦恼呢?中间件确实提供了强大的服务实现手段,但是,他们当中没有一个是绝对的胜利者。Web作为信息发布者的力量就在于简单且无处不在,这对解决现在这样一个分裂中间件世界很重要。Web通过在传统中间件平台上更有效实现的Services,来提供一个统一且广泛适用的接口,这样就改善了这个平台。<br>
<br>
从一个N层应用程序结构的角度来看,web service只是一个方便程序访问的包装,服务还是要靠中间件来实现。访问包括服务请求处理(监听者)和一个支持商业逻辑操作的接口,商业逻辑本身是由传统的中间件平台实现的。<br>
<br>
Web Services平台<br>
<br>
那么什么是web service 平台呢?最基本的平台是XML加HTTP。HTTP是一个在Internet上广泛使用的协议。XML是一种元语言,你可以用它书写特定的语言来描述客户和服务之间或者组件和复杂服务之间的交互。在web server之后,XML格式的消息被转变成中间件的请求,返回的结果也会转化成XML格式。 <br>
<br>
你可能会问,这与说CORBA是IDL加上RPC不是一样吗?这个平台到底如何支持service的发现,事务,安全,认证等等基本功能,以使它真正成为一个平台呢? 下面我们将讲述这一点。 <br>
<br>
有必要增加一些服务,同时保持简单性和普遍性,来把Web构建成一个功能更强大的平台。可以认为功能全面的web services平台是XML+HTTP+SOAP+WSDL+UDDI。在更高层次上,可能还要加上一些尚未广泛接受的技术如XAML,XLANG, XKMS,和XFS。<br>
<br>
以下是对这些平台要素的简要描述。需要指出的是,这些还是发展中的技术,很多时候对一个问题会有多种解决方案。<br>
<br>
SOAP (远程调用) <br>
UDDI (贸易,目录服务) <br>
WSDL (描述服务特征) <br>
XLANG/XAML (为包括多种web services的复杂web事务提供支持) <br>
XKMS (XML Key Management Specification) - 支持认证和注册,这个工作还在进展之中 <br>
<br>
SOAP<br>
<br>
SOAP是一个协议规范,定义了传递XML-encoded数据时的统一方式。它还定义了使用HTTP作为底层通信协议时执行远程调用(RPC)的方法。<br>
<br>
SOAP的兴起是基于这样一种认识,无论现在的中间件是如何的好,他们都需要一个WAN包装。以XML格式发送消息有很多好处,如能够确保互用性。中间件使用者看来愿意容忍解析和序列化XML文档的代价,因为这可以让他们的软件使用范围更宽。<br>
<br>
IBM, Microsoft, UserLand,和DevelopMentor在2000年向W3C提交了SOAP,并成为W3C的Note,SOAP更长远的发展规划现在是由W3C的XML协议工作组来制定。这有力的表明了直到W3C工作组交付规范为止,SOAP都将是一个稳定的规范。<br>
<br>
UDDI (Universal Description, Discovery and Integration Service)<br>
<br>
UDDI为客户提供了动态查找其它web <br>
<br>
services的机制。使用UDDI接口,商务处理可以动态的连接到外部的商务合作者提供的服务上。一个UDDI注册类似于CORBA的trader,也可以把它想象成商业应用程序的DNS服务。一个UDDI注册有两种客户:要发布一个服务(和使用接口)的商务应用,以及想要得到特定服务的客户。下表是UDDI提供服务的概述。UDDI层在SOAP层之上,并假定请求和应答都是以SOAP消息传送的UDDI对象。下面还包含了一个简单的查询。<br>
<br>
<br>
<br>
关于支持全方位的发现(full-featured discovery),UDDI没有一个近期的计划。UDDI希望能够成为支持其它标准的更高层服务的基础。UDDI计划支持更复杂的商务逻辑,包括层次型商业组织。UDDI有着广泛的支持,IBM, Ariba,和 <br>
<br>
Microsoft都全力推动它。到目前为止,它还不是一个开放的标准。<br>
<br>
<br>
<br>
UDDI 举例<br>
<br>
<br>
查询:下面在SOAP封装之内的查询,返回Microsoft的详细信息。<br>
<br>
<br>
<br>
<find_business <br>
<br>
generic="1.0" xmlns="urn:uddi-org:api"> <br>
<br>
<br>
<br>
<br>
face=Arial,Helvetica> <br>
<br>
<name>Microsoft</name> <br>
<br>
<br>
<br>
<br>
face=Arial,Helvetica></find_business><br>
<br>
<br>
<br>
结果:businessInfo元素中包含了Microsoft注册的服务信息,也包括这个UDDI服务本身。<br>
<b