2002-09-17 09:59
WEB服务“不是”什么
WEB服务(Web Services)可能是最近在WEB开发相关话题中最热门的词汇,和所有这些新鲜的前沿词汇一样,对它的定义是多种多样,各大厂商对它的意义也各有说辞。
作为一个技术分析者,我对这些新鲜的市场热门词汇总是充满了好奇心,目前,WEB服务这个词可真是风光一时,几乎所有的业界知名公司都宣布了自己的WEB SERVER相关方案。但它到底是什么?虽然,它里面的确包含了一些新技术(主要指这些标准:你可能听说过的简单对象访问协议即about Simple Object Access Protocol或 SOAP、WEB服务定义语言即Web Services Definition Language或 WSDL、以及统一描述、发现和集成协议即Universal Description, Discovery and Integration或UDDI),WEB服务主要还是对一些已经存在的技术如HTTP,SMTP和XML的包装。
对WEB服务的简要介绍
简单的说,WEB服务是一种通过Internet与SOAP协议提供企业应用的方式,这种方式有很强的可移植性,互操作性,并且没有绑定在任何特定的商家技术上面,这也是它得到如何广泛应用的原因。
从技术上讲,一个WEB服务是这样工作的。想从INTERNET上取得某种服务的客户代理对它的请求以SOAP XML格式进行编码格式化,然后以任意双方都支持的协议(如HTTP,SMTP等等)发送给服务器,服务器上运行着某种类型的侦听软件以解析发来的SOAP呼叫,从SML SOAP包中解析出所需的信息,将之提交到真正处理业务逻辑的应用程序中,服务器上的应用层处理需求并将输出返回给侦听软件,并由它将输出格式化成XML SOAP编码的包返回给客户端。在服务器上有一个单独的XML文件包括该服务器所提供的服务信息并以SDL(服务描述语言Service Descriptor Language)编码,有点类似于COM模型的类型库或CORBA中的IDL文件。
尽管大多数人都表示支持这项技术,在对于这项技术到底能做些什么和这项技术带来的好处仍然存在着很多让人迷惑的地方,在此,我们不详细的说明WEB服务的每个组成部分,而是让分析一下它“不是什么东西?”
WEB服务不是什么
1、
WEB服务不是面向消费者的互联网应用(如在机场获得最新的股票行情或在电影院查询最新的气象资料),而是富有效率的企业间进行交互的方法。它不是一个全新的业务概念,而是一项可以让旧的业务理念得到更好实施的工具。一些有着业已存在的业务联系的公司将会发现,使用经过良好定义的WEB服务将会使它们间的协作更加流畅与高效。
不是为所需进行的每类协作和每个需进行协作的企业定制交互界面,WEB服务提供了对这些交互行为进行统一封装的方法。例如,一个汽车部件销售商利用WEB服务可以很容易的向他的供货商提供一个编程界面检查他的库存情况并及时补足,这个零件销售商可以将这个WEB服务作为某个应用程序的一部分调用并使用这些返回的资料对未来的业务活动进行规划,如果发现什么零件短缺,可以自动订购这种零件以补足库存。
2、 WEB服务不是独立的WEB应用,实际的WEB应用构成了具体的技术基础和WEB服务只是提供交互与综合应用的粘合剂。将WEB服务与WEB应用分离是一些厂家和消费者常犯的错误,仍是采用上面那个汽车零件销售商的例子,创建这个应用的正确方法是规划这家企业的库管理流程,这个过程怎样通过WEB应用来实现自动化,这其中各角色的交互发生在哪个部位,这种交互怎样通过WEB服务来实现。
一个理想的应用开发与配置平台应该能让你使用WEB服务完成整个库存管理自动化与外部交互而无需你做额外的工作。一个比较好的实现方法是允许应用被配置为直接采用WEB服务所提供的模块,也即可以用SOAP/XML格式交换数据(这也是这种模块化方式可以顺利工作的原因)。
每个模块用来处理一处类型的请求,也即处理这种类型要求的业务逻辑。整个应用由几个这样的模块构成,各模块共享会话和数据库状态。模块中的一些请求处理器(如那些接收人们输出的信息的部分)与一些基于浏览器的用户界面(处理HTTP posts/gets信息及HTML页面)进行交互,另外一些请求处理器做为与其它应用程序的中间层,中间层处理通讯层的XML请求并将之提交到业务逻辑层,业务逻辑层处理业务逻辑,如果需要就访问数据层,并将结果以XML形式送回中间层通过通讯层送回客户端。
下图为WEB服务的架构示意图:
而使用一个比较差WEB服务平台将使你不得不为了使用WEB服务而调整你的库存管理流程。
3、 WEB服务并不仅仅着眼于外部,事实上,大量的WEB服务应用着眼于系统内部的交互。因为它的确胜任这样的工作,它提供了一种与网络协议,操作系统平台与应用软件无关的信息交流方式(尽管WEB服务常常采用WEB上的标准协议HTTP,但实际他并不介意系统采用的具体传送与接收机制),
在WEB服务被发明以前,两个应用之间用一种联系非常紧密的方式进行交互,这种方式称为API也即应用程序接口(常通过CORBA或DCOM实现)。当使用WEB服务进行应用的整合时,只要数据元素与文档定义不变,新旧应用可以共同工作而无需对通讯层做任何改变。而如果使用API通讯方式,这将意味着对应用及其客户端进行升级并重新配置。如果是一个分布式的网络应用,对各个网络结点进行同步改变几乎是不可想象的。因此,通过WEB服务进行系统整合,它的服务器与客户端的联系是松散的,应象WEB服务器与浏览器的关系一样。
已经存在的业务逻辑可以通过WEB服务界面被新的应用访问或整合进新的应用里去,例如,试想在一个新的应用中实现用户登录的业务逻辑,认证需要访问一个轻型目录服务LDAP(Lightweight Directory AccessProtocol)数据库,这可以通过对LDAP服务添加WEB服务界面,在认证时只要访问这个界面就可以了。
4、 在WEB服务调用中目前还没有一个公认的XML文件交换格式。WEB服务提供了应用间信息交流的基础,但并没有定义信息应该怎么被结构化以及这些信息的含义。这有点象是关系数据库提供了存贮数据的基础,数据库提供了存储数据的机制,但并不规定表的结构与具体的应用。这即有优点也有缺点。这使标准具备了多样性。去到一个XML站点数一数一共有多少种标记语言是一件让人头疼的事,例如www.xml.org l仅在电子商务领域就列出了八种标准。而且标准的发展近期看来没有任何减慢的际向。目前看来比较领先的是ebXML(XML在EDI应用上的胜利者),估计在18个月以后可以形成一份正式的规范。
应该认识到WEB服务无需一个正式的规范作为发展的起点,聪明的商家正在等待与观察,一旦那些需要密切协作的企业团体与它们的供应商理解数据定义,WEB服务就可以工作了。
5、 现在谈谈目录服务,不发指望会买到一个或几个目录列表,上面列示了几乎全部的可以获得的WEB服务,你可以从上面找到你需要的服务以和这些企业进行交流。这对于查询天气信息之类面向消费者的的应用比较可行,而对于这些可以直接访问到企业内部信息的WEB服务而言,大多数企业并不会让它们暴露在一个人人都可以获得的公共目录列表中,仅管这种想法很吸引人,但它只适用于一些面向普通消费者的简单服务。
6、 仅仅使应用拥有一个WEB服务界面并不能能应用变得强大,安全和可以扩展。你还需要一个强大的平台来实现你的业务逻辑,这个平台可以提供事务安全,集群支持,容错和多用户的同步,而且,真正的企业平台使这一切工作的完成无需开发者额外的编码工作,应用的创建仅需要集中注意力于业务逻辑的规划上面,而底层的工作由平台自动完成。
结论
随着大量的厂商加入WEB服务的行列,关于WEB服务到底是指什么技术与WEB服务能给我们带来什么好处这些问题的答案变的越加糊涂,我们要重申的是,WEB服务的真正价值在于它组织内或外部合作者的交互变的更为容易,它不是产生了一个新的业务原理,而是使旧的业务更容易的被实现。伴随着的真正技术上的突破,强大并易于扩展的平台将可以提供一个自然而且简单的方法来创建和配置WEB应用并以WEB服务的形式为它们创建更大的价值。在不久的将来,企业的实际应用会证实这一点。