Web Service概述

Web Service概述

一、Web Service是什么

Web Service是建立“可互操作的分布式应用程序”的新平台

Web Service平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言、在任何你喜欢的平台上编写Web Service,只要我们可以通过Web Service标准对这些服务进行查询和访问。

从表面上看,Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你可以用编程的方法通过Web来调用这个应用程序。

Web Service平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性,Web Servicer平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。在传统的分布式系统中,基于界面(Interface)的平台提供了一些方法来描述界面、方法和参数。同样的,Web Service平台也必须提供一种标准来描述Web Servicee,让客户可以得到足够的信息来调用这个Web Service。另外,我们还必须有一种方法来对这个Web Service进行远程调用。这种方法实际上是一种远程过程调用(RPC),为了达到互操作性,这种RPC协议必须与平台和编程语言无关。最后,还必须要有一种方法来让服务发布者发布服务,让服务调用者能够找到服务。

下面就简单介绍一下Web Service平台的4个核心技术:XML/XSDSOAPWSDLUDDI。它们都是以标准的XML/XSD文件的形式表示的

1. XMLXSD

   XMLWeb Service平台中表示数据的基本格式。除了易于建立和易于分析外,XML的优点在于它既是平台无关的,又是厂商无关的。无关性比技术优越性更重要,因为软件厂商是不会选择一个有竞争对手发明的技术的。

   XML解决了数据表示问题,但它并没有定义一套标准的数据类型,更没有说去怎么扩展这套数据类型。例如,整形数到底代表什么?它是16位、32位还是64位?这些细节对实现互操作性都是很重要的。W3C制定的XML SchemaXSD就是专门解决这个问题的一套标准。它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。Web Service平台就是用XSD来作为类型系统的。当你用某种语言(JavaC#VB.NET)来构造一个Web Service时,为了符合Web Service标准,所有你使用的数据类型都必须被转换为XSD的类型。你用的工具可能已经自动帮你完成了这个转换,但你很可能根据你的需要修改一下这个转化过程。

2. SOAP

   SOAPSimple Object Access Protocol)是一种简单的、轻量级的基于XML/XSD的协议,用于在网络应用程序间交换结构化数据。

   SOAP就是Web Service的标准通信协议。

   Web Service建立好后,你或者他人就会去调用它,SOAP协议就提供了标准的RPC方法来调用Web ServiceSOAP协议定义了SOAP消息的格式,以及怎样通过HTTP协议来使用SOAP

3. WSDL

   WSDLWeb Service Description Language)是一种基于XML/XSD的关于Web服务的描述语言。其主要目的在于Web Service的提供者将自己的Web服务的所有相关内容,如所提供服务的传输方式、服务方法接口、接口参数、服务路径等,生成相应的XML文件,发布给使用者。使用者可以通过这个WSDL文件,创建相应的SOAP请求消息,通过HTTP传递给Web Service提供者;Web服务者在完成服务请求后,将SOAP返回消息回传给请求者,服务请求者再根据WSDL文件将SOAP返回消息解析成自己能够理解的内容。

   因为WSDL是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这就带来了很多好处。一些工具既能根据你的Web Service生成WSDL文件,又能根据WSDL文件生成调用相应Web Service的代码,如基于C/C++gSoap

4. UDDI

   UDDI(统一描述发现和集成)提供一种发布和查找服务描述的标准方法。

   Web Service的提供者可以通过UDDI来发布Web服务,而Web服务的请求者则可以通过UDDI来发现Web服务。

   由于WSDL文件中已经给定了Web ServiceURI地址,外部可以直接通过WSDL提供 的URI进行相应的Web Service调用。所以UDDI并不是一个必须的Web Service组件Web服务完全可以不进行UDDI注册。

二、Web Service的体系架构和流程

Web Services 服务提供方通过WSDL(Web Services Description Language) 描述所提供的服务,并将这一描述告知Web Services 注册服务器。注册服务器依据WSDL 的描述,依照UDDI (Universal Description Discovery and Integration) 的协定更新服务目录并在Internet 上发布。用户在使用Web Services 前先向注册服务器发出请求,获得Web Services 提供者的地址和服务接口信息,之后使用SOAP 协议(Simple Object Access Protocol) Web Services 提供者建立连接,进行通信。Web Services 的技术主要建立在XML 的规范之上,这保证了这一体系结构的平台无关性、语言无关性和人机交互性能。

三、Web Service的应用领域

在有些领域,使用Web Service能带来极大的好处,但有些领域则相反。

下面是几个使用Web Service能带来极大好处的领域:

1. 跨越防火墙的通信
  如果你的应用程序有成千上万的用户,而且他们都分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题。那是因为客户端和服务器之间通常都会有防火墙或者代理服务器。在这种情况下,你想使用DCOM就不是那么简单了,而且,通常你也不愿意把你的客户端程序发布到如此庞大数量的每一个用户手中。于是,你最终选择了用浏览器作为客户端,写下一堆ASP页面,把应用程序的中间层暴露给最终用户。结果呢?运气好的话,只是开发难度大了一些,运气不好的话,就会得到一个根本无法维护的应用程序。
  想象一下你应该怎么在你的应用程序里面加入一个新的页面:你必须先建立好用户界面(Web页面),以及在这个页面后面,包含相应商业逻辑的中间层组件。这还不够,你还要再建立至少一个ASP页面,用来接受用户输入的信息,调用中间层组件,把结果格式化为HTML形式,最后还要把"结果页"送回浏览器。要是客户端代码不再如此依赖于HTML表单,客户端的编程不就简单多了吗?还有,建立ASP页面的那一步可以省略掉吗?
  当然。如果你的中间层组件是Web service的话,你完全可以从用户界面直接调用中间层组件,从而省掉建立ASP页面的那一步。要调用Web service,你可以直接使用Microsoft SOAP Toolkit.NET这样的SOAP客户端,也可以使用你自己开发的SOAP客户端,然后把它和你的应用程序连接起来。这样做,不仅可以缩短开发周期,还可以减少代码的复杂度,并增强整个应用程序的可维护性。同时,你的应用程序也不再需要在每次调用中间层组件时,都跳转到相应的"结果页"了。
  以我的经验来看,在一个用户界面和中间层有较多交互的应用程序中,使用Web service这种结构,可以轻松的节省花在用户界面编程上的20%的开发时间。这样做还有另一个好处,就是你将得到一个由Web service组成的中间层,这一层是完全可以在应用程序集成或其他场合下被重用的。最后,通过Web service把你的应用程序的逻辑和数据暴露出来,还可以让其它平台上的客户重用你的应用程序。

2. 应用程序集成

      企业级的应用程序开发者都知道,企业里经常都要把用不同语言写成的在不同平台上运行的各种程序集成起来,而这种集成将花费很大的开发的力量。你的应用程序经常都需要从运行在古老的IBM主机上的程序中获取数据;或者再把数据发送到主机或UNIX应用程序中去。即使是在同一个平台上,不同的软件厂商生产的各种软件也常常需要集成起来。通过Web service,应用程序可以用标准的方法把功能和数据暴露出来,供其它的应用程序使用。
  例如,你有一个订单登录程序,用于登录从客户来的新订单,包括客户信息、发货地址、数量、价格和付款方式等信息。同时,你还有一个订单执行程序,用于实际货物发送的管理。这两个程序是来自不同软件厂商的。一份新订单进来之后,订单登录程序需要通知订单执行程序发送货物。通过在订单执行程序上面增加一层Web service,订单执行程序可以把"AddOrder"函数暴露出来。这样,每当有新订单到来时,订单登录程序就可以调用这个函数来发送货物了。进而通过Web service集成应用程序

3. 软件重用

      软件重用是一个很大的主题,它有很多的形式和程度。最基本的形式是源代码模块或者类一级的重用。另一种形式是二进制形式的组件重用。当前,像表格控件或用户界面控件这样的可重用软件组件在市场上都占有很大的份额。但这类软件的重用都有一个很严重的限制:重用仅限于代码,而数据不能被重用。原因在于你可以很轻易的发布组件甚至源代码,但要发布数据就没那么容易了,除非那些数据都是不会经常变化的静态数据。
  而Web service允许你在重用代码的同时,重用代码后面的数据。使用Web service,你不再像以前那样,要先从第三方购买、安装软件组件,再从你的应用程序中调用这些组件。你只需要直接调用远端的Web service就可以了。举个例子,你想在你的应用程序中确认用户输入的邮件地址,那么,你只需把这个地址直接发送给相应的Web service,这个Web service 就会帮你查阅街道地址、城市、省区和邮政编码等信息,确认这个地址的确在相应的邮政编码区域。Web service 的提供商可以按时间或使用次数来对这项服务进行收费。这样的服务要通过组件重用来实现是不现实的,因为那样的话你必须下载并安装好包含街道地址、城市、省区和邮政编码等信息的数据库,而且这个数据库还是不能实时更新的。
  另一种软件重用的情况是把好几个应用程序的功能集成起来。例如,你想要建立一个局域网上的门户站点应用,让用户既可以查询他们的联邦快递包裹,察看股市行情,又可以管理他们的日程安排,还可以在线购买电影票。现在Web上有很多应用程序供应商,都在其应用中实现了上面的这些功能。一旦他们把这些功能都通过Web service 暴露出来,你就可以非常轻易地把所有这些功能都集成到你的门户站点中,为用户提供一个统一的、友好的界面。
  用Web service来集成各种应用中的功能,为用户提供一个统一的界面
  许多应用程序都会利用Web service,把当前基于组件的应用程序结构扩展为组件和Web service 的混合结构。你也可以在应用程序中使用第三方的Web service 提供的功能。你还可以把你自己的应用程序的功能通过Web service 提供给别人。所有这些情况下,你都可以重用代码和代码后面的数据。总之,Web service 将是软件重用的一种非常有力的形式。

参考资料:

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

http://www.enet.com.cn/article/2007/1207/A20071207941115.shtml

http://fhd001.javaeye.com/blog/524957


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值