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:
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.
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.