Webservice是一个web服务体系,它为其他应用程序提供数据与服务,各应用程序通过网络协议和规定的一些标准数据格式来访问webservice。
webservice三种最普遍的实现方式是:
- 远程过程调用(RPC) ---- 远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。其中RMI是RPC在java环境的一种实现形式。
- 面向服务架构(SOA) ----面向服务架构,是一个组件模型,它将应用程序的不同功能单元通过这些服务之间定义良好的接口和契约联系起来。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。
- 表述性状态转移(REST)----是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
1. WebService概念
WEB服务是基于XML和HTTPS的一种服务,其通信协议主要基于SOAP,服务的描述通过WSDL,通过UDDI来发现和获得服务的元数据。
SOAP:简单对象访问协议(Simple Object Access Protocol),SOAP定义一个XML文档格式,该格式描述如何调用一段远程代码的方法,里面的XML格式是根据WSDL来描述的。
WSDL:Web服务描述语言(Web Services Description Language)是一个描述Web服务的XML词汇。WSDL文件中的信息定义WEB服务的名称、它的方法的名称、这些方法的参数和其他详细信息。
UDDI:统一描述、发现和集成(Universal Description, Discovery, and Integration)协议向WEB服务注册中心定义SOAP接口。如果你有一个服务希望务部署,UDDI规范定义如何将你的服务描述添加至注册中心。如果你在寻找某个功能的服务,UDDI规范定义如何查询注册中心以找到你想要的信息。
WebService的架构中主要有3个参与者和3个基本操作构成。3个操作者分别是服务提供者、服务请求者和服务代理,而3个基本操作分别为发布、查找和绑定。服务框架如下图所示:
调用过程如下:
(1) 服务提供者将其服务发布到服务代理上;
(2) 当服务请求者需要调用该服务时,它首先利用服务代理提供的目录区搜索该服务,得到如何调用该服务的信息;
(3) 然后根据这些信息进行绑定,并调用服务提供者发布的服务。
2. WebService优势
web服务是互联网发展的趋势,具有以下优点:
(1) 平台无关。 不管你使用什么平台,都可以使用Web服务。
(2) 编程语言无关。只要遵守相关协议,就可以使用任意编程语言,这大大增加了web服务的适用性。
(3) 对于web服务提供者来说,部署、升级和维护web服务都非常单纯,不需要考虑客户端兼容问题,而且一次性就能完成。
(4) 对于Web服务使用者来说,可以轻易实现多种数据、多种服务的聚合。
3. 几种比较流行的WebService框架
目前比较流行的框架有:Apache Axis1、Apache Axis2、Codehaus XFire、Apache CXF等。
其中Axis2是从Axis1的基础上发展来的,CXF则是XFire和Celtix项目的结合产品。Axis2是从底层全部重新实现,使用了新的扩展性更好的模块架构。CXF也重新的深化了XFire和Celtix这两个开发工具。
如何抉择:
(1) 如果应用程序需要多语言的支持,Axis2应当是首选;
(2) 如果应用程序师遵循Spring哲学路线的话,Apache CXF是一种更好的选择,特别对嵌入式地Web Services来说的。
4. OSGI与WebService结合
4.1 怎样把WebService部署到OSGI上
大致的OSGI平台的web交互如下所示:
(1) 各个功能服务被包装成OSGI中的Bundles,并通过WebService服务bundle到WebService注册中心(即一个实现注册功能的bundle)进行发布,供用户调用;
(2) WebService中心对各服务提供者所提供的Web服务进行发布和管理,通过查询UDDI注册中心,用户可得到所需服务的WSDL文件;
(3) 通过WSDL,用于与服务提供者进行绑定和调用。
4.2 OSGI与WebService结合的优势
(1) 有利于版本控制
(2) 分布式部署和调用,可以取代消息通信交互的方式
(3) WebService可以实现OSGI平台和非OSGI平台的交互。