Evaluating Web service frameworks
There are lots of web service frameworks available today which lets you create and deploy web services. The choice of selecting a web services stack depends on multiple factors like standards compliance, ease of development , deployment options, unit testing options, integration with leading frameworks like Spring, flexibility and extensibility and so on. So how do I evaluate web service frameworks ?.
In my view the following are some of the important evaluation criteria for selecting a web service stack-
- Standards compatible – Support for JAX-WS and JAX-RS
- Development approaches – Code first , Contact first
- Enablers – Attachments (MOTM) , SOAP Header support, Interceptors
- XML Bindings – POJO , XSD , JAXB, SDO, JSON
- WS-Specification – WS-Addressing , WS-Security , WS-Policy
- Ease of development – Expose existing functionality as web services or expose POJO as service.
- Ease of testing – Using embedded light weight servers, JUnit support
- Tooling – WSDL2Java , WSDL Validator, Eclipse plug-in, Â Build support (Maven, ANT, Custom Maven actions to simply development)
- Packaging and Deployment options- Light weight containers, J2EE support , Application server supported.
- Open source Support – Active community , Quick Jira resolutions.
- Transports – JMS , HTTP
- Performance – Usually this is difficult to evaluate unless we have performance benchmarkes posted.
- Roadmap – Published roadmap to get new standards integrated
Some of the widely used web service frameworks are AXIS 2 , Spring web services (which supports only contract first) , CXF (formerly XFire), METRO. My personal preference at the moment as compared to other frameworks is CXF as it makes service development easy and standard based. It provides a framework for services development in general – supporting REST and SOAP Based services and confirming to all the criteria listed below.
CXF is also getting widely adopted by other leading frameworks like Apache Service Mix, FUSE as there web service stack. Any one developing web services, should evaluate CXF and see if it meets there requirements.
To know more about CXF Architecture , please read the my earlier blogs - CXF Architecture or try out a tutorial on CXF
If you need code first as well as contract first development approaches, than Spring web services is ruled out. If you need to compare Spring an CXF, please visit my earlier post on – Comparing Spring Web Services and Apache CXF . This would give you some insights on the two frameworks.
I plan to provide a quick comparison on CXF ,METRO and AXIS 2 in future blogs and how each of these frameworks supports the above criteria. Stay tuned.