Blogger :
Benjamin Ms blog
All posts :
All posts by Benjamin Ms blog
Category :
WSCF/WCF
Blogged date : 2005 Jan 08
Hats
off to Christian Weyer for creating his WSCF 'Web
Services Contract First' tool to help provide Visual Studio tool support
for building web services by starting with the XML schema and then generating
the code.
The
key to creating interoperable web services is to ‘build
from the centre out’ and start by designing the messages that will be exchanged
on the wire (the contract) and then work back to the implementation model that
is used at the sender and receiver. There are two basic approaches to building
web services 'contract first' in .NET: code-based or schema-based. The first
approach is to start with the code and add Webmethod and XML
Serialization attributes and allow .NET to generate the 'contract' (the WSDL file).
The second apporach involves XML Schema first and using this to create
the WSDL file and generate the code, which happens to be Simon Guest’s number
1 recommendation for building interoperable web services.
Visual Studio has good support for the code-based approach to web service design,
but up to now hasn't provided much support for the XML Schema approach. This
is where Christian’s WSCF tool comes in.
The
tool performs two key tasks. Firstly, the WSCF tool allows you to create the
WSDL file from an XML Schema that describes the web services message. Secondly,
the WSCF tool can generate the code for the client- and server-side web services proxy
classes that can be called from your .NET code.
Christian
has a
useful walk-through that illustrates how the WSCF tool can work. The steps
include:
-
Using
the Visual Studio XML Editor to create a schema for the data or entities that will
be used in the web services messages.
-
Creating
a second schema that models the messages that will be sent and received by the web
service. This is done by imports the first schema file (using xs:import).
I liked keeping these two schemas separated using this technique.
-
Using
the WSCF tool to take this second schema and match up the web service operations with
the messages to create the WSDL file. I like that this step highlights the availability
of Request/Response and One-Way message exchange patterns.
-
Using
the WSCF tool to create client- and server-side proxies from this WSDL file (including
supporting public properties, serializable classes and collections).
As
well as being a VS plug in the tool can also be run from the command line, making
it easy to run as part of build process for instance.
While
not everyone will want to design web services starting from the XML Schema, for those
that do this tool will be a useful timesaver. It also helps drive home the concept
that web services are about messages and not objects.
Christian
spoke about this tool and the general ‘contract first’ approach at a recent INETA-sponsored
presentation at IrishDev. You download
the slides as well as reading good summaries from Marcus Mac
Innes Contract
First, Guinness Second as well as Keiran
Lyman with Contractual
Obligations (or, 'First Contact with Contracts').