2002-11-26 11:17
Web服务不神秘!
薛斐
传媒的炒作总是在带给你新知识的同时又让你莫名其妙,Web服务又一次落入了这个俗套。值得安慰的是:如果你对Web服务感到困惑,那么请相信你有很多伙伴。所幸的是:你还有足够时间搞清楚Web服务是怎么回事,不至于在技术和观念上落伍。
有人做了一次关于Web服务的问卷调查,让我们看看能得出什么结论。
第一个问题:你如何理解Web服务的概念?
请选择:
A. 关于应用集成和消息传递的协议;
B. 企业协同的功能机制;
C. 软件服务的一种商业模式;
D. 一种软件部件开发框架;
E. 存放数据和信息的一种通用结构;
F. 以上都不是、不清楚或者其他。
大约50%被调查者选择A,另外50%选择了C。但是,专家的回答是选择D应该更贴切。
第二个问题:Web服务究竟是一种有前途的开发平台还是空洞的概念?
绝大多数人都认为是前者。但问题是,如果人们还没有搞清楚Web服务是什么东西,又怎能对此做出正确的判断呢?
第三个问题:Web服务什么时候开始具有商业价值?
大多数人认为,在今后6个月到1年之内将会开始实施Web服务项目,在18个月之后可以看到现实的投资回报。这样的观点在一定程度上反映出人们对Web服务前景的认识还是比较清醒的。毕竟,对Web服务过分地狂热很可能将自己的企业推向万劫不复的境地。
对于第一个问题,有50%的人选择了“一种软件服务的商业模式”,很可能是他们把Web服务与ASP(应用服务提供商)混为一谈了。的确,二者都是把软件当作一种服务来提供,但它们的相同之处仅限于此。ASP是一种商业模式,而Web服务是一种技术解决方案。ASP通过Internet而不是CD-ROM来提供应用软件。Web服务是许许多多的软件部件,允许人们通过网络来实现应用系统集成。
ASP就像是一种不尽如人意的商业模式,被那些糊里糊涂的风险投资商们推上了半空之后又撒手不管了。Web服务会不会重蹈覆辙呢?人们对第三个问题的回答可以让我们持有比较乐观的态度。首先,风险投资商已经不会仅仅看着一纸空文的商业计划就大把掏钱了;其次,Web服务作为一种技术解决方案而不是商业模式,它的发展将会按照技术发展的规律循序渐进。特别是IBM、Microsoft等大公司的支持使得Web服务更像是走在主流技术路线上的正规军。这种技术的成熟是渐进的,人们还有时间慢慢了解和接受这种新技术,但是不闻不问的态度将会让你在龟兔赛跑的老故事当中扮演令人遗憾的角色。
Web服务已经被大肆渲染,几乎让人看不到它的本来面目了。本来并不复杂的概念,因为多种多样的解释,反而变得难以理解。其实,世间万物的原理都是相通的、可以类比的。比如,人们看不见电的流动,但却能看到水的流动;观察水的运动原理,可以帮助人们理解电学原理。
在这里,我们希望用一些更容易理解的方式来说明Web服务究竟是怎么一会事。
基本原理
让我们从最基础的地方说起。Web服务是一些包装在Internet通信协议之中、可以在Internet之中组装和运行的软件部件。这些部件之间可以在不需人工干预的情况下自动地相互通信,既可以运行在防火墙之内的Intranet之中,也可以跨越企业网运行在整个Internet环境之中。设计这些软件部件的方法多种多样,当然最主要的工具可能还是Java。XML (eXtensible Markup Language,扩展标记语言)则用来在Internet或者Intranet之中分发Web服务软件部件。
Web服务体系的核心是软件部件之间的通信。为了实现这种通信机制,首先应该对Web服务部件自身进行详细描述,以便其他的程序可以理解和访问,这正是XML所做的工作——以别的程序可以理解和使用的方式来描述“服务”,称之为服务描述,其中包括访问Web服务所需的全部细节,如软件部件的地址、传输协议、消息格式等。
三块基石
一个用户或者一个程序如果希望使用Web服务,它首先必须找到所需要的服务描述,然后与这个服务建立绑定(Binding)关系。为了实现这一点,在Web服务之中需要三个基本角色:服务提供者、服务注册表和服务申请者。这三个角色需要执行三类基本操作:发布、查找和绑定。
发布操作使得有关Web服务部件的信息能够被别的计算机或者程序所了解,也就是说,“发布”这个操作是Web服务描述广泛传播的基础;“查找”操作为计算机或者程序查找和了解Web服务的内容、所在地和连接方法提供手段;“绑定”操作使得Web服务部件能够被申请者所用。
让我们看看在典型的情况下,服务提供者、服务注册表和服务申请者是如何协同工作的。首先, Web服务被制作成一个软件部件,利用XML建立相应的服务描述。这个服务部件由服务提供者保存,同时也保留着它的XML描述,包括服务的细节、位置、传输协议和消息格式。
服务提供者将服务描述发布到服务注册表上。这是一个公开、可搜索的服务描述索引,人们可以由此找到自己需要的Web服务并被引导到服务提供者。服务注册表的角色就是提供服务描述,以便别的用户可以发现和使用Web服务部件。这个注册表并不是必须的。服务描述也可以通过其他的方式获得,例如ftp网站、Web网站、本地文件或者其他的信息来源。
服务申请者是希望运行Web服务部件的业务过程,也就是Web服务的使用者,可能是某个使用Web浏览器的人,也可能是一个软件,甚至可能是另外一个Web服务部件。通过搜索服务注册表,服务申请者可以找到自己需要的Web服务部件。根据注册表中的信息,服务申请者执行绑定操作,与服务提供者建立联系,运行所需的Web服务。
Web服务的标准协议
Web服务的实现离不开三个标准: SOAP (Simple Object Access Protocol,简单对象访问协议)、 WSDL (Web Services Description Language,Web服务描述语言)和UDDI (Universal Description、Discovery and Integration,通用描述、发现和集成)。
WSDL 是用于建立服务描述的语言,不仅可以描述服务代码所处的位置和运行方式,而且可以提供更高层次的信息,例如这项服务所涉及的业务类型和关联关键字等信息。
SOAP 是服务提供者、服务注册表和服务申请者相互通信的工具,它基于XML,用于在网络应用之间交换结构化信息。一个Web服务部件一经建立,首先要用SOAP来向服务注册表发布其服务描述。此后,服务注册表、服务申请者和服务提供者之间的所有交互都将通过SOAP来完成。
UDDI 是一种用于服务注册表的目录技术,用来建立Web服务部件的目录信息,以便服务申请者查找自己需要的服务。可以认为,UDDI是一个定位Web服务部件的“电信号码簿”,可以是公开的,也可以是私有的。
本文原载于计算机世界报