整合概念看似简单,真正实作可不是如此。或许你建立的一个JavaWebservice,只要再利用ASP.NET呼叫这个Webservice,就可轻松将HelloWorld字符串传送过去。刚开始你也许会觉得很感动,但很快的…,就会发现企业应用程序所面对数据型别的复杂性,根本不是简单的一个小范例可处理的。
不论是考虑整合.NET与J2EE的技术选项,或是计划利用第三方协力厂商所开发的整合软件进行互通,入门第一堂课就必须了解-在不同平台与应用程序的展示层、中介层与数据层之间,数据是如何传递的。
在异质平台之间进行数据交换通常会面对的挑战可分成三大类,基本上多是数据兼容性的问题,包括:
基本数据型别的对应:不论是.NET的CommonLanguageRuntime(CLR),还是Java都有字符串的数据型别,但这是否代表CLR的System.String类别等同于Java的java.lang.string类别?不存在的数据型别:基本数据型别之外,不同平台也会有特殊的数据型别,而需完成数据对应的动作。举例来说,是不可能在Java中找到内建且可对应至CLR的System.Collections.Specialized.HybridDictionary等资料型别。
复杂的数据型别:许多应用程序都会将基本数据型别组合成自订化的数据型别,也许是客户数据、股票数据等;若是客户数据则可能包含客户名称、地址、电话、年龄等信息,又该如何在其它平台上处理这些自订化的数据型别呢?
最后一种状况也是最常见且困难度最高的整合挑战。一般而言,要进行复杂数据型别的数据交换工作,常见方式是「序列化」(Serialization)。
所谓序列化,就是将某对象或类别,编码成可储存、传输的格式。如此一来,数据便可以被编码、储存、传输与译码,并可被不同的应用程序与平台使用。
序列化可分为两种方式。一种是「二进制序列化」。不论是.NET的[Serializable]属性或实作的ISerializable接口,还是java.lang.Serializable,都支持将任何数据型别序列化的功能。然而坏消息是:两大平台所序列化的格式不同,无法整合。




