This week, Christian Weyer of Thinktecture released a tool called WSCF (WS Contract First), designed to help promote developing Web Services using a WSDL first approach - and hence make services naturally more interoperable.

Instead of just posting a "hey, check out this tool" post, I spent some time with it last night.

In short, this tool rocks.  It works as follows:  You create an XSD using your favorite editor (for example, Visual Studio .NET or XMLSpy) and import it into your Visual Studio .NET project.  Right clicking on the XSD in Solution Explorer brings up an option to generate a WSDL file. 

This is turn brings up the WSDL generation wizard which walks you through creating a service, operations and selecting the data types from the referenced XSD file.  The nice thing about the wizard (over other approaches for creating WSDL files) is that a lot of the underlying complexity has been abstracted - making it a quick and easy way of generating the document.

Once you have your WSDL created, another right click in solution explorer brings up a dialog to then create the underlying implementation (i.e. the ASMX file). 

Things I liked the most:

  • Easy VS.NET integration
  • Elegant Wizard Approach (for the generation of the WSDL)
  • Command line interface (very useful for unit testing)

Some "from the hip" ideas for future versions would be:

  • Make it more scalable.  Today it appears that it only supports one XSD file in the wizard.  I'd like the option of selecting types from any XSD in my project (or even solution)
  • I'd like to see the same wizard style interface expanded for the creation of the ASMX file (and also the option of launching this wizard when the first one completes).
  • Maybe a "preview mode" that will show the WSDL details just before the wizard completes.

Overall however, this is very cool and well worth checking out.  Thanks Christian for what I believe will be a very popular tool!