Web service是什么?

转自:http://www.ruanyifeng.com/blog/2009/08/what_is_web_service.html

我感觉,这是未来互联网发展的方向。

我会把学习笔记和心得,同步放到这个网志上,欢迎大家参观指正。今天先写一个最基本的问题,Web service到底是什么?

Web service的概念

W3C给Web service下过一个定义,说它是一个软件系统,“用来控制机器之间的互动”( a software system designed to support interoperable machine-to-machine interaction over a network)。

这个定义比较抽象,我觉得,简单说,Web service就是调用其他网站的资源的一种方法

举例来说,去年我写过一个“四川大地震图片墙”,它能动态显示关于四川地震的最新图片。但是,所有的图片都不是储存在我的服务器上,而是来自flickr.com。我只是发出一个动态请求,要求flickr.com向我提供图片。这种情况下,flickr.com提供的就是一种Web service。

所以,通俗地说,Web service(以下译为Web服务)就是让你的网站可以使用其他网站的资源,比如在网页上显示天气、地图、twitter上的最新动态等等。

Web服务和本地服务

与Web服务相对应的概念,就是“本地服务”。

完成同样一项任务,如果不需要调用其他网站的资源,都靠本地资源完成,我们就把这称为“本地服务”。还是以我的图片墙为例,如果我把图片都存放在本地服务器,不调用flickr.com,那么我就是在使用“本地服务”。

这就好比,一件事你可以自己做,也可以交给另一个人去做。比如,我肚子饿了,我可以自己做饭,也可以打电话去订一份比萨,让店家送上门。

Web服务的基本思想,就是尽量把事情交给其他网站去做,自己轻易不要去做。举例来说,我要计算1+1=?,我可以在自己的计算机上写一个程序,也可以交给网上的另一台计算机,等它计算完毕后,再把结果返回给我。web服务要求我们尽量不要写本地的程序,而是把它“外包”出去。

顺便提一句,最近“云计算”这个名词很红,在我看来,它不过是“web服务”的另一种故弄玄虚的说法而已。它不说你把事情交给其他网站去做,而说你把事情交给“云”去做。

本地服务的缺陷

为什么不提倡使用本地服务呢?主要因为以下三个原因:

* 本地资源不足。很多数据和资料,本地得不到,只有向其他网站要。

* 成本因素。本地提供服务,往往是不经济的,使用专业网站的服务更便宜。这里面涉及硬件和人员两部分,即使你买得起硬件,专门找一个人管理系统,也是很麻烦的事。

* 可移植性差。如果你想把本机的服务,移植到其他机器上,往往很困难,尤其是在跨平台的情况下。

Web服务的优势

为什么说Web服务是互联网发展的趋势呢?除了本地服务的缺点以外,还有这么几点:

* 平台无关。不管你使用什么平台,都可以使用Web服务。

* 编程语言无关。只要遵守相关协议,就可以使用任意编程语言,向其他网站要求Web服务。这大大增加了web服务的适用性,降低了对程序员的要求。

* 对于Web服务提供者来说,部署、升级和维护Web服务都非常单纯,不需要考虑客户端兼容问题,而且一次性就能完成。

* 对于Web服务使用者来说,可以轻易实现多种数据、多种服务的聚合(mashup),因此能够做出一些以前根本无法想像的事情。

Web服务的趋势

根据我的观察,目前Web服务有这样几种变化趋势。

* 在传输方式上,RPC协议和soap协议的使用在减少,HTTP协议中GET方法的使用在增多。

* 在数据格式上,XML格式的使用在减少,json等轻量级格式的使用在增多。

* 在网站架构上,越来越多的程序不再从服务器端发起Web服务的请求,而是直接让客户端(即浏览器) 发起Web服务的请求。

posted @ 2009-12-02 10:35  美梦成真  阅读(647)  评论(0编辑  收藏  举报