我认为,下一代互联网软件将建立在Web service(也就是"云")的基础上。
我把学习笔记和学习心得,放到网志上,欢迎指正。
今天先写一个最基本的问题,Web service到底是什么?
一、Web service的概念
想要理解Web service,必须先理解什么是Service(服务)。
传统上,我们把计算机后台程序(Daemon)提供的功能,称为"服务"(service)。比如,让一个杀毒软件在后台运行,它会自动监控系统,那么这种自动监控就是一个"服务"。通俗地说,"服务"就是计算机可以提供的某一种功能。
根据来源的不同,"服务"又可以分成两种:一种是"本地服务"(使用同一台机器提供的服务,不需要网络),另一种是"网络服务"(使用另一台计算机提供的服务,必须通过网络才能完成)。
举例来说,我现在有一批图片,需要把它们的大小缩小一半。那么,我们可以把"缩放图片"看成是一种服务。你可以使用"本地服务",在自己计算机上用软件缩小图片,也可以使用"网络服务",将图片上传到某个网站,让服务器替你缩小图片,完成后再通过网络送回给你。这就好比,一件事你可以自己做,也可以交给另一个人去做。肚子饿了,你可以自己做饭,也可以打电话去订一份比萨,让店家替你做好送上门。
"网络服务"(Web Service)的本质,就是通过网络调用其他网站的资源。
举例来说,去年我写过一个"四川大地震图片墙",它能动态显示关于四川地震的最新图片。但是,所有的图片都不是储存在我的服务器上,而是来自flickr.com。我只是发出一个动态请求,要求flickr.com向我提供图片。这种情况下,flickr.com提供的就是一种Web service。如果我把图片都存放在本地服务器,不调用flickr.com,那么我就是在使用"本地服务"。
所以,Web service让你的网站可以使用其他网站的资源,比如在网页上显示天气、地图、twitter上的最新动态等等。
二、Web Service架构和云
如果一个软件的主要部分采用了"网络服务",即它把存储或计算环节"外包"给其他网站了,那么我们就说这个软件属于Web Service架构。
Web Service架构的基本思想,就是尽量把非核心功能交给其他人去做,自己全力开发核心功能。比如,如果你要开发一个相册软件,完全可以使用Flickr的网络服务,把相片都储存到它上面,你只要全力做好相册本身就可以了。总体上看,凡是不属于你核心竞争力的功能,都应该把它"外包"出去。
最近很红的"云计算"(cloud computing)或者"云服务"(cloud services),实际上就是Web Service的同义词,不过更形象一些罢了。它们不说你把事情交给其他计算机去做,而说你把事情交给"云"去做。
三、本地服务的缺陷
"网络服务"是未来软件开发和使用的趋势,本地服务将用得越来越少,主要因为以下三个原因:
* 本地资源不足。很多数据和资料,本地得不到,只有向其他网站要。
* 成本因素。本地提供服务,往往是不经济的,使用专业网站的服务更便宜。这里面涉及硬件和人员两部分,即使你买得起硬件,专门找一个人管理系统,也是很麻烦的事。
* 可移植性差。如果你想把本机的服务,移植到其他机器上,往往很困难,尤其是在跨平台的情况下。
四、Web Service的优势
除了本地服务的缺点以外,Web Service还有以下的优越性:
* 平台无关。不管你使用什么平台,都可以使用Web service。
* 编程语言无关。只要遵守相关协议,就可以使用任意编程语言,向其他网站要求Web service。这大大增加了web service的适用性,降低了对程序员的要求。
* 对于Web service提供者来说,部署、升级和维护Web service都非常单纯,不需要考虑客户端兼容问题,而且一次性就能完成。
* 对于Web service使用者来说,可以轻易实现多种数据、多种服务的聚合(mashup),因此能够做出一些以前根本无法想像的事情。
五、Web service的发展趋势
根据我的观察,目前Web service有这样几种发展趋势。
* 在使用方式上,RPC和soap的使用在减少,Restful架构占到了主导地位。
* 在数据格式上,XML格式的使用在减少,json等轻量级格式的使用在增多。
* 在设计架构上,越来越多的第三方软件让用户在客户端(即浏览器),直接与云端对话,不再使用第三方的服务器进行中转或处理数据。
(完)



张昭 说:
而且是异步的,因此受到广泛欢迎
2009年8月26日 20:57 | 档案 | 引用
黑眼刀豆 说:
推荐雅虎的YQL
2009年8月26日 20:59 | 档案 | 引用
半就业 说:
不过如果这个网遇到一堵墙又该怎办。安全性也是个问题。
2009年8月26日 21:00 | 档案 | 引用
穿越火线 说:
怎么没人扯淡?大
家用什么浏览器?
2009年8月26日 22:50 | 档案 | 引用
ccoder 说:
开发api是大趋势,社会化网络很吸引人,该死的gfw
主力firefox,试用&适应chrome
2009年8月26日 23:50 | 档案 | 引用
刻奇 说:
太好了,这是我ServiceScience的主攻方向。未来是服务的未来。
2009年8月27日 00:03 | 档案 | 引用
微蓝 说:
那会不会涉及版权之类的问题啊?
2009年8月27日 08:42 | 档案 | 引用
红叶枫了 说:
基本不会涉及到版权问题,因为API都是人家开放了我们才能用。而且,人家还乐意让你用呢...
2009年8月27日 11:04 | 档案 | 引用
redthink 说:
API是主流了。现在开心农场都是这么搞的
2009年8月27日 14:03 | 档案 | 引用
robyy 说:
感觉云计算,SaaS都是WebService的具体表现或延伸
2009年8月27日 14:50 | 档案 | 引用
salmon 说:
阮哥你好,虽然订阅你的博客才一个多月,从你的文章里还是蛮有收获的,与你所关注的东西也有挺多重合,会长期订阅这个网站的。
最近想翻译一本书,综述、技术类的,希望扎实技术的同时练练英语水平。以前没有做过这方面的工作,又不想盲目开始以致翻译质量太差,所以请教大哥一点这方面的注意事项或是推荐些相关文章。多谢!!
2009年8月28日 13:38 | 档案 | 引用
LC 说:
我是IT外行,请问web service是免费的吗?
对于外包的服务,如何监督保证它的质量呢?
2009年8月29日 05:52 | 档案 | 引用
liam 说:
再次希望了解博主的专业方向和自己学习的经历,对我们可能会有很大的帮助
2009年8月30日 03:42 | 档案 | 引用
Ruan YiFeng 说:
有收费的也有免费的。至于质量,如果不行的话,当然就不会有人用它了
这个没有窍门,主要还是读懂原文。我一时想不出可以推荐哪些文章,我自己的学习经验就是多读一些中英对照的优秀译文。
2009年8月30日 22:22 | 档案 | 引用
salmon 说:
我想还是先译几章,看看翻译过程中都会出现哪些问题再针对问题学习。可能这样就会影响进度了,呵呵。多谢!
2009年9月 1日 08:25 | 档案 | 引用
huangliujing 说:
能介绍一个,进入这一方向的研究,须要具备的一些相关基础吗?
2009年9月 9日 14:33 | 档案 | 引用
mygod 说:
我才接触web Service, 感情看了博主的介绍,清楚了一些,有些地方的介绍满不清楚的哈!你写的比较白话,嘿嘿!很多地方都搞了一堆的英文简写!
2009年9月21日 22:08 | 档案 | 引用
Jackie 说:
小伙子说的相当不错
2009年9月22日 18:56 | 档案 | 引用
bright 说:
希望阮大哥继续往下写啊!
2009年9月23日 20:47 | 档案 | 引用
carmale 说:
继续关注
2009年10月10日 17:22 | 档案 | 引用
leayoo woo 说:
我是个初学者,看了这篇文章才对web service有了一点了解,想了解点这方面的东西,只看了xml的一点内容。希望您能提供一点相关的连接或者提供一些比较权威的文章参考一下!谢谢拉!
2009年10月12日 13:46 | 档案 | 引用
boll 说:
关于传输方式,soap也是用的http协议吧,http的get方法只是http的内置方法,在rest风格的架构中,是基于http协议的,使用http协议的post、delete ,put、get方法分别对应增、删、改、查。我觉得是基于soap的在减少,基于rest的在增多
2009年10月21日 16:30 | 档案 | 引用
Alvin 说:
我原来只知道有WebService这个东东,但看了阮大哥这篇文件后,我才明白Webservice是这样一个东东,你的文章很容易让人理解。谢谢啦!
2009年10月22日 14:40 | 档案 | 引用
Cherry 说:
确实是个好东西,WebService用的地方越来越多了。
2009年10月27日 23:19 | 档案 | 引用
huahua604 说:
确实不错,看到其他解释的都比较笼统,看完这篇文章,言简意赅!学习了!
2009年11月18日 00:12 | 档案 | 引用
的 说:
你好
想多了解点webservice的东西
能加QQ么 304491875
2009年12月 3日 10:22 | 档案 | 引用
lostab 说:
受益匪浅!
谢谢了!
希望还能看到weblogic相关的知识.
2009年12月15日 08:45 | 档案 | 引用
pengyoujun 说:
正想学习webservice,文章写的非常好....期待..
2009年12月28日 11:16 | 档案 | 引用
tree 说:
学习了,谢了阮大哥
2010年5月11日 16:22 | 档案 | 引用
lai_xi_zhe 说:
谢谢阮哥的分享。同时也希望阮大哥能再继续写下去,为我们初学者提供帮助。
2010年5月14日 17:39 | 档案 | 引用
liweijun 说:
才面试问我webservers是什么,我不知道,现在我知道了呵呵,谢谢!
2010年5月24日 10:46 | 档案 | 引用
SIMPLESO 说:
很厉害。深入浅出。
想请问。如果想自己学习WEB SERVERS
有什么比较好的网站和资料。
2010年6月 7日 13:46 | 档案 | 引用
妮妮 说:
以前对web service是一头雾水,今天终于有点明白了,谢谢!
2010年9月26日 15:12 | 档案 | 引用
土星共同体 说:
站在对立面的角度看:为他人做嫁衣裳。就像一个网站里面嵌套了百度或者谷歌的查询功能一样,最终的请求还是到了人家的服务器上的,你只不过是人家的webservice的一个展台,大部分的流量还是流向了别人的服务器上去了,再一个就是,用户对你的网站没有什么依赖性的,因为从你这里获取的信心在别人的网站也同样能获取到,其实说白了就有点向广告联盟一样,最总收益的还是webservice提供商
2010年10月25日 15:02 | 档案 | 引用
LRZ 说:
ls注意,Web Service的核心思想就是把“非核心”的功能外包出去,专心开发“核心”功能。亚当‧斯密所谓的分工带来社会进步指的就是这种情况。而ls的例子明显毫无所谓核心可言,以大公司为对手,却毫不犹豫地抛弃中小网站的撒手锏--以“个性化”“独创性”来细分市场,而是依附对手的“云”以图方便。说难听点,死了才利于市场经济的建立和完善。
2010年11月 2日 15:41 | 档案 | 引用
LRZ 说:
不过这篇对于Web Service的简介却只字不提它的缺陷--虽然我也不清楚缺陷是什么--这会使人对此更为怀疑。
不妨做个猜测,希望有人予以解答:我觉得“云”会妨碍互联网的“去中心化”,而后者是许多东西生存的土壤,如BT,又如WIKI解密
2010年11月 2日 16:57 | 档案 | 引用
陈沙克 说:
在国外有很多成功的例子,比如dropbox,就是用亚马逊的存储。但是在中国呢?这样的例子一个都很难找到。
淘宝,也开始做b2c。
2010年11月 4日 16:25 | 档案 | 引用
fanshaoer 说:
讲的很通俗易懂。。但是,LZ好像混淆了好多概念。个人感觉,LZ所解释的web服务是一个整合后的概念,而不是真正的web service.比如,你可以说客户端可以通过web service请求flickr.com里的资源,但你不能说flickr.com就是web service(当然,它是一种通过网络提供的服务,也就是您所说的web服务)。web service其实是一组API,将服务器上的功能暴露出来以供客户端访问。。其实在.net中,web service已经渐渐被放弃而转向wcf了。
2010年12月10日 15:54 | 档案 | 引用
jason 说:
最好不要去定义一个本来就非常概念化的概念,去wiki或者百科上都能看到。
2010年12月16日 21:14 | 档案 | 引用
ying 说:
你好。我有个疑问,web service是不是可以理解为需要利用网络上的资源来完成某项任务的都可以说是web service架构?你这里是特指利用的是其他网站上的资源。。
2011年4月30日 15:14 | 档案 | 引用
王志强 说:
这么一说我似乎明白了一点
2011年5月 7日 23:41 | 档案 | 引用
王少锋 说:
我不知道 云 和wenservice的关系,但是按照您的思路下去,我一下子明白了。
如果写技术文章的人都跟您一样的思路清晰,那该多好啊!
2011年5月21日 22:32 | 档案 | 引用
紫怡承诺 说:
楼主,不得不佩服,这篇文章讲的太精辟了,看了一大堆百科、文摘看的晕头转向,看了你这篇文章三言两语就讲清楚了什么是“Web Service”,举的例子很恰当,赞!
2011年6月19日 15:22 | 档案 | 引用
原来是oracle 说:
写得很简单明了,比书上罗嗦一堆好的多的多。
2011年6月27日 09:24 | 档案 | 引用
方块三 说:
阮大哥,写的太好了,通俗易懂,很受用……
2011年6月27日 21:26 | 档案 | 引用
cole 说:
说的很清楚,从来没看到过这么形象的介绍webservice的文章!作者太有才了。
不过感觉把云计算理解为webservice的同义词似乎不太贴切,个人认为云计算是包含webservice的。
2011年12月28日 14:08 | 档案 | 引用
David Chen 说:
写的很简洁易懂,即便有些解释得不够到位的地方,只要中心思想让我们理解了,其他的我们可以再查更专业更深入的资料。非常感谢!
2012年1月18日 14:02 | 档案 | 引用