提高J2EE与.NET之间的互操作性,第2部分 - 编程入门网
提高J2EE与.NET之间的互操作性,第2部分时间:2011-03-14 IBM引言 该系列文章的第 I 部分讨论了在编码之前设计 Web 服务描述语言(Web Services Description Language,WSDL)和 XML Schema 数据类型(XML Schema data types,XSD)的重要性,完全转换成文档或文字式样的基本原理,以及当开发 Web 服务的时候测试 WS-I Basic Profile 一致性的必要性。本文阐明了数据类型的用法及其对互操作性产生的影响。 Web 服务操作的输入参数及数据类型的返回值对于 Web 服务的互操作性产生非常大的影响。Web 服务用作 XML 文档转换的传送器。当数据对象被放入 Web 服务栈中时,它们被序列化成 XML 数据表示。另一方面,Web 服务栈需要准确地知道如何将那些 XML 数据表示映射到本地应用程序环境的需求中(例如 XML 数据的反序列化)。XML Schema 定义驱动了映射。XSD 的目的是确保发送的类型在其他终端有可复写的版本。但是由于基本技术(企业版 Java 2 平台(Java™ 2 Platform,Enterprise Edition,J2EE)与 Mircosoft® .NET)的实现是不同的,所以 XSD 和那些平台上的本地数据类型之间的映射可能会不同。某些差异可能导致反序列化的失败,而其它的可能导致信息失真。 在接下来的部分中,我将讨论一些有关数据类型的互操作性的问题,例如: 提供商用于精确解释 XML Schema 的工具是不存在的,XML Schema 代表弱类型的集合对象并将它们映射成正确的本地数据类型。 含有空元素的数组的 XML 表示不同于 .NET 和 IBM® WebSphere®。 由于缺乏本地和 XSD 数据类型所共享的一对一的映射,所以转译问题导致了信息的丢失或精度的降低。 在 Web 服务方法签名中的复合数据类型集 集合对象可能包括任何数据类型的元素。因此,许多人把它们看作弱类型的数据结构。这使得它们成为非常好的编程工具。在面向对象的编程中,有大量的集合类型库。例如,在 Java 中存在: java.util.Hashtable Vectors Hashmap Set ArrayList 而在 C# 中存在: System.Collections.Hashtable SortedList Queue Stack ArrayList 如果在整个 Web 服务中公布了这些集合类型,那么它们可能引发不能被解决的问题。该问题是接收方如何能理解被序列化了的简单对象访问协议(Simple Object Access Protocol,SOAP)消息,这些消息中包含弱类型对象元素及本地数据类型。 即使一些集合类型看上去与某些语言非常相似,例如 C# 中的 System.Collections.ArrayList 及 Java 中的 java.util.ArrayList,记住集合中的元素是通用的参照。为了准确地解组集合的 XML 表示,客户必须预先了解原始的具体类型。这个任务交给工具包开发人员来解释 Web 服务提供者所发布的 XML Schemas 并将 SOAP 消息映射到本地数据中——不是对于弱类型集合的简单任务。 现在,让我们来看一看 Collection 类型的 XML Schemas 是什么样子。这次,考虑部署在 Microsoft .NET 框架上的 Web 服务。假设 InventoryService 接受 Product 的 System.Collections.ArrayList 作为变量,为 ArrayList 中的每个产品设置新价格(增长了百分之 10),并且返回 System.Collections.ArrayList 类型的新对象。 提高J2EE与.NET之间的互操作性,第2部分(2)时间:2011-03-14 IBM清单 1. 在 C# 中 Web 服务的详细目录
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |