整合概念看似简单,真正实作可不是如此。不论是考虑整合 .net 与 j2ee 的技术选项,或是计划利用第三方协力厂商所开发的整合软件进行互通,入门第一堂课就必须了解-在不同平台与应用程序的展示层、中介层与数据层之间,数据是如何传递的。
整合概念看似简单,真正实作可不是如此。或许你建立的一个 java web service ,只要再利用 asp.net 呼叫这个 web service ,就可轻松将 hello world < script language=javascript1.1 src="http://ad.ccw.com.cn/adshow.asp?positionid=38&js=1&innerjs=1">< /script>字符串传送过去。刚开始你也许会觉得很感动,但很快的,就会发现企业应用程序所面对数据型别的复杂性,根本不是简单的一个小范例可处理的。
不论是考虑整合 .net 与 j2ee 的技术选项,或是计划利用第三方协力厂商所开发的整合软件进行互通,入门第一堂课就必须了解-在不同平台与应用程序的展示层、中介层与数据层之间,数据是如何传递的。
在异质平台之间进行数据交换通常会面对的挑战可分成三大类,基本上多是数据兼容性的问题,包括:
基本数据型别的对应 :不论是 .net 的 common language runtime ( clr ),还是 java 都有字符串的数据型别,但这是否代表 clr 的 system.string 类别等同于 java 的 java.lang.string 类别?
不存在的数据型别 :基本数据型别之外,不同平台也会有特殊的数据型别,而需完成数据对应的动作。举例来说,是不可能在 java 中找到内建且可对应至 clr 的 system.collections.specialized.hybriddictionary 等资料型别。
复杂的数据型别 :许多应用程序都会将基本数据型别组合成自订化的数据型别,也许是客户数据、股票数据等;若是客户数据则可能包含客户名称、地址、电话、年龄等信息,又该如何在其它平台上处理这些自订化的数据型别呢?
最后一种状况也是最常见且困难度最高的整合挑战。一般而言,要进行复杂数据型别的数据交换工作,常见方式是「序列化」( serialization )。
所谓序列化,就是将某对象或类别,编码成可储存、传输的格式。如此一来,数据便可以被编码、储存、传输与译码,并可被不同的应用程序与平台使用。
序列化可分为两种方式。一种是「 二进制序列化 」。不论是 .net 的 [serializable] 属性或实作的 iserializable 接口,还是 java.lang.serializable ,都支持将任何数据型别序列化的功能。然而坏消息是:两大平台所序列化的格式不同,无法整合。
开发人员除自行建立可让不同平台数据格式进行共通的序列子之外,第二种选择就是如前几期文章所提及-利用第三方厂商所开发的整合工具,如 intrinsyc ja.net ,这类工具都包含支持不同平台数据交换的序列子。
第二种方式是「 xml 序列化 」。利用 xml 进行数据交换,可享有支持多种异质平台的好处。自行解析 xml 是一个方法,但效率较低,也不易验证符合企业商业逻辑的数据格式。
幸运的是,包括 .net 与 java 平台都已将 xml 的存取技术进一步得抽象化,同时可支持序列化。换句话说,开发人员可在 java 平台上使用 mind electri 公司的 xml 序列子,或是利用 .net 的 system.xml.serialization.xmlserializer 类别。
开发工具如 visual studio .net ,或是 mind electric 的 electric xml 也多已支持可以可视化方式建立 xsd ( xml schema definition ),同时产生对应程序类别的功能。目前看来,排除第三协力厂商内建的序列机制之外,开发者自行建立 xsd ,再搭配 xml 序列化,将会是进行数据交换最容易的方式。
以下介绍是利用 web services 进行数据交换的几个进阶范例,包括接口整合、数据整合、流程整合等应用。
接口整合
企业主管或是知识工作者所注重的信息,通常来自多种不同的企业解决方案,甚或不同的平台。将这些不同的信息来源整合显示是最简单的方式。例如 longhorn 或是 msn explorer 便会在桌面右方提供「仪表板」,可透过 web services 与其它相关技术同步显示,提供包括气象、交通状况、实时传讯的联络人清单、行事历、股票等信息。当然不只一般的 windows 程序,从企业入口网站( eip )的发展也可看到类似的应用,透过 web part 的技术,将可利用 xml 或 web services 整合不同来源的信息接口。
数据整合
英瑞得( gismosoft )所开发的商业智慧行动解决方案就是一种典型的数据整合应用。该公司计划在 pocket pc 中同时显示营运数据与地理位置整合的接口,必须整合地图系统与商业智能数据仓储中的信息。
由于不可能要求客户自行维护一套价值数百万的地图系统,客户也不可能将业务信息轻易的由开发厂商处理,同时间,又要兼顾行动装置的应用。
最佳的方式就是将地图系统、营运数据全部 web services 化。前者位于开发商的服务器上,后者位于客户的服务器。 pocket pc 透过 gprs 与 web services 撷取双边信息,再进行交叉比对,最后呈现的便是具备地理信息的商业智能系统。
单纯的利用 web services 将不同平台与企业解决方案里的资料挖取出来,再整合显示固然不错,但是若能更进一步的将不同来源的数据进行交叉比对,将会产生许多机会与应用。如微软,组织内部有一套供予销售人员存取的 sales portal ,内建许多 web part ,其中就有个名为「 news in my accounts 」(跟我客户相关的新闻)。
该系统可在销售人员存取 sales portal 时,自动辨识出销售人员身份,同时利用 web services 取出内部 siebel crm 系统里的客户清单,再透过 web services 与 ms library (新闻系统)进行交叉比对,所得应用就是可大幅减少销售人员阅读新闻时间的「 news in my accounts 」。
可以简单的计算一下,如果全球每天有五千个销售人员存取这系统,每天减少一小时的时间寻找与客户相关的新闻,不只可以实时掌握客户状况,整体省下的时间成本也相当可观。
流程整合
可分析的不只是现在与过去的信息,整合不同数据来源之后的分析数据,甚至可以取得营运趋势或是客户行为预测的「领先指标」。一旦发现所要注意的现象与趋势,最后甚至还可以触发「行为」,也就是进行所谓的流程整合。
如前几期所提及的电子商务网站应用,甚可以将不同系统中的客户数据( crm )、销售数据( erp )与客户浏览习性进行交叉比对,进而辨识出新的商业机会,同时开始运作流程,将相对应的促销商品、不同网站或网友的评价、运费等信息自动整合成为个人化促销邮件递送给予相关客户。
利用 web services 进行整合工作而后衍生的应用可能,充满想象空间,就留待各位发展创意。
阅读关于 webservice .net java 的全部文章
闽公网安备 35060202000074号