提高J2EE与.NET之间的互操作性,第2部分 - 编程入门网
精度。
无论数据类型是数值类型还是引用类型,信息传递的一方都可能出现问题。数值类型的对象位于栈中,但是引用类型的对象位于堆中。这意味着引用类型可能有空指针,但是数值类型不能有空值。如果 XSD 类型在一种语言中被映射成了数值类型,而在另一种语言中被映射成了引用类型,那么这可能导致问题的出现。例如 xsd:dateTime 被映射成了 System.DateTime,这是 C# 中的数值类型。它也被映射成了 java.util.Calendar,这是 Java 中的引用类型。事实上,java.util.Date 和 java.util.Calendar 都是引用类型。在 Java 中,当引用类型没有引用任何对象时将其赋空值,这是公共的操作。然而,如果 .NET Web 服务从 Java 客户端接收到数值类型为空值的数据时,将抛出 System.FormatException。为了避免这个问题的出现,您可以定义复合类型来封装数值类型,并将这个复合类型置为空来表示空引用。 结束语 在本文中,您可以看到由于使用某些数据类型而产生的一些互操作性的问题。为了在使用数据类型时能够达到更好的互操作性,一般的规则是: 尽量多地使用简单数据类型。完全避免使用那些异样的复合类型,如 ArrayList、Tree,甚至公共的 Hashtable。 即使简单的数组通常都具有非常好的同 Web 服务的交互性,注意数组中的内容,确保数组中的元素在每个平台上的含义都是相同的,并且避免发出含有空元素的数组。 注意每个平台都是如何实现一些本地原始类型的,如 float、double 和 dates 和 times。 在该系列文章中的下一部分,我将研究在 Web 服务互操作性上的命名空间所产生的影响。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |