Tuesday, September 16, 2008

Blog on describing REST with WSDL 2.0

Check out Keith's blog on how to describe this REST scenario (posted by none other than Stefan) using WSDL 2.0. He does an existential proof of it showing not only how to describe it with WSDL 2.0 but how to implement it using the WSO2 Mashup Server.

Stefan, are you still not convinced that WSDL 2.0 can describe any REST scenario properly? If not please post another challenge.

I'd also like to challenge REST fans to show how the implementation Keith did is materially different from say a Java implementation that uses JAX-RS (Java API for RESTful Web Services - JSR 311) annotations (or any other Java programming model that you want).


Dan Diephouse said...

You're just asking for it.... :-)

Sanjiva Weerawarana said...

What can I say .. I'm a glutton for punishment ;-). Seriously though, I'd really like to see the holes that the REST camp identifies - obviously with the ulterior motive of wanting to fix those!

Tammo said...

I'm not in the REST camp but I'm a bit confused... Do I understand it right that Keith's approach describes the access to a HTTP resource in terms of WSDL 2.0? I understand approaches like JAX-RS where Java classes are exposed as resources by mapping representations and verbs to annotated Java methods, but I'm getting confused if it's turned the other way 'round. I always thought the main benefit of a RESTful accessing scheme is that the semantics of the verbs are well defined and always clear. That should make the world more easy. What a "GET /customers" does is actually clear. If I understand Keith correctly, these (verb, resource) tuples are now mapped back to (remote) procedures so that I describe the access to resources in an actually less meaningful manner. Less meaningful because the semantics of operations are somewhat undefined.
Or am I missing something?

Cheers, Tammo

Keith Chapman said...

Hi Tammo,

The manner in which I have implemented this on the WSO2 Mashup Server is very similar to what JAX-RS could do.

I think your confusion is using WSDL 2.0 in a contract first manner. Where you write the WSDL first and then generate the code for it. Well I don't see any difference in these two approaches, cause the ultimate result is the same (You use a WSDL 2.0 document to describe a RESTfull service).

Hope this makes things clear to you.