一、 简介
WebService不是框架,而是一种跨平台、跨语言的规范。主要是为了解决不同平台、不同语言所编写的应用之间如何相互调用的问题。如下图所示:
二、 实际用途
也就是我们企业实际开发中,WebService的实际应用场景,下面举几个例子:
Ø 同一个公司的新、旧系统的整合。新、旧系统可能是不同平台不同语言。
Ø 不同公司的业务整合。业务的整合就要带来系统的整合,而不同公司的系统可能存在平台不同、语言不同的问题。(例如,支付业务需调用银行系统)
Ø 内容聚合。例如,一个应用需要提供,天气预报、股票行情、黄金行情、编程语言行情等。这个内容聚合的应用,需要调用大量不同平台、不同语言编写的应用方法。
例子就举到这里,在说一个我们身边的实际场景:我们从淘宝或者当当购物后,淘宝和当当会提供订单信息、物流信息等。而这些信息不是它们负责的,是有物流公司负责的(例如:顺风快递),也就是说订单信息是存在顺风系统中的,这样淘宝或当当需要拿到订单信息,就需要通过WebService远程调用顺风系统,如下图:
三、 CXF简介
CXF号称是一个SOA框架,对 SOA 的需要来源于需要使业务 IT 系统变得更加灵活,以适应业务中的改变。
SOA是一个组件模型,它将应用程序的不同功能单元称为服务(Service),通过这些服务之间定义良好的接口和契约联系起来。它提倡所有的组件(Service1、Service2、Service3…)都是即插即用的,像组装电脑的方式来开发软件。
ApacheCXF = Celtix + XFire,开始叫 ApacheCeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华。XFire是一个WebService框架,Celtix是一个ESB框架。也就是说,WebService将程序单元发布为一个个服务,然后Celtix这些服务给联系起来,这样就与前面的SOA的组件模型如出一辙。所以CXF号称是SOA框架。
此外,补充一点小知识。发布用CXF开发的WebService服务时,不需要将服务部署在Tomcat服务器上,因为Apache CXF内置了一个Jetty Web服务器。Jetty是国外的一个开源小团队写的,它在很多方便都要比Tomcat要有优势。但Tomcat是Apache下的子项目,而Apache是JavaWeb规范的制定者,所以多年来Jetty一直没有Tomcat流行。后来,Jetty投靠到Eclipse下,但还是没有得到真正推广。Tomcat与Jetty的关系,很像Strut1与WebWork的关系。
四、 小结
如上所述,WebService集中解决了如下几个问题:远程调用、跨平台调用、夸语言调用。
加入WebService之前,我们系统的架构可能为:
那么,加入WebService之后,架构就变为了: