Friday, November 24, 2006

WebServices Hell

There are many open-source WebService frameworks like:

All of them base on StAX (Streaming API for XML) but have different set of other useful features. Some of them support asynchronous calls, some of them support more WS-* standards some of them less (is WS-* really what we need? see especially slides no. 15 and 16) but which to choose? Maybe you should buy something e.g. IONA Arix?

Our team uses XFire at this moment but will have to support also Axis2, maybe XINS. Decision is not easy - if you choose one it can eventually turn out that that features set is not enough or some implementation details break your code, or something is impossible to achieve, or..., etc., etc. Unfortunately it can be too late for you and your project and you will stick somewhere and the only workable solution will be to change open-source code in order to get it worked.

Commercial products are not better. More so you have to pay for them...

Maybe WS frameworks will be mature enough soon but who is able to define soon?


Ernst de Haan said...

Indeed, different technologies have different impacts on your productivity and flexibility. The first differentiating question is whether the technology is closer to a library or closer to a framework.

XINS is probably closest to a real framework, delivering highest productivity, but constraining the flexibility.

For us, XINS works like a charm.

BTW, note that XINS does not use StAX.

Przemysław Bielicki said...

Mea Culpa regarding StAX.

It is always a risk that different developers define library and framework in a different way. How library differs from framework? Can you use framework as library - I think you can...

I realize that this is rather academical argument and the real problem especially in Java world is number of choices. On the one hand this is really great community that creates a lot of useful stuff but sometimes it makes a lot of confusion when you have to choose concrete one. There is often a question: "Maybe we will try do implement it by ourselves?" I don't support such attitude but isn't it right in some cases? Time spent on evaluation three products can be significant and during that time you will be able to produce your own framework...

Doing it in right way should be committing changes to open-source code but very often companies disallow this due to legal problems...

There will be always trade-offs, won't they? :)

Best regards Ernst

Ernst de Haan said...

A framework is typically a combination of a set of libraries and some additional tools and guidelines. Normally you have to follow the approach of the framework.

Since the path is already laid out, working with a framework can imply quite a productivity boost. However, if the approach does not fit well, it can be a real pain to lack the flexibility of a more loose approach.

For more information, have a look at the presentation Frameworks and XINS (PDF).

Regarding evaluation: In my view it does make sense to spend a few days on evaluation. Research shows that most time is not in the development of software, but in the maintenance.

And these days, most software comes with screenshots, "hello world"-style tutorials and sometimes even videos, so evaluation is getting increasingly easy.

On XINS, for example, there is a primer that lets you get a taste of the technology and approach in less than 15 minutes. There are screenshots and there are even some videos.

Furthermore, to do something like web services right, a lot of things are involved, including encoding issues, compatibility, error handling, transaction logging, service documentation generation, etc. Frameworks have solved those issues an you may not want to have to solve it halfway down your project.

Regards, Ernst