A while ago Savas and I
wrote an article on why WSDL isn't really like an IDL in the classical
sense, which has just been
published in
this month's Web Services Journal.
We've been getting grief from some people in the community about this view,
and some folks in our own department
have given us a hard time too.
But there is something fundamentally different about Web Services and
Distributed Objects, so isn't it likely that WSDL and IDLs are different
too? I think so.
In something like CORBA IDL an IDL interface maps onto a Java
interface (assuming a Java binding). Eventually (at some point down the inheritance hierarchy) this
interface is implemented by a class. Therefore the operations advertised in IDL are implemented by the operations of a single class.
In a Web Services environment, WSDL doesn't describe operations in the same sense, it
describes them in a Web Services sense. An operation in WSDL terms
tells us about the specifics of a particular message exchange. That
operation might map onto a similarly named procedure call in the back
end, but it might not.
The killer differentiator is that for a given WSDL portType (or soon
"interface" in WSDL 2.0) there is no implication that the portType is
"implemented" by a specific class at the back-end. It might make sense for
you to do that in certain situations, but at other times it might make sense
for one operation in a portType to be handled by one computing system and
another operation from the same portType to be processed by a
completely
different system
.
The only truth that WSDL gives you is messages - the contract that the
service adheres to. If you try to infer more than that, not only are you on
shaky ground but you are actively going out of your way to become tightly
coupled.
Web Services is not CORBA with angle brackets people, we have to leave
the comfort zone if we're going to get the best out of this new glue.
Today's Web Services super-hero:Stuart Wheater
(for helping me to remember all that CORBA we used to
work on)