Tuesday, May 7, 2013

Comparing Open Source Web Services Development Framework (Apache CXF, Apache AXIS, Spring WS)


This blog does not try to compare all available Web Services Development Framework but focuses only on three popular approaches regarding Open Source frameworks: Apache CXF, Apache AXIS & Spring WS.

Let's look at positives & concerns in nutshell of each of these frameworks:

Framework
Key Positives
Key Concerns
Apache AXIS2
❶ Most Commonly Used, Matured & Stable Web Services Development Framework

❷ Supports Multiple Languages (C++, Java)

❸ Supports both Contract-first & Contract-last Approach

❹ In context of Orchestration & Web Services Transaction (long-running transactions) it supports wide variety of related WS-* specifications:
WS-Atomic Transaction, WS-Business Activity, WS-Coordination, WS-Eventing, WS-Transfer
Compatible with Spring Framework
❶ Comparatively More Code Required/Generated w.r.t. Spring WS/CXF

❷ Is being phased out gradually (mostly by Apache CXF)

❸ It is not fully compliant for JAX-WS JAX-RS
Apache CXF
❶ Most widely used Web Services Standard Now; Improvement over AXIS2, which is now gradually being replaced by Apache CXF

❷ Intuitive & Easy to Use (less coding required as compared to AXIS2)

❸ Clean separation of front-ends, like JAX-WS, from the core code

❹ Fully compliant with JAX-WS, JAX-RS & others

❺ Best Performance across all available framework with minimum computation overhead

❻ Supports wide variety of front-end models

❼ Supports both JAX-WS & JAX-RS (for Restful Services)

❽ Supports JBI & SDO (not supported in AXIS2)

❾ Compatible with Spring Framework
❶ Does not support Orchestration & WS Transactions yet

❷ Does not support WSDL 2.0 yet
Spring WS
❶ Best in terms of supporting Contract-first Web Services Development Approach

❷ Enforces Standards & Best Practices by Framework Constraints (no way out of it & hence limitation as well)

❸ Supports Spring Annotations as well as JAX-WS

❹ Least code from developer’s perspective

❺ Best Aligned with Spring Technology Stack (also similar architectural stack as Spring MVC) including Spring Security
❶ Least number of WS-* Specifications supported (does not fully compliant with JAX-WS)

❷ Spring offers itself as standard & hence other Java-compliant frameworks support better standards support

❸ Only support Contract-first Web Services Development Model


I have carried out further detailed analysis (using a scorecard) to grill these frameworks further & came up with following scorecard:



 

Conclusion


  • Apache AXIS2 is relatively most used framework but Apache CXF scores over other Web Services Framework comparatively considering ease of development, current industry trend, performance, overall scorecard and other features (unless there is Web Services Orchestration support is explicitly needed, which is not required here)
  • Though Spring Core Framework is an established technology, Spring Web Services is still evolving in comparison with Apache CXF and CXF has wider support of standards and proven framework from performance perspective.
  • Hence, Apache CXF is the recommended framework and clearly the most preferred in my opinion.

Disclaimer:
All data and information provided on this site is for informational purposes only. This site makes no representations as to accuracy, completeness, correctness, suitability, or validity of any information on this site and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis.This is a personal weblog. The opinions expressed here represent my own and not those of my employer or any other organization.



3 comments:

  1. Couple of comments:
    1) I'm not sure how Axis2 can have a better score than CXF for JSR standards alignment when CXF is the one that actually does implement the various JSR's (JAX-WS, JWS, JAX-RS, etc...) and certifies against them and Axis2 doesn't.

    2) CXF has much better support for the varios WS-Security standards including the various profiles like kerberos, spnego, etc... that Axis2 doesn't support.

    3) CXF has support for WS-Notification and WS-Discovery and WS-Federation that Axis2 doesn't.

    4) Axis2 doesn't support WS-Atomic Transaction, WS-Eventing, WS-Coordination, etc... There aren't any modules at Apache to support those. See: http://axis.apache.org/axis2/java/core/modules/index.html There are 3rd party things that add those to Axis2, but that's the same for CXF.

    ReplyDelete
  2. A web development company can offer your business not only web development services but, also a range of other services which can take your company to the very top. However, most importantly, these companies can offer you with a team of highly skilled web designers who can design the very best page for your company.

    ReplyDelete