1. 前言
cxf 在项目中应用好久了,一直没有写总结,现在补上。
由于cxf 属于Web Service的一个实现,所以先学习和总结一下Web Service,作为学习cxf的基础。
2. WebService 简介
Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成(不同于ActiveMQ)。
Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
3. WebService 三要素
3.1 SOAP
简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML的协议,它被设计成在WEB上交换结构化的和固化的信息。
* 基于类对象的传输协议;
* SOAP封装(envelop),它定义了一个框架,描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们;
* SOAP编码规则(encoding rules),它定义了一种序列化机制,用于表示应用程序需要使用的数据类型的实例;
* SOAP RPC表示(RPC representation),它定了一个协定,用于表示远程过程调用和应答;
* SOAP绑定(binding),它定义了SOAP使用哪种协议交换信息。使用HTTP/TCP/UDP协议都可以。
3.2 WSDL (WebServicesDescriptionLanguage)
网络服务描述语言是Web Service的描述语言,它包含一系列描述某个web service的定义。
WSDL 文档可以分为两部分。顶部分由抽象定义组成,而底部分则由具体描述组成。
3.2.1 WSDL元素:
* Type(消息类型):数据类型定义的容器,它使用某种类型系统(如 XSD)。
* Message(消息):通信数据的抽象类型化定义,它由一个或者多个 part 组成。
* Part:消息参数
* Operation(操作):对服务所支持的操作进行抽象描述,WSDL定义了四种操作:
1.单向(one-way):端点接受信息;
2.请求-响应(request-response):端点接受消息,然后发送相关消息;
3.要求-响应(solicit-response):端点发送消息,然后接受相关消息;
4.通知(notification[2] ):端点发送消息。
* Port Type(端口类型):特定端口类型的具体协议和数据格式规范。
* Binding:特定端口类型的具体协议和数据格式规范。
* Port:定义为绑定和网络地址组合的单个端点。
* Service:相关端口的集合,包括其关联的接口、操作、消息等。
3.3 UDDI (UniversalDescriptionDiscovery andIntegration)
UDDI 是一种目录服务,企业可以使用它对 Web services 进行注册和搜索。
"Universal Description, Discovery and Integration",可译为“通用描述、发现与集成服务”。
4. 技术支持
要实现互操作性,Web Service平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。这些协议有:
4.1 XML和XSD
XML 是Web Service平台中表示数据的基本格式。XML主要的优点在于它既与平台无关,又与厂商无关。
XSD作为Web Service平台的数据类型系统。当你用某种语言如VB. NET或C# 来构造一个Web Service时,为了符合Web Service标准,所有你使用的数据类型都必须被转换为XSD类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要用某种东西将它包装起来。这种东西就是一种协议,如 SOAP。
4.2 SOAP
SOAP即简单对象访问协议,它是用于交换XML(标准通用标记语言下的一个子集)编码信息的轻量级协议。
SOAP可以运行在任何其他传输协议上。例如,你可以使用 SMTP,即因特网电子邮件协议来传递SOAP消息,这可是很有诱惑力的。在传输层之间的头是不同的,但XML有效负载保持相同。
4.3 WSDL
Web Service描述语言WSDL 就是用机器能阅读的方式提供的一个正式描述文档而基于XML的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
4.4 UDDI
UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
4.5 调用RPC与消息传递
Web Service本身其实是在实现应用程序间的通信。我们有两种应用程序通信的方法:RPC远程过程调用 和消息传递。使用RPC的时候,客户端的概念是调用服务器上的远程过程,通常方式为实例化一个远程对象并调用其方法和属性。
RPC系统试图达到一种位置上的透明性:服务器暴露出远程对象的接口,而客户端就好像在本地使用的这些对象的接口一样,这样就隐藏了底层的信息,客户端也就根本不需要知道对象是在哪台机器上(在使用cxf时,使用的就是RPC调用方式)。
参考资料: