提高J2EE与.NET之间的互操作性,第2部份[Java编程]
本文“提高J2EE与.NET之间的互操作性,第2部份[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
引言
该系列文章的第 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部份[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |