`
wusuoya
  • 浏览: 641459 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

简单谈谈Web Service概念的理解

    博客分类:
  • web
 
阅读更多

下一代互联网软件将建立在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等轻量级格式的使用在增多。
  • 在设计架构上,越来越多的第三方软件让用户在客户端(即浏览器),直接与云端对话,不再使用第三方的服务器进行中转或处理数据。
分享到:
评论

相关推荐

    java web 简介

    对于初学者来说,了解Java Web的基本概念、关键组件以及部署流程至关重要。 首先,让我们来谈谈“Tomcat简介”。Tomcat是一款开源的、轻量级的Java Servlet容器,它是Apache软件基金会的Jakarta项目的一部分。...

    [WEB应用防火墙]谈谈安卓的 Intent 注入.zip

    它可以携带数据,并声明执行的操作类型,如启动一个新的Activity、启动Service或者发送Broadcast。 2. **Intent注入原理** 攻击者通过构造恶意的Intent对象,当正常应用尝试解析并处理这些Intent时,由于没有充分...

    浏览器的概念

    在深入了解浏览器概念之前,我们先来谈谈与标题关联性较弱但同样重要的Linq(Language Integrated Query)技术,特别是其在Object Grouping、Let关键字以及各种操作符中的应用。 Linq是.NET框架中引入的一种强大的...

    webservice说明接口调用以及示例代码新版

    总的来说,本资料“webservice说明接口调用以及示例代码新版”应该涵盖了WebService的基本概念、调用流程以及在Java和.NET环境下的示例代码,帮助开发者理解如何实现跨系统通信。在实际开发中,正确理解和使用...

    webService入门

    首先,让我们了解Web服务的核心概念。Web服务使用XML(可扩展标记语言)作为数据交换格式,SOAP(简单对象访问协议)作为通信协议,WSDL(Web服务描述语言)描述服务接口,UDDI(统一描述、发现和集成)用于服务注册...

    .netand Ajax面试题

    8. **谈谈Web服务(Web Service)在.NET和AJAX中的作用** .NET Web服务(ASMX或WCF)允许跨应用程序和平台的数据交换。AJAX可以调用这些Web服务,获取或发送数据,从而实现前后端的通信,不依赖页面刷新。 9. **...

    servlet中文笔记

    Servlet是Java Web开发中的核心组件,它是一种服务器端的Java应用程序,用于处理来自客户端(通常是Web浏览器)的请求并返回响应。...通过深入学习和实践,可以更好地理解和掌握Servlet在Java Web开发中的重要作用。

    TeachCalendar.zip

    《简易日历系统开发详解——基于miniUI、springMVC、...同时,通过实际操作,加深对数据库设计、事务处理和错误处理等概念的理解。这个项目不仅适合个人学习,也适合作为教学案例,引导初学者逐步走进Web开发的世界。

    SSH-Ajax.zip_SSH+ajax_SSH使用Ajax_ajax ssh_ssh ajax_ssh怎么用ajax

    接下来,我们谈谈Ajax的核心概念。Ajax允许网页通过JavaScript向服务器发送异步请求,获取数据,并在后台处理这些数据,然后动态更新页面的特定部分。这大大提高了用户体验,因为用户无需等待整个页面刷新就能看到...

    java购物车。。。。

    在Java编程领域,购物车系统是一个常见的应用场景,它模拟了现实生活中消费者在电子商务网站上选择商品并放入虚拟购物车的过程。在这个系统中,注解...理解这些核心概念对于开发功能完善的电商应用至关重要。

    华为OD-java工程师机试103道习题练习

    通过这103道习题,考生可以深入理解Java的核心概念,提高编程能力,以及解决问题的能力。 首先,我们来探讨一下Java语言的基础知识点: 1. **变量与数据类型**:Java提供了多种数据类型,包括基本类型(如int、...

    实用的DB链接配置和DBhelper接口

    (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=your_host)(PORT=your_port)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=your_service_name)));User Id=your_username;Password=your_password;" ...

    8年J2EE开发总结

    然后,J2EE作为Java在企业级应用中的应用框架,包括了Web组件、EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JTA(Java Transaction API)等多个子体系。在实际项目中,我们通常会用到Servlet和JSP来...

    基于ssm实习管理系统.zip

    《基于SSM的实习管理系统详解》 SSM框架,即Spring、SpringMVC和MyBatis的集成,是Java Web...对于学习和掌握Java Web开发的同学,这是一个极好的实践项目,能够帮助他们深化对SSM框架的理解,并提升实际开发能力。

    HG320--235W从电信原版的刷机教程,含刷机工具和DD,TT,磊科固件

    本文将详细解析关于" HG320--235W从电信原版的刷机教程"的相关知识点,包括刷机的基本概念、TFTP工具的使用、以及DD、TT、磊科固件的差异和应用。 首先,我们需要理解什么是刷机。刷机,简单来说,就是更换设备的...

    ssh标签_关系_验证码源码

    在本源码示例中,我们将深入探讨SSH框架中的“标签”、“关系”和“验证码”这三个关键概念。 首先,SSH框架中的“标签”指的是Struts2框架提供的自定义JSP标签。这些标签使得开发者能够更加直观、简洁地在视图层...

    基于 SpringBoot 开发的超简洁音乐播放器.zip

    尽管woodwhales-music项目可能并未使用SSM,但了解这一组合对于理解SpringBoot在现代Web应用中的位置是有帮助的。 在woodwhales-music-master文件夹下,我们可以期待找到以下组成部分: 1. **源代码**:包括Java...

    vue-pwa-test:使用vuejs测试pwa

    首先,让我们理解Vue.js的核心概念。Vue.js基于MVVM(Model-View-ViewModel)设计模式,提供了一种声明式的数据绑定和组件系统。它的核心库专注于视图层,易于集成到现有项目,也可以作为单一页面应用(SPA)的完整...

    Spring Boot课件1 —— 创建和运行Spring Boot项目

    在本篇内容中,我们将深入探讨如何利用Spring Boot来创建和运行一个项目,同时也会涉及与`dubboDemoProvide`和`dubboDemoConsumer`这两个子项目相关的分布式服务治理概念。 首先,让我们从创建Spring Boot项目开始...

    LightHouse_Final

    理解变量作用域、内存管理和闭包等基本概念是优化JavaScript性能的第一步。 接着,我们要关注的是异步编程。JavaScript的单线程执行模型意味着所有任务必须排队执行,但通过事件循环和回调函数、Promise、async/...

Global site tag (gtag.js) - Google Analytics