2002-09-16 09:54
正确认识“Web服务”
在日常的IT活动中积蓄了力量之后,应用程序设计领域中的下一波潮流即将到来了.这潮流就是Web服务--也即是通过基于XML(可拓展的标记语言)的SOAP(简单对象访问协议)可以进行访问的商业逻辑和信息。
在本文中, eWeek Labs解释了为什么Web服务能够降低成本并加强商业联系以及应该在什么时机下在电子商务活动的战略计划中加入这种结构和加入这种结构的方法.
直到现在,而且至少在未来一段较短的时间内, Web 服务还只是销售商鼓吹的概念, 而不是确实的实物,虽然微软和Sun 公司已经分别基于这个概念开发了它们的.NET和Sun ONE 开发系统. 但它们不是唯一的--除了一夜之间出现的成百上千的Web服务支持者们还有那些目前对万维网联盟的XML和SOAP标准不甚狂热的开发者.
Web 服务是异构网络伟大的均衡器, IT业通用的信息交流技术.
事实上,在千差万别的硬件平台之间进行容易的通讯是Web服务架构最明显--也最直接的好处之一. 例如, 一个员工可以使用基于J2ME(Java 2微型版)的手持设备, 比方说摩托罗拉iDen移动电话, 来直接访问一台基于IBM OS/390的主机上的服务(在这种情况下,需要Lutris Technologies 公司的J2ME SOAP客户程序并在主机上运行IBM 或 Iona Technologies公司的SOAP服务程序).
Web 服务还最有可能成为使用松散耦合的IT结构的新一波电子商务联系的基础. Web 服务能够让企业选择性的使它们的商务伙伴能够访问其内部的应用程序和数据而不需要为每一个商务伙伴特别设计一个网关. 它们也使得公司能够访问其它公司提供的同样的服务,创建客户程序来实时的从一个广泛的内部和外部资源收集信息.
Web 服务要成为通用的计算平台还需要很多年;许多外部Web 服务所需的内部架构, 诸如授权和支付系统还无法获得.
但是, 一些演示性的服务已经在网上出现了:xmethods.net Web 站点提供FedEx公司的包裹追踪, 货币转换 和查询加里福利亚州高速公路路况信息的服务;集成工具销售商Cape Clear软件公司提供机场的天气预报;Continental Airlines航空公司提供飞行状态信息;而ActiveState公司提供股票交易信息. 另外,微软公司的HailStorm项目的目的就是要提供多种Web服务.
当然,在关键的内部架构中采用Web服务的时候是必须要小心的; 这种技术仍然处在开发者的预览阶段, 而且不同的SOAP实现之间存在互连性问题.例如,微软的.NET要求处理HTTP SOAPAction头信息,但是Apache Software Foundation公司的Apache SOAP的缺省方案却是不需要.
开发工具的缺乏成为了采用Web服务最大的绊脚石. 虽然Web服务的标准(如XML 和 SOAP)和基本库(如Apache SOAP)现在已经相当稳定,但主流的开发工具仍然无视新平台的存在.
在Web服务领域内一个相对领先的软件是Borland 软件公司的Delphi 6, 它在六月份被发布并提供了对创建SOAP服务程序和SOAP客户程序的原始支持.另一个处在Web服务边缘的公司是IBM,它在上个月发布了它的WebSphere 4.0 应用服务软件和集成的SOAP开发工具.
但是,即使一个企业使用的开发工具不提供对Web服务的原始支持,只要它们使用的语言支持Internet协议和XML, 开发Web服务也不是那么难.
关键的一点是,现在应该考查这些技术并比较它们之间的优点,而eWeek Labs建议在明年采用Web 服务, 首先从内部开始然后选择性的使用到外部的商业伙伴上去.
虽然不同硬件和分部的网络之间的互连性是Web服务的最终目标,但我们对早期采用Web服务的公司的调查显示了一个另人惊讶的发现:Web服务最直接的好处是在严格的内部实现上--例如,数据库集成的工作.
"人们对于Web服务的内部使用存在很大的兴趣,我们决定使它成为我们整个架构的一部分,"Sanjay Sarathy说, 他是加里福利亚州,Snta Clara市,Sun-Netscape联盟,iPlanet公司的产品营销,应用程序和集成业务的主任."从内到外的构建过程吸引了许多人. 特别的同时基于内部和外部来实现它是困难的."
一个特别困难的互连性障碍--Windows程序使用的微软COM(组件对象模型)与Sun公司的JavaBeans和企业版JavaBeans对象模型之间的鸿沟--通过SOAP已经更容易越过了.
在eWeek Labs的测试中, 我们修改了一个基于SOAP的Java客户应用程序,它原先是被设计调用iPlanet应用服务器(它使用Apache公司的Apache SOAP 工具包来提供Web服务支持)上的代码,修改以后,它调用的是我们用微软C#.NET语言编写的在Windows 上运行的一个组件.
其它的一些努力, 尤其是对象管理组织的CORBA(通用对象请求代理结构),曾经企图提供分部式的计算."CORBA的问题在于它变得有些过分庞大,"加州 Santa Cruz市 Lutris Technologies公司的首席宣传官,David Young说. 在九十年代早期,Young曾在X/Open标准团队工作,当时CORBA的开发工作正进行得如火如荼."它火得过了头,"Young 说,"希望满足所有人的所有要求. SOAP是软件实现细节无关的一个更简单的概念.SOAP 绝对是建立一个美丽的,简洁的,可以互连的软件世界的关键."
SOAP的范围必须相当的广泛以支持它所承诺的一切,特别是对于一个还只有两岁大的协议来说. 而且,它的能力是惊人的, 因为SOAP和相关的技术正被广泛而快速的采用--即使是微软和SUN这样的死对头,Web服务已经成为一种现实. SOAP 站点www.soapware.org 列出了71个支持SOAP的软件包,而更多的软件包还在开发之中.
另外, Web服务的变种内构--比方说对可用的服务的列表显示和对加密标准的建议,数字签名和消息路由--都在快速的出现.Web服务的目录被列出在微软和IBM公司的Universal, Description, Discovery 和 Integration 目录里, 其它的公司也会很快赶上来的.
在两到三年内, 对于应用程序如何获取信息并在什么地方获取信息以及如何进行事务处理,我们将看见一个更加灵活的模式.基于更加容易处理的XML的良好定义的接口,再加上内部的和外部的服务列表,这些都将使得在大部分地方重新发明编程工具变得没有必要.
当我遇见微软的程序语言设计师Anders Hejlsberg的时候, 他将C#(C sharp)描述成" C/C++ 家族中第一个真正的面向组件的语言."程序组件中数据(属性)和行为(事件)的编程模型在C#中得到了比Java更自然的支持,他说."[Java]用访问方法的命名转换模拟对象属性而用适配器和管道模拟事件处理,"Hejlsberg说.他承认 Java和C++都支持面向组件的编程风格,但是他也指出了这些语言中的区别,"组件并不是第一位的"--他的意思是在C#中,诸如改变一个图形按纽控件的标题之类的操作将使用更少的代码和更简单的语法,因为按纽已经成为了一个负责管理自己的外观和用户感觉的组件了.面向组件,Hejlsberg表示,能够让开发者在任何用户希望访问Web 服务的地方嵌入自己的软件.下面是C++, Java和C#各自特点的比较.--Peter Coffee。