Oisín Hurley's Weblog

old dog, new tricks

This is not WSDL

with 2 comments

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.

About these ads

Written by oisinhurley

May 2, 2007 at 4:35 pm

Posted in eclipse, Services

2 Responses

Subscribe to comments with RSS.

  1. While the concept of making WSDL easier is appealing – this shouldn’t get in the way of efforts to make it disappear altogether. Then we can really start to think of services in terms of the set of XML messages exchanged. This can of course be expressed using XML Schema.
    In some ways this is what has been happening to WSDL over the years. The original WSDL note provided scope for authoring WSDL is a great variety of different ways – a cause of much pain to anyone building tools based on it. Once the WS-I were finished with it most of the constructs in a WSDL file were almost profiled out of existence. It seems that wherever there were two or more ways of doing something, they mandated just one. Document verses RPC style bindings are one exception to this, but the industry has voted with its feet and document is really the only one used.
    This means that all messages are defined by XML Schema. WSDL messages can only have a single part which refers to the XML Schema – no value added here. Bindings must be Document/Literal, again no value added here. Even the use of attachments can now be specified in the XML Schema rather than the binding. There is seldom anything present in a SOAP message which can be attributed to the WSDL description. All those WSDL namespaces we carefully define never even make it onto the wire.
    The efforts to profile WSDL out of existence should be continued while we look describe message exchanges using XML Schema. Even versioning may be solved through XML Schema rather than a better WSDL.

    James Pasley

    May 8, 2007 at 1:06 pm

  2. Sounds like what you want is a domain-specific language (DSL) for WSDL! I agree that WSDL is too verbose to see at a glance what you’re actually trying to convey. I don’t buy the common argument (perhaps you would agree) that WSDL is for tools and not people. My argument would be that because WSDL describes a contract (the most important and crucial contract in SOA in fact) that there is great value in expressing that contract as concisely as possible to convey the intent. As with any DSL, the power is in abstracting away the non-essential and the ability to talk in a language that the domain user understands. The difficulty lies in trying to remove complexity that is essential (say XML Schema in this case).

    Alex Miller

    June 7, 2007 at 6:06 pm


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 3,976 other followers

%d bloggers like this: