This article was first published by IBM developerWorks at http://www.ibm.com/developerWorks , and has been reproduced here with permission.
Part 1 of this series discussed the importance of designing a Web Services Description Language (WSDL) and XML Schema data types (XSD) before code writing, the rationale in completely moving toward the Document/literal style, and the necessity in testing the WS-I Basic Profile conformance when developing Web services. This part illustrates the use and impact data types have on interoperability.
The input parameters and return values of data types of a Web service operation have a great impact on the interoperability of the Web service. Web services serve as transport for an XML document exchange. When data objects push down into a Web service stack, they serialize into XML data representations. The Web service stack on the other side needs to know exactly how to map those XML data representations to the needs of the environment of the local application (for example, the de-serialization of XML data). The XML Schema definitions are what drives the mappings. The objective of the XSDs is to guarantee that the type sent has a reproducible version on the other end. But due to the implementation difference in the underlying technologies (Java™ 2 Platform, Enterprise Edition (J2EE) technology versus Microsoft® .NET), the mappings between XSDs and native data types on those platforms might be different. Some of the differences might result in de-serialization failure, while others might cause information distortion.
In the following sections, I discuss several interoperability issues in relation to data types such as:
- The improbability of vendor tools to accurately interpret XML Schemas representing weakly-typed collection objects and mapping them to the correct native data types.
- XML representations of an array with null elements differ between .NET and IBM® WebSphere®.
- Translation issues resulting in the loss of information or precision due to a lack of a one-to-one mapping shared by native and XSD data types.
Comments