前言
当微软,IBM和Sun都同意用一种东西来改变现状的时候会,这个东西是什么呢?实际上,它们已经这样做了
。计算机领域的黑色三人组突然联合了,至少是在它们最近的目标上统一了。他们把脑子里的一个想法强加给了可怜的消费者,销售它们的Web 服务。
我无法确定什么时候软件工业所有的领航灯突然都照到了一点上--特别是当这并不是对明显的用户需求做出的反应--这一点就是Web 服务。
如果一家公司试图卖给你并不了解的东西,那么它通常可能是一厢情愿了。但是Web 服务可能是一种例外。那是因为它们建立在我们已经熟知的事物之上(比方Internet和基于组件的编程)来解决一些实际的问题并创造新的机遇。
怎么做和为什么做
问题是:你如何让应用程序通过Internet彼此之间进行对话?
那么为什么你要让它们进行对话呢?也许这样做是为了让公司内需要知道一个特定的商品价格的应用程序能够自动的询问一个供货商的计算机来实时的获得这些信息
。
或者也许你的公司是一家汽车出租公司,需要允许所有的航空公司能够访问你的出租车预定系统。或者你有一个Web 站点,希望所有的移动电话和无线PDA能够下载你的网站内容而不需要在意这些设备是完全不同的。
今天,所有这些问题的解决方案都是为特定的需求设计特定的程序。每个供货商,航空公司和移动电话或者无线设备数据交换使用的方法可能都不相同。因为考虑到了所有这些复杂性,这些问题中的大多数都还没有得到解决,从而大大损失了软件提供的效率。
Web 服务解决了这个问题,它建立了一套使通讯标准化的方法,使得应用程序和设备通过Internet在前后端共享数据的时候变得更加容易。
演示实例
下面有一个Web 服务的非常简单的例子,这个例子是我在一个由微软发起的Web 服务工作组里创建的
。
我们想做的是在一台Windows计算机上输入一些数据并由另一台计算机把它们分别相加并求出其和,然后它会发加结果。我们使用一台Internet上的Linux计算机来完成相加的工作。
首先,我们创建一个简单的Windows应用程序来输入我们想要相加的数字,然后把它们进行格式化以便Linux程序--即Web 服务--能够理解并处理它们。这个客户端然后搞清楚如何显示Linux平台上生成的结果。
我们现在单击按纽,要相加的数字就被发送到了Linux计算机上,在那里,我们新创建的Web 服务把它们加起来,然后把它们的和返回给Windows计算机,这台Windows计算机知道如何显示这个结果。所有这些都能够正常工作因为已经建立的一些标准能够告诉计算机如何进行通讯。
因为处于Internet之上,Linux计算机应该知道如何向任何一个需要我们这种相加服务的客户端计算机--或者甚至是其它任何一个计算机程序--提供相同的Web 服务。你可以把这个功能修改成比简单的数学计算更重要的东西,它就会变得非常强大。
分享应用程序
Web 服务是关于使用Web 进行信息访问的编程方式:即为复杂的任务提供通用解决方法的框架
。就象Web解决了与寻找和显示信息有关的问题一样--感谢通用语言HTML--Web 服务能够让应用程序广告它们自己并为所有能够通过Internet到达它们的人完成一定的工作。
这种应用程序共享的想法并不是新想法,至少不完全是新的想法。一种叫做时间共享的服务,也就是商业公司能够在一台大型机上租用计算时间的服务曾经是一笔很大的业务。它同时还是ASP或者说应用服务提供商的前身。
相反的是有了Web服务以后你不再是分享一个应用程序而是拥有两个或者多个应用程序通过网络进行通讯和协作。Web 服务可能甚至会只包含应用程序的组件部分。
为什么这个很有前途的技术会被称为Web 服务呢?因为应用程序相互通讯的方法是使用Web 早已经使用的HTTP协议。这意味着应用程序能够以与HTML编写Web页面类似的方式进行通讯。Web 服务的通讯语言被称为XML。
词汇表的解释
编写一篇关于Web 服务的文章的问题是这个主题很快就变得越来越复杂
。想一想你阅读本文所必须的东西:我需要知道如何写文章也必须知道你懂的一门语言。我还需要一种方法来告诉你,你可以获得这个信息。
然后我需要一种方法来发送这个信息,然后你需要一种方法在你的后端应用中访问和显示这个信息。当然你必须要能够阅读你屏幕上出现的一切。
在实际生活中,这个过程看起来相当简单,但这是因为有无数的标准在起作用。Web 服务使用已经存在的一些标准,而另一些标准则已经基本确立,还有一些标准会被创立。所以当你看到一些眼熟或者不熟悉的语言和缩写的时候,比方UDDI, XML, SOAP以及Web 服务的其它一些词汇的时候,不要感到这很愚蠢。