`

webService开发 - 调研

 
阅读更多

       进行门户开发,今天做了个调研,对现行的WS 中SOAP XML 、axis2、xfire、CXF进行了百度下。呵呵

在此做个记录。

http://ws.apache.org/axis/

http://axis.apache.org/axis2/java/core/

http://xfire.codehaus.org/

http://cxf.apache.org/

axis最新的版本为April 22, 2006

axis2最新的版本为19 - Dec - 2010    1.5.4

xfire最新的版本为1.2.6 - May 3, 2007         网站已经说了“XFire is now CXF”  --|||

cxf 最新的版本为Feb 28, 2011 - Apache CXF 2.3.3 is released!

  

现在只有axis2和cxf官方有更新。

  

(以下来自网络资料)

  XFire VS Axis
XFire是与Axis2 并列的新一代WebService平台。之所以并称为新一代,因为它: 
1、支持一系列Web Service的新标准--JSR181、WSDL2.0 、JAXB2、WS-Security等; 
2、使用Stax解释XML,性能有了质的提高。XFire采用Woodstox 作Stax实现; 
3、容易上手,可以方便快速地从pojo发布服务; 
4、Spring的结合; 
5、灵活的Binding机制,包括默认的Aegis,xmlbeans,jaxb2,castor。

XFire与Axis1性能的比较 
1、XFire比Axis1.3快2-6倍 
2、XFire的响应时间是Axis1.3的1/2到1/5

XFire与Axis2的比较 
虽然XFire与Axis2都是新一代的WebService平台,但是Axis2的开发者太急于推出1.0版本,所以1.0还不是一个稳定的版本,它的开发者宣称1.1版本即将推出,希望1.1版本会是个稳定的版本。在XFire捐献给apache后有人认为Axis2将会灭亡。其实在很多人眼里,Axis2并不是pojo形式,Dan Diephouse证明了XFire比Axis更有市场,我也发现了有很多人开始从Axis转向XFire,包括我也在说服身边的人转向利用XFire进行WebService的开发,很典型的是我可以在几分钟之内教会我的团队实用XFire来发布一个他自己的Web服务。

本人倾向于XFire确实比Axis2简单很多

AXIS VS CXF

在SOA领域,我们认为Web Service是SOA体系的构建单元(building block)。对于服务开发人员来说,AXIS和CXF一定都不会陌生。这两个产品都是Apache孵化器下面的Web Service开源开发工具。

 Axis2的最新版本是1.3.

CXF现在已经到了2.0版本。

这两个框架 都是从已有的开源项目发展起来的。Axis2是从Axis1.x系列发展而来。CXF则是XFire和Celtix项目的结合产品Axis2是从底层全部重新实现,使用了新的扩展性更好模块架构。 CXF也重新的深化了XFire和Celtix这两个开发工具。

 

新产品的退出导致了几个问题。是不是现有的使用Axis 1.x,XFire和Celix的应用需要迁移的新的版本上。如果一个开发人员确定要迁移它的应用到新的框架上,那么他应该选择哪一个呢?相反的,如果一个开发者决定从头开发一个新的Web Service,他应该使用哪个呢? 这两个框架哪一个更好一些呢?

对于系统迁移来说,也许迁移到新的框架并不难。Axis和CXF都提供了迁移的指导。能够给开发者一些迁移的技巧和经验。但是对于这样迁移,这两个开源项目都没有提供迁移的工具。对于这样的迁移工作,尽管很值得去寻找所有的可行方案。Axis2和CXF都有各自不同的WebService开发方法,每个方法都有相当数量拥护者。

 

通过一个比较矩阵来比较Axis2和CXF变得有现实的意义。这两个项目都开发不够成熟,但是最主要的区别在以下几个方面:

1.CXF支持 WS-Addressing,WS-Policy, WS-RM, WS-Security和WS-I Basic Profile。Axis2不支持WS-Policy,但是承诺在下面的版本支持。

2. CXF可以很好支持Spring。Axis2不能

3. AXIS2支持更广泛的数据并对,如XMLBeans,JiBX,JaxMe和JaxBRI和它自定义的数据绑定ADB。注意JaxME和JaxBRI都还是试验性的。CXF只支持JAXB和Aegis。在CXF2.1

4. Axis2支持多语言-除了Java,他还支持C/C++版本。

  比较这两个框架的Web Service开发方法与比较它们的特性同样重要。

从开发者的角度,两个框架的特性相当的不同。 Axis2的开发方式类似一个小型的应用服务器,Axis2的开发包要以WAR的形式部署到Servlet容器中,比如Tomcat,通过这些容器可以对工作中的Web Service进行很好的监控和管理。Axis2的Web administrion模块可以让我们动态的配置Axis2.一个新的服务可以上载,激活,使之失效,修改web服务的参数。管理UI也可以管理一个或者多个处于运行状态的服务。这种界面化管理方式的一个弊端是所有在运行时修改的参数没有办法保存,因为在重启动之后,你所做的修改就会全部失效。Axis2允许自己作为独立的应用来发布Web Service,并提供了大量的功能和一个很好的模型,这个模型可以通过它本身的架构(modular architecture)不断添加新的功能。有些开发人员认为这种方式对于他们的需求太过于繁琐。这些开发人员会更喜欢CXF。

  CXF更注重开发人员的工效(ergonomics)和嵌入能力(embeddability)。大多数配置都可以API来完成,替代了比较繁琐的XML配置文件, Spring的集成性经常的被提及,CXF支持Spring2.0和CXF's API和Spring的配置文件可以非常好的对应。CXF强调代码优先的设计方式(code-first design),使用了简单的API使得从现有的应用开发服务变得方便。

不过你选择Axis2还是CXF,你都可以从开源社区得到大量的帮助。这两个框架都有商业公司提供服务,WSO2提供AXIS2的支持,Iona提供CXF的支持。这两公司都有很活跃的开发者社区。

 

  Axis2出现的时间较早,CXF的追赶速度快。

  我的建议是:如果你需要多语言的支持,你应该选择AXIS2。如果你需要把你的实现侧重JAVA并希望和Spring集成,CXF就是更好的选择,特别是把你的Web Service嵌入其他的程序中。如果你觉得这两个框架的新特性对于你并没有太大的用处,你会觉得Axis1也是不错的选择,你应该继续使用它知道你有充分的理由去更换它。

 

如何抉择: 
1、如果应用程序需要多语言的支持,Axis2 应当是首选了; 
2、如果应用程序是遵循 Spring 哲学路线的话,Apache CXF 是一种更好的选择,特别对嵌入式的 Web Services 来说; 
3、如果应用程序没有新的特性需要的话,就仍是用原来项目所用的框架,比如 Axis1,XFire,Celtrix或 BEA 等等厂家自己的 Web Services 实现,就别劳民伤财了。

 

(资源2)

1、JWS是Java语言对WebService服务的一种实现,用来开发和发布服务。而从服务本身的角度来看JWS服务是没有语言界限的。但是Java语言为Java开发者提供便捷发布和调用WebService服务的一种途径。
 
2、Axis2是Apache下的一个重量级WebService框架,准确说它是一个Web Services / SOAP / WSDL 的引擎,是WebService框架的集大成者,它能不但能制作和发布WebService,而且可以生成Java和其他语言版WebService客户端和服务端代码。这是它的优势所在。但是,这也不可避免的导致了Axis2的复杂性,使用过的开发者都知道,它所依赖的包数量和大小都是很惊人的,打包部署发布都比较麻烦,不能很好的与现有应用整合为一体。但是如果你要开发Java之外别的语言客户端,Axis2提供的丰富工具将是你不二的选择。
 
3、XFire是一个高性能的WebService框架,在Java6之前,它的知名度甚至超过了Apache的Axis2,XFire的优点是开发方便,与现有的Web整合很好,可以融为一体,并且开发也很方便。但是对Java之外的语言,没有提供相关的代码工具。XFire后来被Apache收购了,原因是它太优秀了,收购后,随着Java6 JWS的兴起,开源的WebService引擎已经不再被看好,渐渐的都败落了。
 
4、CXF是Apache旗下一个重磅的SOA简易框架,它实现了ESB(企业服务总线)。CXF来自于XFire项目,经过改造后形成的,就像目前的Struts2来自WebWork一样。可以看出XFire的命运会和WebWork的命运一样,最终会淡出人们的视线。CXF不但是一个优秀的Web Services / SOAP / WSDL 引擎,也是一个不错的ESB总线,为SOA的实施提供了一种选择方案,当然他不是最好的,它仅仅实现了SOA架构的一部分。

 

分享到:
评论

相关推荐

    C#中WebService调用方法调研

    在.NET框架中,C#是开发Web服务的重要语言。本文将深入探讨C#中调用WebService的三种主要方法,帮助开发者更好地理解和应用这些技术。 ### 1. ASMX Web Services **ASMX(ASP.NET Web Services)**是.NET ...

    VC2005调用java的WebService的例子

    在这个特定的例子中,"java_Webservice调研"可能包含对Java Web服务的调查研究,包括服务的功能、使用场景、性能分析等。它也可能包含了如何在VC2005中实际调用这些服务的示例代码或教程。在实际应用中,开发者应当...

    设备商网管软件定制开发案例分析

    - 功能调研:首先分析用户的具体需求,调研市场上已有解决方案,确定网管软件的特色功能。 - 需求分析:根据业务需求分析,明确网管软件应具备的核心功能以及扩展性需求。 - 方案设计:基于需求分析,设计网管...

    JavaEE求职简历-姓名-JAVA开发工程师.doc

    6. 擅长WebService、CXF技术,完成第三方服务开发。 7. 使用Echarts创建动态报表,结合POI实现报表导出。 8. 熟练运用SVN进行版本控制,使用Maven进行项目自动化构建。 9. 通过Shiro实现权限管理和用户功能菜单定制...

    JavaEE学习课程分享精英强化班腾科.doc

    - **前沿的课程体系**:定期进行企业人才需求调研和专业课程研发,确保课程内容紧跟行业发展。 - **完善的就业保障**:与300多家知名软件企业建立合作,为学员提供就业推荐和支持。 - **全面的技术支持**:与Oracle...

    医疗CDR调研表格设计

    HL7协议的使用有助于标准化数据交换,而Webservice则提供了灵活的接口开发可能性。 6. **系统稳定性与扩展性**: - 在设计CDR时,要考虑系统的稳定性和扩展性,以适应未来业务增长和技术更新的需求。这包括数据库...

    Java开发工程师简历模板(三十八)

    10. **团队合作与职责**:在项目中,张三不仅负责具体模块的开发,还参与了需求调研、设计和测试,展现出全面的软件开发能力和团队协作精神。 综上所述,张三作为Java开发工程师,拥有丰富的技术背景和实践经验,...

    企业数据接口管理规范V1.0.pdf

    - 开发:MDM作为数据源时,第三方系统提供符合规范的WebService接口;反之,第三方系统调用ESB的WebService写入MDM或查询数据。 - 测试:内部测试和集成测试确保接口功能正常。 - 上线:数据初始化并部署,对已有...

    企业数据接口管理规范V1.0.docx

    - 开发阶段,第三方系统需提供符合ESB规范的WebService接口,并处理ESB推送的数据。同时,第三方系统应仅保留扩展属性的维护权限。 - 测试阶段,包括内部测试和集成测试,确保接口的正确性和性能。 - 上线阶段,数据...

    电子地图应用设计.docx

    3. **技术选型**:根据作品的运行平台(PC或手机),选择合适的开发技术和工具,如WebService、J2ME等。 4. **知识产权声明**:作品中若使用了他人的成果,需在开发文档中明确标注,尊重知识产权。 5. **参赛作品...

    打车app开发功能方案.pdf

    打车App开发功能方案涉及到多个关键环节,包括需求调研、原型设计、交互设计、数据库设计、接口调试、测试、发布、账号管理、乘客与车主功能、费用计算、订单管理、评价系统、支付方式以及会员管理。 1. **需求调研...

    软件项目文档模板PDF文件

    - **进度安排**:项目进度分为多个阶段,首先进行文献查阅和技术调研,接着开展社会调查以评估项目的可行性和市场需求。社会调查计划进行三次,通过网络论坛调查、口头调查和电话调查等方式收集反馈信息。 #### 4. ...

    202x年智慧教育一体化综合管理平台建设方案(专业完整版).docx

    - **服务接口**:以WebService作为服务开发的主要技术,支持标准化的接口定义,确保服务间的互操作性。 - **开发平台**:支持Java(J2EE)或Node.js平台,以便于系统扩展和集成。 - **数据库标准**:数据库设计遵循...

    基于微信小程序的阅读服务系统设计与实现.pdf

    微信小程序的数据交互技术主要依赖于WebService方式,通过JSON格式的数据交换实现与Web服务器的通信。客户端数据存储技术则通过微信提供的API实现数据的本地存储,微信小程序支持多种数据存储方法,能够满足不同场景...

    java2年工作经验简历_java简历.doc

    在联昊通项目中,她参与了需求调研到系统测试的全过程,实现了基础设置、受理和调度流程的管理。 10. **技术栈的广泛性**:尚凌宇女士的技术栈覆盖了后端开发、前端交互、数据库管理、分布式系统等多个方面,这显示...

    年终工作总结.docx

    在项目中,我承担了需求调研、需求分析、原型设计、数据库设计和系统开发等重要职责。通过与客户进行会议沟通,我掌握了需求调研的方法,使用AxureRP创建了初步原型,并根据反馈进行调整。在数据库设计阶段,我运用...

    智慧水务管理系统.pptx

    2. **实用性突出**:项目团队在需求分析阶段深入多家水务公司进行调研,确保系统的各项功能都符合实际业务需求。 3. **用户体验优秀**:界面设计简洁明了,易于操作,提升了用户的工作体验。 4. **办公效率显著提升*...

Global site tag (gtag.js) - Google Analytics