深入了解java WebService

       前言:WebService就目前来讲已经是一种成熟的技术了,优缺点也相当明显,本文旨在入门webService,详解其使用场景,结合具体demo进行分析。

本篇文章重点关注以下问题:

  • WebService的优缺点及使用场景?
  • 了解WebService的基本概念,Soap、WSDL、XML、HTTP、UDDI指什么,在WebService中扮演什么样的角色?
  • 服务端如何发布服务,客户端如何调用服务,具体步骤怎样?

 1、WebService的特点及使用场景

       WebService是很常见的远程调用方法,其最大的优势就是跨平台语言,无论客户端是Java还是.NET都能轻松的调用。它采用SOAP(Simple Object Access Protocol)协议来封装序列化的消息,实际上是形成一个xml文件,可以通过http进行网络传输。WebService的客户端调用其实是使用生成文件的方式,只要知道发布接口的URL即可,而不需要额外传递jar包或者class文件。

      WebService 的主要目标是跨平台的可互操作性

       优点:

  • 跨防火墙的通信:一般要访问的Web服务器以及要访问的Web Service的客户端很可能位于防火墙后面,都默认关闭其它端口而开放HTTP端口,而Web service 正是基于HTTP的,所以它可以穿越防火墙;
  • 应用程序集成:可以实现不同应用程序和在不同系统平台上开发出来的应用程序之间通信。与RMI、DOCM、CORBA最大的不同就是:Web Service 以 SOAP 作为基本通信协议从而避免了复杂的协议转换;
  • B2B 的集成:跨公司的商务交易集成通常叫做B2B 集成。通过WebService ,公司可以把关键的商务应用“ 暴露” 给指定的供应商和客户,只要把商务逻辑“ 暴露” 出来,成为WebService ,就可以让任何指定的合作伙伴调用这些商务逻辑,而不管他们的系统在什么平台上运行,使用什么 开发语言。这样就大大减少了花在B2B 集成上的时间和成本,让许多原本无法承受EDI 的中小企业也能实现B2B 集成。

        缺点:

  • 单机应用程序:单机应用程序只要与本机上的其他程序通讯,这种情况下使用WebService消耗太大,而且不会带来任何好处;
  • 局域网的同构应用程序:简言之,还是性能问题。只要从应用程序结构的角度看,有别的方法比WebService更有效、更可行,那就不要用WebService。

2、WebService初了解

        先给WebService下个定义:WebService是一种跨编程语言和跨操作系统平台的远程调用技术。定义中有两个关键点:

  • 一是跨语言跨平台,说明它有广为接受的协议,是标准。类似于SQL,不同语言不同平台通过sql操作数据库,而不同语言不同平台通过WebService发布、使用服务。Sql搭载的是数据,WebService搭载的是服务。
  • 二是远程调用,说明它涉及网络通信,整个调用过程涉及不同模块,不同角色。

       下面先介绍实现一个完整WebService功能需要的组成成员与流程。首先上图:

 

这幅图描述了完整WebService服务的整个过程以及发布、调用WebService的整个流程,大致流程如下:

  1. 服务发布:服务提供者设计服务的接口(功能A)并予以实现,本地调试通过后想服务注册中心发布,向UDDI注册;
  2. 查询服务:服务请求者需要使用功能A时,可以向UDDI查询,UDDI则会返回能满足请求者的服务(WSDL);
  3. 分析服务:服务请求者收到UDDI反馈的WSDL服务描述信息,予以分析,生成客户端所需的模块准备发起WebService请求;
  4. 发起服务:分析WSDL服务描述,生成相应的SOAP消息,发送给服务提供者,以期待获得服务;
  5. 完成服务:服务提供者按SOAP消息执行指定的服务,并将服务结果反馈给请求者。
由上图和前面的流程介绍,WebService的体系结构及各自扮演的角色也很明确:
  • 服务提供者:即服务的提供者,它一直等待接收客户端的请求并反馈服务响应。(发布服务)
  • 服务请求者:即服务的使用者,它利用SOAP消息向服务提供者发送请求并获得服务。(使用服务)
  • 服务中介者:即UDDI,充当管理员的角色,其主要职责就是将服务请求者和合适的服务提供者联系起来,当然这个角色并不是必须的,尤其是客户端知道服务端的情况下。(绑定服务)
在了解WebService各模块及工作流程之后,我们接下来需要了解各模块之间如何交互,跨平台跨语言的协议标准是怎样的。
  • XML:(Extensible Markup Language)扩展型可标记语言。xml与语言无关、与平台无关,经常作为信息载体用于保存数据,是Soap的基础。
  • SOAP:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当客户端通过UDDI找到服务WSDL描述文档后,它可以通过SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP,可以这样描述:SOAP=在HTTP的基础上+XML数据
  • WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息:服务在什么地方(地址),提供什么样的方法(如何调用)。大多数情况下由软件自动生成和使用。
  • UDDI:(Universal Description, Discovery, and Integration) UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且返回需要的数据。
 3、WebService样例输出

猜你喜欢

转载自super-wangj.iteye.com/blog/2378855