文章教程

16.1Web服务的概念

8/31/2020 9:52:39 PM 人评论 次浏览

16.1 Web服务的概念

Web服务是一种可以从Internet上获取服务的总称,它使用标准的XML消息接发系统,并且不受任何操作系统和编程语言的约束。Web服务既可以在内部由单个应用程序使用,也可通过Internet公开供任意数量的应用程序使用。由于可以通过标准接口访问,因此Web服务使异构系统能够作为一个计算网络协同运行。

开发人员过去在创建分布式应用程序时通常使用组件,现在可以使用与此大致相同的方式来创建将来自各种源的Web服务组合在一起的应用程序。Web服务正在开创一个分布式应用程序开发的新时代。作为Internet下一个革命性的进步,Web服务将成为把所有计算设备链接到一起的基本结构。

分布式计算是将应用程序逻辑分布到网络上的多台计算机上。要把应用程序逻辑进行分布的原因有许多,比如:

(1)分布式计算使得链接不同的机构或团体成为可能。

(2)应用程序访问的数据通常位于不同的计算机上,应用程序逻辑应当靠近数据所在的计算机。

(3)分布式应用程序逻辑可以在多个应用程序间重用,升级分布式应用程序块时不必升级整个应用程序。

(4)通过分布应用程序逻辑,使得负载分摊到不同的计算机,从而提供了潜在的性能优化。

(5)当新的需要产生时,应用程序逻辑可以重新分布或者重新连接。

(6)扩展一层比扩展整个应用程序容易。

随着Internet的不断发展,Internet增强了分布式计算的重要性和适用性。Internet的简单易用和无处不在的特性使得分布式计算作为分布式应用的重点成为必然的选择。

当前,已经发明出许多计算技术来支持分布和可重用应用程序逻辑,如基于组件的分布式计算协议有CORBA(Common Object Request Broker Architecture,通用对象请求代理结构)、DCOM(Distributed Component Object Model,分布式组件对象模型)等。尽管CORBA和DCOM有许多相同之处,但是它们在细节上不同,使得协议间的互操作很难进行。

表16-1列出了CORBA、DCOM和Web服务之间的特点。

表16-1 CORBA、DCOM和Web服务之间的异同

alt

从技术上看,Web服务试图解决CORBA和DCOM所遇到的问题,比如,如何穿越防火墙、协议的复杂性、异类平台的集成等。

在XML WebService之前使用的其他协议,如DCOM、CORBA、RMI等技术,虽然也可以实现分布式计算,但是这些技术使用封闭的或受严格限制的TCP/IP端口,或者需要依赖附加的软件或操作系统,不适合在Internet环境下应用。

客户端调用远程服务时所传递的数据或对象,需要按照某种协议格式进行转换后再发送到网络上,这个过程称为串行化,反方向解构称为并行化。在串行化问题上,CORBA和DCOM是基于复杂的格式,而Web服务是基于简单、易读、可扩展的XML协议的。

CORBA和DCOM是面向连接的,客户端持有服务器的连接,服务器可以持有代表客户机的状态信息,它可以生成事件通知客户端,向客户机激发事件,这种面向连接的特性带来了灵活性和实时性。因而,CORBA和DCOM在使用运行于相同平台的软件和紧密管理的局域网创建企业应用程序时非常优秀。然而,在创建跨Internet、跨平台的适应Internet可伸缩性的应用程序时显得力不从心,因为客户机可能长时间不调用服务器,或者客户机在连接到服务器后由于某种原因崩溃了,它与服务器的连接没有释放,浪费了服务器的资源。Web服务之所以会出现,就是为了克服上述的缺点。

从技术上而言,Web服务的定义是:Web服务是以独立于平台的方式,通过标准的Web协议,可由程序访问的应用程序逻辑单元。

下面对上面的定义中的专业术语作一个解释:

(1)应用程序逻辑单元

Web服务包括一些应用程序逻辑单元或者代码。这些代码可以完成运算任务,可以完成数据库查询,可以完成计算机程序能够完成的任何工作。

(2)可由程序访问

当前大多数Web站点都是通过浏览器由人工访问的,Web服务可以由计算机程序来访问。

(3)标准的Web协议

Web服务的所有协议都是基于一组标准的Web协议,如HTTP、XML、SOAP、WSDL、UDDI等。

(4)平台独立性

Web服务可以在任何平台上实现。因为标准协议不是由单个供应商专用的,它由大多数主要供应商支持。

Web服务允许分布式应用程序通过网络(通常是Internet)共享业务逻辑。例如,证券公司提供股票报价服务,咨询机构使用其报价服务。

Web服务使用可以超越各种机器平台和操作系统的通用协议(HTTP/HTTPS)和通用语言(XML),因此它非常适合在Internet上实现业务逻辑的共享服务。

如图16-1演示了客户机调用Web服务方法时的工作流程,客户机可以是一个Web应用程序、另一个Web服务或Windows应用程序(如WORD等)。

alt

图16-1 Web服务工作流程

在介绍了Web服务的概念和工作流程后,来看一个比较常用的Web服务应用。大家都知道目前许多的网站特别是门户或者是网址导航的网站都有提供各个城市的天气预报,如图16-2所示,可以通过定制省份和相应城市来获取该城市的天气预报信息。事实上,这种天气预报并非该网站本身实现的功能,只是使用了互联网上其他提供天气预报网站的Web服务而已。

alt

图16-2 提供天气预报的网站

现在打开如图16-3所示这样一张页面。该页面的功能实现这样一种功能,在文本框中输入一个城市名称,然后单击“调用”按钮。

alt

图16-3 天气查询Web服务

浏览器的网页中显示如图16-4所示的一个XML文件,内容是用户所选城市的天气预报的详细情况。

alt

图16-4 返回天气预报

现在知道了,原来在互联网上还存在着这样一种提供信息的途径,接下来就是如何利用这些信息,以需要的形式运用于自己的程序中。用这种方式提供的信息不但可以应用于Web应用程序,还可以用于Windows应用程序。返回的信息采用了XML的格式,这样做的好处在于可以在不同的系统之间传递数据。

Web服务就像组件一样,类似于一个封装了一定功能的黑匣子,用户可以重复用它而不用关心它是如何实现的。Web服务提供了定义良好的接口,这些接口描述了它所提供的服务,用户可以通过这些接口来调用Web服务提供的功能。开发人员可以通过把远程服务、本地服务和用户代码结合在一起来创建应用程序。

教程类别