甄少鹏
(桂林电子科技大学 计算机科学与工程学院,广西 桂林 541000)
WebService使用一系列的标准协议来对各种请求做出响应,使用HTTP/TCP等标准的网络协议完成底层的传输,以XML作为数据表示的基础,通过SOAP协议在系统间交换信息,通过WSDL等来描述和记录Web服务所产生和接收的消息,通过UDDI来登记和寻找服务,这些技术构成了Web服务的支撑技术。
SOAP:简单对象访问协议SOAP(Simple Object Access Protocol)是一种非集中的、基于分布式网络环境的、基于XML的轻量级协议,它通过把HTTP与XML的灵活性和良好扩展性组合在一起,以实现异构平台的程序之间的消息传递和互操作。
WSDL:Web服务描述语言WSDL(Web Service Description Language)是W3C用于描述Web服务的规范,被用来描述一个Web服务能够做什么,该服务在什么地方,以及如何调用该服务。WSDL利用XML来描述Web服务,它将Web服务描述为一组对消息进行操作的网络端点。
UDDI:通用描述、发现和集成协议UDDI(Universal Description,Discovery Integration)是一套基于Web的、分布式的、为Web服务提供的信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web服务加以注册,以使得别的企业能够发现的访问协议的实现标准。UDDI是为了加速Web服务的推广,加强Web服务的互操作能力而推出的一个计划,其目的是建立一个全球性的、与平台无关的、开放式的架构。
这些技术的任何一种都在发展中,每种技术提供了Web服务的下一步发展、描述或者发现的一个标准。然而,Web服务的目标之一是无缝的、自动的业务集成:软件将动态地从未知的公司发现、访问、集成和调用新服务,这种动态集成需要SOAP、WSDL和UDDI的结合,以便为将来的动态业务提供动态的、标准的基础设施。下图说明了这三种技术之间的关系。
从图上可以看出,SOAP、WSDL和UDDI之间的关系可以描述如下:Web服务客户端应用程序需要找到位于网络上某处的服务端应用程序。客户端通过名字、分类、标识符或者所支持的规范查询UDDI注册中心,一旦找到,客户便从UDDI注册中心获取WSDL文档的位置信息。按照WSDL中发现的XML模式生成一个SOAP消息,并发送一个请求给服务端。
XFire、Axis是目前比较流行的Webservice的实现框架。两者是并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助方便快速地开发Web Service应用。
一般情况下,我们通过HTTP作为Web Service的传输协议,这样我们只需启动一个Web服务器,这样客户端就可以通过 HTTP访问到Web Service服务。为了集成Spring容器,XFire专门提供一个XFireSpringServlet,我们可以在web.xml中配置该 Servlet,将Spring容器中定义的 Web Service在某个URI下发布。
XFire为访问服务端Web Service提供了各种方便的方式:我们一般根据服务地址和窄接口类创建客户调用程序。在不能获得服务窄接口类的情况下,XFire允许我们通过WSDL文件生成客户端调用程序,通过指定服务接口的方式调用服务。但对于服务方法返回类型或参数类型是自定义对象或者集合时候,目前axis支持比较好且方便上手。Xfire不支持WSDL2.0,而Axis2支持WSDL2.0。
不管Web Service服务端和客户端采用什么技术框架,只要是Web Service,遵从Web Service的技术规范和实现架构,就能实现无障碍调用通信,如xfire框架实现的web服务发布后,只要告之服务地址及其他相关信息,通过axis框架实现的客户端也能正常调用访问。