CXF学习(0)——WebService与SOA

一、什么是WebService

Web Service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作的应用程序。

Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。

关于XML

XML学习(一)——简介
XML学习(二)——XMLHttpRequest
XML学习(三)——XML解析

二、WebService规范

JAVA 有三种WebService 规范,分别是JAXM&SAAJ、JAX-WS(JAX-RPC)、JAX-RS

1.JAXM&SAAJ:

JAXM(JAVA API For XML Message)主要定义了包含了发送和接收消息所需的API,相当于Web 服务的服务器端。SAAJ(SOAP With Attachment API For Java,JSR 67)是与JAXM 搭配使用的API,为构建SOAP 包和解析SOAP 包提供了重要的支持,支持附件传输,它在服务器端、客户端都需要使用。

2.JAX-WS:

JAX-WS(Java API For XML-WebService)。早期的基于SOAP 的JAVA 的Web 服务规范JAX-RPC(Java API For XML-Remote Procedure Call)目前已经被JAX-WS 规范取代,JAX-WS 是JAX-RPC 的演进版本,但JAX-WS 并不完全向后兼容JAX-RPC,二者最大的区别就是RPC/encoded 样式的WSDL,JAX-WS 已经不提供这种支持。

3.JAX-RS:

JAX-RS 是JAVA 针对REST(Representation State Transfer)风格制定的一套Web 服务规范。

JAXM&SAAJ 与JAX-WS 都是基于SOAP 的Web 服务,相比之下JAXM&SAAJ 暴漏了SOAP更多的底层细节,编码比较麻烦,而JAX-WS 更加抽象,隐藏了更多的细节,更加面向对象。JAX-WS 和JAX-RS 规范我们采用Apache CXF 作为实现,CXF 是Objectweb Celtix和Codehaus XFire 合并而成。CXF 的核心是Bus(总线),CXF是依赖于Spring 的,Bus 都有一个ID,默认的BUS 的ID 是cxf。三种规范中,第一种和第三种的使用更为常见。

三、SOAP协议

  1. SOAP协议即简单对象访问协议(Simple Object Access Protocol),它适用于交换XML(标准通用标记语言下的自己)编码信息的轻量级协议,他有三个主要方面,XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。SOAP可以运行在其他传输协议上。
  2. SOAP作为一个基于XML的语言用于传输数据
  3. SOAP就是在HTTP的基础上增加XML
  4. SOAP是基于HTTP的
  5. SOAP由Envelope、Headers、Body组成,其中Headers是可选,其余两种为必选,Envelope以XML根元素出现,Body包含执行的服务器的方法,和发到服务器的数据。

四、wsdl说明书

WSDL(WebService Definition Language)就是用机器能阅读的方式提供一个正式描述文档的语言,该语言基于XML形成。用于描述WebService及其函数,参数和返回值。

  • 通过wsdl说明书,就可以描述服务端对外发布的服务
  • wsdl基于xml文件,通过xml语言描述整个服务
  • 在wmdl说明书中,包含有:
    • 对外发布的服务名称
    • 接口方法名称
    • 接口参数
    • 服务返回的数据类型

五、UDDI

web服务服务商将自己的web服务发布到Internet上,就需要UDDI(Universak Description,Discovery and Integration),UDDI是一个跨语言,跨平台的开放性架构,可以帮助web服务商在互联网上发布web服务信息。UDDI是一种目录服务,企业可以通过UDDI来注册,搜索web服务。UDDI通过SOAP进行通讯,构建在.NET上

六、优缺点

  • 优点:

    • 异构平台互通性
    • 软件复用性
    • 成本低
    • 迅捷开发
  • 缺点:

    • 冗余大效率低

七、关于SOA

SOA(Service-Oriented Architecture)面向服务架构是一种思想,它将应用程序的不同功能单元通过中立的契约(独立于硬件平台、操作系统和编程语言)联系起来,使得各种形式的功能单元更好的集成。

1.SOA的核心就是“服务”,什么是服务?
在业务系统中被发布出来供用户使用,能完成一个完整业务过程的功能,就是服务。
在这里插入图片描述
例如:在淘宝中购物的时候,结算购物车就是一种服务,这个服务中包含了几个过程:用户身份确认、购物车中商品查询、费用结算、开启支付通道 一系列过程。

2.服务的粒度虽然相对粗放,但却可控,目标是重用
服务粒度的拆分完全依据业务系统中业务过程进行定义和分析,所以服务的粒度都相对粗放。

3.集成的目的是形成一个新的服务
被集成的业务服务称之为原子服务,集成的目的是重用这些原子服务形成一个新服务。保证技术团队/业务团队能以最小的代价,最高的效率使用既有服务。

4.SOA需保证屏蔽细节
使用SOA架构思想构建多个业务系统的集成关系,需要保证每个业务系统屏蔽细节。这些细节包括技术细节和业务细节。

从技术细节看,不论业务系统使用哪种语言开发,哪种对外传输协议,哪种消息格式都可以使用SOA进行集成。并且内部完成不同协议转换和不同消息格式转换。

从业务细节看,SOA需要屏蔽业务系统的功能步骤细节,也就是说,第三方只需要知道调用某一个服务就可以达到业务目的,至于提供服务的业务系统如何实现业务过程无需关心。

4.SOA让各业务系统保持松散
SOA架构模型为多个业务系统进行松散集成提供了一个良好的思路:

通过屏蔽各业务系统技术细节和业务细节,兼容各业务系统的不同传输协议和不同消息格式,可以让通过SOA进行业务集成的各个业务系统保持低耦合状态。

这是因为所有协议和消息格式都处于开放状态,业务集成时各业务系统不需要单独进行额外的转换工作,甚至不需要为基于SOA的业务集成进行任何额外工作,也无须知道对方系统的存在。

目前来说,WebService 是SOA 的一种较好的实现方WebService 采用HTTP 作为传输协议,SOAP(Simple Object Access Protocol)作为传输消息的格式。但WebService 并不是完全符合SOA 的概念,因为SOAP 协议是WebService 的特有协议,并未符合SOA 的传输协议透明化的要求。SOAP 是一种应用协议,早期应用于RPC 的实现,传输协议可以依赖于HTTP、SMTP 等。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值