什么是web service

http://zhidao.baidu.com/question/1046225802600744819.html

我把学习笔记和学习心得,放到网志上,欢迎指正。今天先写一个最基本的问题,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等轻量级格式的使用在增多。(完)

http://baike.baidu.com/view/67105.htm?fr=aladdin

简介编辑

Web service是一个 平台独立的,低耦合的,自包含的、基于可 编程的web的应用程序,可使用开放的 XML标准通用标记语言下的一个子集) 标准描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的 应用程序[1]  

2历史编辑

web广泛用到的技术:
  1. TCP/IP:通用 网络协议,被各种设备使用
  2. HTML标准通用标记语言下的一个应用):通用用户界面,可以使用HTML标签显示数据
  3. Java:写一次可以在任何系统运行的通用 编程语言,因为java具有跨平台特性
  4. XML标准通用标记语言下的一个子集):通用数据表达语言,在web上传送结构化数据的容易方法
他们的特点是其开放性,跨平台性,开放性正是Web services的基础。

3Web发展的趋势编辑

内容更动态化
  1. 带宽Bandwidth更便宜,易于获得
  2. 存储器Storage更便宜,更易获得
  3. 普遍式计算变得更加重要:大量的设备,例如移动电话,页面,电脑,pc,已经在Internet上变得普遍,平台变得更多元化,像 XML标准通用标记语言下的一个子集)这样的 跨平台技术变得更重要

4趋势编辑

上述的这些趋势意味着,更加智能的处理,操作和汇总内容变得十分重要。让我们看看按照Web services角度所预示的四个趋势:
  1. 内容更加动态:一个web service必须能合并从多个不同来源的内容,可以包括股票,天气,新闻等,在传统环境中的内容,如存货水平,购物订单或者目录信息等,都从后端系统而来;
  2. 带宽更加便宜:web services可以分发各种类型的内容( 音频视频流等);
  3. 存储更便宜::web services必须能聪明地处理大量数据,意味着要使用 数据库LDAP目录,缓冲,和负载平衡 软件等技术保持可扩展能力;
  4. 普遍式计算更重要:web services不能要求客户使用某一版本的 windows的传统 浏览器,必须支持各种设备,平台,浏览器类型,各种内容类型;
两种重要技术
要达到这样的目标,Web services要使用两种技术:
  1. XML标准通用标记语言下的一个子集):XML是在web上传送结构化数据的伟大方式,Web services要以一种可靠的自动的方式操作数据, HTML标准通用标记语言下的一个应用)不会满足要求,而XML可以使web services十分方便的处理数据,它的内容与表示的分离十分理想;
  2. SOAP:SOAP使用XML消息调用远程方法,这样web services可以通过 HTTP协议的post和get方法与远程机器交互,而且,SOAP更加健壮和灵活易用;
其他像UDDI和 WSDL技术与XML和SOAP技术紧密结合用于服务发现。

5技术支持编辑

关于Web 服务

关于Web 服务

Web Service平台需要一套协议来实现 分布式应用程序的创建。任何平台都有它的 数据表示方法和类型系统。要实现 互操作性,Web Service平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和 组件模型中的不同类型系统。目前这些协议有:

XML和XSD

可扩展的 标记语言标准通用标记语言下的一个子集)是Web Service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。XML是由万维网协会(W3C)创建,W3C制定的XML SchemaXSD 定义了一套标准的 数据类型,并给出了一种语言来扩展这套 数据类型
Web Service平台是用XSD来作为 数据类型系统的。当你用某种语言如VB. NET或C# 来构造一个Web Service时,为了符合Web Service标准,所有你使用的 数据类型都必须被转换为XSD类型。如想让它使用在不同平台和不同 软件的不同组织间传递,还需要用某种东西将它包装起来。这种东西就是一种协议,如 SOAP。
xml web service

xml web service[2]

SOAP

SOAP即 简单对象访问协议(Simple Object Access Protocol),它是用于交换 XML标准通用标记语言下的一个子集)编码信息的轻量级协议。它有三个主要方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行 远程过程调用(RPC)的约定。SOAP可以运行在任何其他 传输协议上。例如,你可以使用 SMTP,即因特网 电子邮件协议来传递SOAP消息,这可是很有诱惑力的。在 传输层之间的头是不同的,但XML有效负载保持相同。
Web Service 希望实现不同的系统之间能够用“ 软件-软件对话”的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现“基于Web无缝集成”的目标。

WSDL

Web Service描述语言WSDL 就是用机器能阅读的方式提供的一个正式描述文档而基于 XML标准通用标记语言下的一个子集)的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。

UDDI

UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。

调用RPC与消息传递

Web Service本身其实是在实现应用程序间的通信。我们现在有两种应用程序通信的方法:RPC 远程过程调用 和消息传递。使用RPC的时候, 客户端的概念是调用服务器上的远程过程,通常方式为实例化一个远程对象并调用其方法和属性。RPC系统试图达到一种位置上的透明性:服务器暴露出远程对象的接口,而 客户端就好像在本地使用的这些对象的接口一样,这样就隐藏了底层的信息,客户端也就根本不需要知道对象是在哪台机器上。

7应用编辑

Web service到底是什么;在什么情况下你应该使用Web service。
研究一下当前的 应用程序开发,你会发现一个绝对的倾向:人们开始偏爱基于 浏览器的客户端应用程序。这当然不是因为客户端能够提供更好的用户界面,而是因为它能够避免花在 桌面应用程序发布上的高成本。发布 桌面应用程序成本很高,一半是因为应用程序安装和配置的问题,另一半是因为客户端和服务器之间通信的问题。
传统的Windows客户应用程序使用DCOM来与服务器进行通信和调用远程对象。配置好DCOM使其在一个大型的网络中正常工作将是一个极富挑战性的工作,同时也是许多IT工程师的噩梦。事实上,许多IT工程师宁愿忍受 浏览器所带来的功能限制,也不愿在局域网上去运行一个DCOM。在我看来,结果就是一个发布容易,但开发难度大而且用户界面极其受限的应用程序。极端的说,就是你花了更多的资金和时间,却开发出从用户看来功能更弱的应用程序。不信?问问你的会计师对新的基于浏览器的 会计软件有什么想法:绝大多数商用程序用户希望使用更加友好的Windows用户界面。
关于 客户端与服务器的通信问题,一个完美的解决方法是使用HTTP协议来通信。这是因为任何运行 Web浏览器的机器都在使用HTTP协议。同时,当前许多 防火墙也配置为只允许HTTP连接。
许多商用程序还面临另一个问题,那就是与其他程序的 互操作性。如果所有的应用程序都是使用COM或.NET语言写的,并且都运行在Windows平台上,那就天下太平了。然而,事实上大多数商业数据仍然在大型主机上以非关系文件(VSAM)的形式存放,并由COBOL语言编写的大型机程序访问。而且,目前还有很多商用程序继续在使用C++、Java、Visual Basic和其他各种各样的语言编写。现在,除了最简单的程序之外,所有的应用程序都需要与运行在其他异构平台上的应用程序集成并进行数据交换。这样的任务通常都是由特殊的方法,如 文件传输和分析, 消息队列,还有仅适用于某些情况的的API,如IBM的"高级程序到程序交流(APPC)"等来完成的。在以前,没有一个应用程序通信标准,是独立于平台、组建模型和 编程语言的。只有通过Web Service, 客户端和服务器才能够自由的用HTTP进行通信,不论两个程序的平台和 编程语言是什么。

什么是Web Service

对这个问题,我们至少有两种答案。从表面上看,Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web来调用这个应用程序。我们把调用这个Web service 的应用程序叫做客户。例如,你想创建一个Web service ,它的作用是返回当前的天气情况。那么你可以建立一个ASP页面,它接受邮政编码作为查询字符串,然后返回一个由逗号隔开的字符串,包含了当前的气温和天气。要调用这个ASP页面, 客户端需要发送下面的这个HTTP GET
返回的数据就应该是这样:
21
这个ASP页面就应该可以算作是Web service 了。因为它基于HTTP GET请求,暴露出了一个可以通过Web调用的API。当然,Web service 还有更多的东西。
下面是对Web service 更精确的解释: Web services是建立可互操作的 分布式应用程序的新平台。作为一个Windows程序员,你可能已经用COM或DCOM建立过基于组件的 分布式应用程序。COM是一个非常好的组件技术,但是我们也很容易举出COM并不能满足要求的情况。
Web service平台是一套标准,它定义了应用程序如何在Web上实现 互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值