HP在其高端的UNIX平台上直接迈出了由小型机分布式计算时代进入现代Web Services的令人瞩目的一步。从90年代早期到中期,HP的实验室开始着手研究如何
解决
分布式系统的技术和成本的难题。HP的研究成果被其称为e-Speak,于1999年下半年正式推出。e-Speak致力于解决上节末尾列出的绝大多数需求,也许是业界的第一个Web Services
技术
,当然也是第一个商业性Web Services技术。e-Speak使用HTTP这样的通用协议,数据的表示采用的是XML,并且将各种联网系统看成能够快速插接数据流的“电子服务”("e-services")。不幸的是,e-Speak的理念比目前的Web Services技术内聚性更强 ,HP最近决定淡化e-Speak,转而支持更主流的Web Services。
UserLand社团也试图使用HTTP和XML技术来满足上述需求。UserLand的Dave Winer领导了XML-RPC的开发工作。XML-RPC是一个简单的用于调用远程方法的系统,其协议文本只有短短的几页。目前,XML-RPC在开放原码领域仍然十分流行。开放原码领域内相互竞争的项目和众多开放并且许可证免费的实现使XML-RPC具有良好的互操作性和低廉的成本。但是,由于XML-RPC的草根出身和较早的推出时间,使其不可避免地存在一些显著的不足。例如,XML-RPC坚持使用ASCII字符串(虽然它使用的是国际化支持良好的XML标准),这导致其基本上只能在英文环境中使用。而且,XML-RPC在数据类型的选择方面也比较随意。但是,更重要的是,XML-RPC被限制在使用高度统一和结构化消息格式的简单请求/响应服务上。
在XML-RPC出现的同时,也存在其它更通用的XML消息
通讯
机制。虽然它们中的大多数其实更适合于程序语言结构(constructs)的序列化(serialization)和数据库的内容转储(dumps),而不是用于面向文档的消息通讯,但是比起严格的RPC方式来,还是要更灵活一些。其中最有名的是Allaire 公司提出的Web分布式数据交换协议(WDDX),目前一个相关的社团在继续这个开放规范的继续开发。
与此同时,XML和Internet协议也对像EDI业界这样的其它技术团体带来革命性的影响。首先,出现了运行在SMTP(e-mail)上的EDI,同时为了避免增值网络(VANs)高昂的交易费用,HTTP(Web)也被EDI采纳。接下去,诸如欧洲的CEN/ISSS和美国的XML/EDI等团体开始开发将EDI交易编码成为XML的技术,因为EDI交易的消息内容以杂乱出名。这一系列的趋势使得早期出现的Web Services主要解决的不是企业应用集成(EAI)的问题而是主要用于简化B2B交易。这些早期的XML/EDI系统在设计中利用了现有的稳定和通用的EDI流程协作、安全等高级机制,而这些恰恰是目前Web Services仍旧缺少的。这些努力导致了一个叫做电子
商务
XML(ebXML)的正式标准的出台。ebXML的支持者主要来自EDI阵营,但是稍后一般被认为是擅长过程和对象的Sun也加入进来。从1999年底开始,ebXML进入了18月的开发周期。ebXML由SGML/XML业界先驱OASIS和在传统EDI开发的扮演关键角色的联合国贸易推进和
电子商务
组织(UN/CEFACT)共同开发和维护。
回溯到1998年,一个用于结构化交换XML文档的规范——简单对象访问协议(SOAP)在一个小范围的组织中间酝酿,其中也包括软件巨人Microsoft。由于一些政治方面的原因,SOAP直到1999年下半年才正式发布。
2001年4月召开的W3C Web Services研讨会(W3C Workshop on Web services,WSWS)是对Web Services的未来发展的规划。此前,Web Services主要是在W3C之外由草根阶层或者诸如UDDI.org这样的独立团体进行开发。W3C对Web Services的支持是自然而然的事情。正如,它也是HTML、XML等其它Web标准的制订者一样。WSWS的目标是要确定W3C中有关Web Services的活动的形式和目标。W3C已经成立了XML协议工作组(XML Protocol working group ,XMLPWG),虽然到目前为止,该工作组除了将一系列XML建议和候选协议分门别类之外,没有完成多少实质性的工作。对WSWS而言,XMLPWG将不断充实,以便将SOAP扩展成为一个完善的W3C推荐标准。
对Web Services而言,机会在于使各种技术战略获得新生。WSWS正在考虑在基本协议的基础上实现一系列的高级特性:
IBM提出的Web Services节点语言(WSEL)试图解决Web Services的服务质量(QoS)等网络管理方面的问题,Web Services流语言(WSFL)则致力于Web Services的流程协作。
HP的eSpeak技术提出了更广泛和雄心勃勃的Web Services战略,讨论各类特定服务的核心概念和运行环境的需求,特别是对小型嵌入式设备的支持。
Microsoft也在强调QoS,并和IBM一起联合开发。
Jamcracker与BEA强调Web Services在集成方面的重要性。
Verisign强调安全性的重要性和数字
认证
的作用。Novell则强调在目录服务中授权和认证的管理。
其它的一些开发商则只是演示各自开发的支持Web Services开发和部署的专有框架,并将其作为未来可能出现的协议标准的模型提出。
WSWS同时拥有来自Web Services草根阶层(比如,UserLand 的Dave Winer,XML-RPC和SOAP的开发者)和来自OASIS和ebXML的代表。后者最近刚刚结束了一场Web Services社团内部争论,决定采用一个基于带附件email的SOAP传输协议(SOAP over e-mail with attachments)来代替一个此前开发出的更加细化的特殊的消息通讯协议。笔者本人也受邀发表一篇关于如何使用W3C的资源描述框架标准(Resource Description Framework ,RDF)来集成Web Services和其它元数据系统的论文。
协议栈的进展
WSWS的主要目的是构建Web Services的“协议栈”或称体系结构。诸如Qos(服务质量)、安全性、流程协作(orchestration)以及事务管理等标准都将在这个协议栈中找到自己的一席之地。SOAP和WSDL已经确立了Web Services核心标准的地位,所以主要厂商间填补协议栈空缺部分的争斗成为2002下半年的主旋律。
安全性一直是受到特别重视的领域。很容易理解,在Web Services成为公司防火墙外部流行的通讯机制之前,强有力的安全性必须得到保证。安全性表现于多个方面,其中之一是保证传输的内容(payload)不被篡改。W3C的XML签名(XML Signature)工作组致力于开发用于XML文档的
数字
签名系统,支持诸如canonicalization (c14n)等协议规范。c14n将XML文档转换成一种标准格式以免诸如XML属性的排列顺序不会对XML文档含义带来影响的因素造成数字签名系统的误判。XML加密工作组(XML Encryption working group)致力于加密技术,制定包括加密数据并保证结果为格式良好(well-formed)的XML文档的XML加密句法和处理规范。XML密钥管理工作组( XML Key Management working group)则制定用于管理数字密钥和信用认证令牌(trust certification tokens)的简单Web Services规范。2002年新出现的标准还包括安全断言标记语言(SAML)和WS-Security规范框架。我将在本文的下部讨论这几个规范标准。
商业流程和工作流是协议栈中标准制定工作的另一活跃领域。ebXML是该领域的早期成员。ebXML协议族中的商业流程规范模式(BPSS)和其注册与存贮(registry and repository)标准提供了对管理业务伙伴能力和协议的支持。它同时还对持续运行交易(long-lived transaction)的管理,安全以及服务质量提供支持。处于发展早期的还包括IBM、HP、Oracle、Sun等提出的交易权限标记语言(XAML)。该协议已经合并进入其它Web Services的交易规范的制定工作。IBM的WSFL和WSEL分别针对工作流和服务质量(Qos)提出。微软则提出了名为XLANG的工作流协议。WSFL和XLANG都是对WSDL的扩展,正如人们预期的那样,这两个标准被合并成为一个更为通用的商业流程语言WS-Coordination。在本文的下部,我将讨论WS-Coordination,WS-Transaction 和 BPELWS。
迈入2002
当我们迈步进入2002年,Web Services在各个层面均获得了长足的进展。在草根阶层,多个开发者团体开始着手解决早期Web Services声名狼藉的互操作性(interoperability)问题。在公司内部,Web Services协议栈逐渐成型,开发商们迫切地期望Web Services相关规范尽快完善。在本文的第二部分,我将勾勒出Web Services在当前(2002年)的状况,并且展望其未来发展。
Web Service 是一种新的web应用程序分支,他们是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。
Web Service是一种应用程序,它可以使用标准的互联网协议,像超文本传输协议(HTTP)和XML,将功能纲领性地体现在互联网和企业内部网上。可将Web服务视作Web上的组件编程。
Web服务是建立在一些通用协议的基础上,如HTTP,SOAP,XML,WSDL,UDDI等。这些协议在涉及到操作系统、对象模型和编程语言的选择时,没有任何倾向,因此将会有很强的生命力。但具体到Web服务编程,.NET和J2EE有一些区别。.NET Web服务可用C#,VB,JScript等语言编写,还能利用一些Windows资源;而J2EE Web服务一般使用JAVA语言及J2EE资源,像Bean,EJB,CORBA等。它们在编程环境,语法结构,管理配置等方面也各有自己的特色。iNET Web服务用JAVA语言实现了.NET 类库中提供的Web服务APIs。它能把用户用.NET开发的Web服务移植到与平台无关的JAVA。因是JAVA,故也可利用JAVA的资源。
Web Services扮演什么角色?
上述的这些趋势意味着,更加智能的处理,操作和汇总内容变得十分重要。让我们看看按照Web services角度所预示的四个趋势:
◆内容更加动态:一个web service必须能合并从多个不同源来的内容,可以包括股票,天气,新闻等,在传统环境中的内容,如存货水平,购物订单或者目录信息等,都从后端系统而来
◆带宽更加便宜:web services可以分发各种类型的内容(音频,视频流等)
◆存储更便宜: web services必须能聪明地处理大量数据,意味着要使用数据库,LDAP目录,缓冲,和负载平衡软件等技术保持可扩展能力
◆普遍式计算更重要:web services不能要求客户使用某一版本的windows的传统浏览器,必须支持各种设备,平台,浏览器类型,各种内容类型。
要达到这样的目标,Web services要使用两种技术:
◆XML XML是在web上传送结构化数据的伟大方式,Web services要以一种可靠的自动的方式操作数据,HTML不会满足要求,而XML可以使web services十分方便的处理数据,它的内容与表示的分离十分理想
◆SOAP SOAP使用XML消息调用远程方法,这样web services可以通过HTTP协议的post和get方法与远程机器交互,而且,SOAP更加健壮和灵活易用。
其他象UDDI和WSDL技术与XML和SOAP技术紧密结合用于服务发现。
那么什么是web service 平台呢?最基本的平台是XML加HTTP。HTTP是一个在Internet上广泛使用的协议。XML是一种元语言,你可以用它书写特定的语言来描述客户和服务之间或者组件和复杂服务之间的交互。在web server之后,XML格式的消息被转变成中间件的请求,返回的结果也会转化成XML格式。
有必要增加一些服务,同时保持简单性和普遍性,来把
Web
构建成一个功能更强大的平台。可以认为功能全面的web services平台是XML+HTTP+SOAP+WSDL+UDDI。在更高层次上,可能还要加上一些尚未广泛接受的技术如XAML,XLANG, XKMS,和XFS。