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