Desing Web Services "Contract First"
In the Web Service arena many developers have recognised that the good old software engineering principles still apply these days: First discuss and design the interface and then implement it:
I somehow agree with this principle due to the following reasons:
Web Service toolskits on the other hand often encourage developers to use there well known programming environment and extract a the contract (WSDL) .
Axis supports contract first with it's WSLD2Java tool.
The open question is how good J2EE Web services (JSR 109) support this approach?
I somehow agree with this principle due to the following reasons:
- Interface constraints or restrictions cannot be expressed exactly enough using programming languages. For example: "enumerations of concrete values" or "date vs time" etc.
- Interface very often contains only subset of the internal domain data, maybe even transformed, often restricted. A separate layer of mapping is usually anyway requred.
- Designing the contract first encourages early discussion and agreement with service partners.
- Designing the contract first encourages explicit considerations of interoparability compliance (for example WS-I Basic Profile) instead of completely relying on a tool
Web Service toolskits on the other hand often encourage developers to use there well known programming environment and extract a the contract (WSDL) .
Axis supports contract first with it's WSLD2Java tool.
The open question is how good J2EE Web services (JSR 109) support this approach?