转发自: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等轻量级格式的使用在增多。
* 在设计架构上,越来越多的第三方软件让用户在客户端(即浏览器),直接与云端对话,不再使用第三方的服务器进行中转或处理数据。
分享到:
相关推荐
4. **Web Service基础**:解释什么是Web Service,以及它是如何通过SOAP(简单对象访问协议)和WSDL(Web服务描述语言)进行通信的。 5. **ASP.NET Web Services**:展示如何在ASP.NET中创建和消费Web Service,...
这个简明教程将深入浅出地介绍这些概念,帮助初学者快速上手Spring 2.5开发。通过实际示例和详细的解释,读者将能够理解如何利用Spring来构建模块化、可维护的Java应用程序。教程还将涵盖如何设置开发环境、创建第一...
使用`@FeignClient`注解定义远程服务接口,Feign是SpringCloud提供的声明式Web服务客户端,可以简化调用其他服务的代码。同时,消费者也需要配置Eureka客户端,以便从Eureka服务器获取服务提供者的信息。 5. **学习...
在"JSP教程,有很多基本的实例"中,初学者可以通过实际操作来理解JSP的工作方式,例如创建简单的"Hello, World!"页面,学习如何在JSP中插入Java代码,处理表单数据,以及使用内置对象如`request`, `response`, `...
1. Web Service的基本概念:理解Web Service如何提供跨平台、跨语言的数据交换能力。 2. Axis2框架:学习如何使用Axis2来创建、部署和消费Web Service。 3. Java POJO与Web Service的结合:了解如何将Java对象转化为...
5. **整合工作**:在Struts2的Action中注入Spring的Service,Service层调用Hibernate的DAO来操作数据库。 6. **测试与运行**:编写单元测试和集成测试,确保每个组件都能正常工作,然后在服务器上部署并运行应用。 ...
**JMS(Java Message Service)** JMS是Java消息服务,提供了一种标准接口,让应用程序可以发送和接收消息。在J2EE环境中,它常用于不同组件间的异步通信。 **JTA(Java Transaction API)** JTA是Java事务API,...
在Java面试中,理解Web Service的基本概念、工作原理和如何实现是必不可少的技能。 描述"Java中的webService实例,注释详细,简单易懂!力求用一个简单的例子让大家对webService调用和原理有深入的理解!"强调了该...
本示例将帮助您理解WCF的基本概念、配置以及如何创建一个简单的服务端和客户端。 在WCF中,服务是提供特定功能的实体,而客户端则是调用这些服务的程序。"WCFTestModel"标签可能指的是此示例中使用的模型类,用于...
#### GIS基础概念介绍 地理信息系统(Geographic Information System,简称GIS)是一种集成了计算机硬件、软件和地理数据的技术系统,用于采集、存储、处理、分析以及展示地球表面的空间数据。GIS在多个领域有着...
本文将深入探讨这两个概念,并结合"DashBoard连接Webservice Demo"的主题,介绍如何将它们整合以实现更高效的数据管理和分析。 首先,让我们来理解一下“Dashboard”。在信息技术中,Dashboard通常指的是一个交互式...
这本书旨在帮助读者深入理解移动Web开发的关键概念和技术,以轻松易懂的方式呈现,适合初学者和有经验的开发者阅读。 在移动Web开发领域,本书涵盖了以下几个重要的知识点: 1. **移动设备的多样性**:书中首先...
- **Web Service概念**:Web Service是一种能够通过网络进行调用的软件组件或应用程序,它们通常遵循SOAP协议并通过XML进行数据交换。 - **创建Web Service**:第五章详细介绍了如何使用C#语言创建Web Service,包括...
这本书以易懂、生动的方式介绍了如何为智能手机和平板电脑等移动设备创建优化的网页和应用。在移动互联网日益普及的今天,掌握移动Web开发技能变得至关重要。 移动Web开发的核心在于理解不同移动设备的特性,包括...
这个"一个简单的WCF示例"提供了从服务端到客户端的完整通信流程,让我们深入了解一下WCF的核心概念和关键组成部分。 首先,**契约(Contract)**是WCF的核心,它定义了服务提供的操作和服务接口。在示例中,可能会...
它还支持事务管理和结果映射,使得数据库操作变得简单易懂。 **Spring与MyBatis集成** 在Spring MVC中集成MyBatis,主要通过Spring的DataSource、SqlSessionFactoryBean和MapperScannerConfigurer等组件实现。首先...
在.NET框架下,XML Web Service基于SOAP(简单对象访问协议)进行通信,而WSDL(Web服务描述语言)定义了服务的接口和通信协议,让其他系统知道如何调用服务。UDDI(通用描述、发现和集成)则作为一个服务目录,帮助...
在2013年出版的《Amazon Web Services For Dummies》一书中,作者Bernard Golden提供了对AWS的全面介绍和指南,书中涵盖了AWS的核心服务、特点和最佳实践。这本书以For Dummies系列通俗易懂的风格编写,旨在帮助读者...