CXF学习(二)--- WebService

来源:互联网 发布:手机蓝牙网络共享电脑 编辑:程序博客网 时间:2024/06/06 07:46

Apache CXF 框架 是一个开源的 WebService 的框架,想要学习CXF,还是要了解一下WebService吧。 昨天我们提到了WebService几乎成为了SOA的一个行业标准了,那我们来看看这个“标准”是怎么样的吧。


首先,我们要搞清楚什么是WebService,在W3C官网上可以找到这样的内容:
什么是Web Services?
- Web Services 是应用程序组件
- Web Services 使用开放协议进行通信
- Web Services 是独立的(self-contained)并可自我描述
- Web Services 可通过使用UDDI来发现
- Web Services 可被其他应用程序使用
- XML 是 Web Services 的基础”
关于W3C的定义理解起来并不是那么难,下面我们根据一张图来分析一下WebService,下图是一张WebService体系结构图,从图中我们可以看到这里有三个角色:服务提供者、服务请求者、服务注册中心。这些三个角色都是自主独立运行的应用程序,相互
这是从博客园博主文章中找到的一个WebService体系结构图
间依赖性不强,服务提供者制定好开放性契约、协议,把自己的服务发布出去,我们可以发布到服务注册中心去;然后服务请求者在服务注册中心去发现所需的服务,然后再向服务提供者发起请求,就这样,模块间就只通过我们所开放的契约协议来进行通信,模块之间不用清楚对方是如何工作的,这些机密只有自己知道。服务提供者向符合契约的请求提供服务、提供结果,服务请求者请求结果,服务注册中心为两者通信提供中介服务。


WebService的结构大致就是这样,与前面所讲的SOA没多大不同(毕竟WebService就是SOA的一种实现方式),值得我们去关心的WebService三个基本元素:SOAP、WSDL 、UDDI。

WebService — SOAP
SOA体系结构里面,服务之间的通信都会显得格外重要。在WebService中大部分通信是通过SOAP(简单对象访问协议,Simple Object Access Protocol)来完成的,而SOAP是基于XML、HTTP实现的,消息发送端将数据封装成XML消息,接收端将接受到的XML消息解析成符合自己想要的数据,通过HTTP协议来完成数据传输。这样任何一个支持XML、HTTP的平台都可以用使用SOAP协议。但值得注意的是SOAP是独立于底层传输机制的,应用程序可以选择自己的数据传输协议(像我所在的公司使用WCF时使用的Net.Tcp)。

WebService — WSDL
WebService中,服务提供者提供的服务方法是给请求者调用的,由于对于请求者而言,服务的方法是透明的,请求者并不知道服务端提供了怎样的服务,这时候我们就需要WSDL了,WSDL 即 Web Services Description Language ,他描述了Web服务以及如何调用这些服务,下面是我之前练习WCF时生成的一个WSDL部分代码,他描述了我在服务中所提供的一个Add方法。
<wsdl:message name="ISysParaService_Add_InputMessage">
<wsdl:part name="parameters" element="tns:Add"/>
</wsdl:message>
<wsdl:message name="ISysParaService_Add_OutputMessage">
<wsdl:part name="parameters" element="tns:AddResponse"/>
</wsdl:message>
<wsdl:message name="ISysParaService_Add_TransferExceptionFault_FaultMessage">
<wsdl:part xmlns:q1="----这段代码不方便公布-----" name="detail" element="q1:TransferException"/>
</wsdl:message>

WebService — UDDI
WebService中UDDI(UDDI 即 Universal Description,Discovery and Integration,也就是通用的描述,发现以及整合)呢,简单来讲就是我一直提到的服务管理者,就相当于饿了么外卖,他管理这些服务信息,方便请求者查询。这也就不多描述。


学习过程中发现这篇来自博客园的文章给了我很大启发:WebServices 简介

0 0