Wednesday, November 26, 2008

Service Composition, Service Mediation, and the role of WSDL

It does not seem like we’ll get a break from the whole SCA vs. JBI controversy any time soon. Until the industry agree on what proper relationship between them should be, I don’t think there is any real hope for JBI 2.0, which is really sad for those of us advocating for a standard based ESB.

So, how should SCA and JBI work together? The answer always depends on who you ask. From the JBI perspective, JBI provides a platform for service mediation, while SCA can be used for composing these services for a particular business purpose (a composite application). From the SCA perspective, SCA is for making composite applications and JBI can be used as a specific SCA binding.

I have been thinking about the subtle difference between service composition and service mediation. Service composition, as SCA correctly pointed out, is about grouping platform independent services together to serve a business purpose. The key point is that the platform specific concerns are left to specific bindings, which is probably close to the soaML work that is going on at OMG. In many ways, composite application can thought as a programming model – when you are designing a composite application on a SCA platform, you need to know SCA! (On the other hand, an application developer designing a service should not be aware of an ESB, whether it is JBI based or not)

Service mediation is about providing a common platform at runtime for service interactions, which implies a few things, the most important being the need for a common way to describe services. For that, I think we have pretty much settled on WSDL and WS-Policy. I think the JBI approach, i.e., ESB endpoints described using WSDL and an NMR based the WSDL 2.0 message exchange patterns, provides a better mediation platform.

The role WSDL plays in service mediation is also recognized by SCA – the use of Mediation Modules shows that. But if WSDL is good enough for bridging SCA with the external world, why aren’t they good enough to describe the internal ESB endpoints that make up a composite application?

No comments: