I am a big fan of Top-Down/Contract-First Style of web service development as a mechanism to improve web services interoperability. I recently came across a series of articles from IBM on improving interoperability between J2EE and .NET. I wanted to explicitly call out their summary of best practices for web services interoperability:
- Design the XSD and WSDL first, and program against the schema and interface.
- If at all possible, avoid using the RPC/encoded style.
- Wrap any weakly-typed collection objects with simple arrays of concrete types as the signature for Web service methods.
- Avoid passing an array with null elements between Web services clients and servers.
- Do not expose unsigned numerical data types in Web services methods. Consider creating wrapper methods to expose and transmit the data types.
- Take care when mapping XSD types to a value type in one language and to a reference type in another. Define a complex type to wrap the value type and set the complex type to be null to indicate a null value.
- Because base URIs are not well-defined in WSDL documents, avoid using relative URI references in namespace declarations.
- To avoid conflicts resulting from different naming conventions among vendors, qualify each Web service with a unique domain name. Some tools offer custom mapping of namespaces to packages or provide refactoring of package names to resolve this problem.
- Develop a comprehensive test suite for Web Services Interoperability Organization (WS-I) conformance verification.
Here are links to the articles:
br>