This is not WSDL

Recently in IONA, in an informal moment in the coffee area, a number of us sat down with sore heads and decided that we would all feel better if WSDL wasn’t so hard to use. Not in those exact words, but I’m writing for a mixed audience here.

In March, I was out at EclipseCon, and got to visit the Yahoo office (where old webservices comrades Mark Nottingham and Hugo Haas now toil). During lunch in the canteen, we talked about lots of things, but one of them was how we would all feel better if WSDL wasn’t so hard to use.

magritte-not-a-wsdl.jpg

There are of course lots of WSDL editors out there in the wide world. At Eclipse, there is the WTP graphical WSDL editor. Many products, such as XMLSpy and IONA’s own Artix Designer incorporate ways to reduce the agony of dealing with WSDL.

For me though, none of editors I’ve tried have made the nut. As a developer I want a clean way to make WSDL that deals with all of the crud that needs to be there (like pointy-bracket syntax for example). What I don’t want is a weird graphic metaphor with links and dragging and dropping, thanks. Just let me type it, like code, give me some syntax support and some useful conventions and then let some other agency worry about generating the XML vocabulary.

Here is the sort of thing that I would like to be able to type in and have it converted to WSDL for me, with some sensible defaults, etc:

import “myTypes.xsd”;

namespace “http://www.iona.com/interface-namespace";

interface myInterface version 1.0 {
    string myOperation (in string param1);
}

We could also code in some conventions (like that version in the interface) to help people along, so for example:

import “myTypes.xsd”;

namespace “http://www.iona.com/interface-namespace";

interface myInterface version 1.0 {
    string myOperation (in string param1);
}

interface myInterface version 1.1 {
    string myOperation (in double param1);
}

would cause an error because someone has changed the method signature in a minor version upgrade. They should have used version 2.0 instead. There’s little limit to the fun we could have with this :-)

By the way, the string type that you see there is, by convention, the XML Schema string type. Same goes for the float. You can use imported types just by using the prefix approach that XML already has - pfx:myType.

I haven’t mentioned the bindings aspect of the WSDL specifically. To me, that part is a big target for an extensible set of wizards or tailored binding editors and not something that feels like it should be accessible to code-like definition.