转发自:http://www.ruanyifeng.com/blog/2009/08/what_is_web_service.html
作者: 阮一峰
日期: 2009年8月26日
我认为,下一代互联网软件将建立在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等轻量级格式的使用在增多。
* 在设计架构上,越来越多的第三方软件让用户在客户端(即浏览器),直接与云端对话,不再使用第三方的服务器进行中转或处理数据。
分享到:
相关推荐
MPLS原理介绍,文章最大的优点:简单,易懂。
图像分割,资料简单易懂,资料简单易懂,资料简单易懂,资料简单易懂,资料简单易懂,资料简单易懂
可以实现service后台运行,自启动,隐藏安装图标,相当简单易懂,studio直接导就行.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
简单易懂,有例子,并且每个例子都对应详细的图片步骤说明。主要讲了 myeclipse使用xfire构建简单的Web Service myeclipse构建简单的webservice客户端
一个典型的Web Service实例,简单易懂
python教程简单易懂通俗易懂python教程简单易懂通俗易懂python教程简单易懂通俗易懂python教程简单易懂通俗易懂python教程简单易懂通俗易懂python教程简单易懂通俗易懂python教程简单易懂通俗易懂python教程简单易懂...
递归解决排序,该方法简单易懂,且有注释,如有不懂的地方,大家再相互交流一下
简单易懂的Msi编辑器,即安即用,十分方便。
简单易懂的软件工程概述.pptx
Python中文版教程,简单易懂,里面有一些例子,可以很好的帮助我们学习
简单 易懂 简单 易懂 简单 易懂 简单 易懂 简单 易懂 简单 易懂 简单 易懂 简单 易懂 简单 易懂 简单 易懂 简单 易懂 简单 易懂
简单易懂的堆叠技术介绍.doc
24点游戏源码 c语言 简单易懂 24点游戏源码 c语言 代码 程序
好学简单易懂,只要你了解基本html语义及规范 很好上手
Winform下最简单易懂的MVC实例,没有多余的模块,对于初学者来说干净明了。
webapi + mongodb 实现基础操作(数据的增删查改) 简单实例 代码易懂 直接运行 希望对新人有所帮助
基于web service 的工作流系统实现研究,易懂,了解一个基于web service工作流系统的总体结构,对系统有一定概念
C++ webserver接口开发示例代码(详细注释),网上搜索大量资源后整理出来分享给大家,内附详细教程,资源宝贵!
安卓简单计算器简单易懂
安卓音乐播放器简单易懂(包含介绍文档)