论文摘要:现如今汽车产业链平台已经成为汽车行业的领先平台,它为汽车制造商,服务商,供销商提供了优质的服务,然而由于产业链平台涉及的业务繁多,如何提高数据传输效率成为一个关键问题。本文就产业链平台数据传输方式进行的分析,提出一种可行的提高传输效率的解决方案。
论文关键词:平台,数据传输
一、引言
21世纪的竞争不是单个企业之间的竞争,而是产业链之间的竞争。面对产品更新速度不断加快,市场需求急剧变化,客户需求多样化和个性化等市场特点,很多企业都清楚地意识到已不能再局限于自身内部的资源,而必须考虑覆盖产品整个生命周期的环节,在与产业链上下游企业合作共赢的环境中增强整体竞争能力,求生存,求发展。随着企业业务范围的扩展和网络技术的发展,企业已开始从面向内部的ERP(EnterpriseResourcePlanning)管理转向全局的产业链管理,以此来提高企业总的业务性能和竞争实力。由于产业链平台支撑产供销各个环节,对于复杂的业务数据传输效率成为一个关键问题,针对这个问题,本文采用数据压缩技术来提高数据传输性能。
二、企业数据传输
作为一个分布异构集成平台的汽车产业链企业业务集成平台,首先需要解决的技术难点就是数据的交换和信息的共享。以车辆售后服务系统中的三包鉴定单为例,其处理过程中涉及到多个企业系统与平台之间的数据交换,如图,在整个汽车产业链业务协作过程中,存在着许多像鉴定单这样需要在不同系统间进行数据交换和共享的过程。基于WebService的集成技术,在很大程度上解决了原有集成技术在Internet远程通信方面的问题。
图1基于XMLWebService的数据交换与共享模型
WebService基于XML文档进行服务描述,服务请求和反馈结果,可以在Internet上通过HTTP协议进行传递,很容易被访问和返回结果。WebService与平台和操作系统无关,这就使异构平台上之间的集成变得很容易。
三、原因分析
由于该分布异构集成平台使用WebService技术,WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台,XML在传输过程中,会附带很多数据的相关信息,并以标签的形式表现出来。在传输过程中,这些标签会占用一半以上甚至更多的数据传输量,例如,要传输一个表格信息。
StudentID
|
Name
|
Age
|
00901
|
Wang Qi
|
20
|
表1.将要进行传输的表格示例
表中的数据在传输过程中,有可能会生成下面的XML文件.
代码1.对应于表1数据所传输的XML文件示例
…..
StudentID
Name
Age
………..
00901
WangQi
20
……..
如果上面的表格中还带有格式的信息的话,那么相应的XML就会更加复杂了。从上述XML中我们可以看出,除数据之外,XML会附加很多标签信息,这就使得传输的数据量增大,当所需要传输的数据比较多的时候,XML的标签就会带来比较大的效率问题。
四、解决方案
由于WebService在网络中传输的是以XML为基础的消息的请求和响应。大量的数据传输会使网络成为瓶颈,可以采用压缩技术对消息进行压缩。
数据压缩已经发展了很多年,有很多成熟的技术,算法以及工具包。经常用于对数据压缩的API有Zip方式。对文件进行压缩的做法非常简单,就是在发送XML之前对XML进行压缩,经过压缩以后,再在XML接收端对已经压缩的文件进行解压缩。一般来讲,系统请求XML的体积相对较小,没有必要使用压缩和解压缩的方法处理请求XML。而对于系统响应XML来讲,一般都包含大量的数据,导致其体积庞大,需要进行压缩处理。对响应XML进行压缩的流程如下:
图2数据压缩传输流程
该方法使用了成熟的压缩和解压缩技术,当数据量比较大的时候,可以大大提高传输效率。对于纯文本的XML,压缩可以减少其80%以上的体积。压缩和解压缩虽然可以使得XML的体积大大减少,但是其过程却是十分耗费系统资源的。压缩和解压缩往往会具有很大的CPU占有率以及内存占有率。适用于配置很高的客户端或服务器端。
代码2.Zip方式压缩部分实现代码示例
privatebyte[]Zip(stringstringToZip)
{………………
ZipOutputStreamzipOut=newZipOutputStream(ms);
ZipEntryZipEntry=newZipEntry('ZippedFile');
zipOut.PutNextEntry(ZipEntry);
zipOut.SetLevel(9);
zipOut.Write(inputByteArray,0,inputByteArray.Length);
zipOut.Finish();
…………………………..
}
在程序将对象模型序列化成XML之前,可以使用上面的压缩方法,对数据流进行压缩。部分代码如下:
代码3.对象模型序列化后再进行压缩的实现代码示例
publicMemoryStreamZipSoap(StreamstreamToZip)
{………………
XmlTextReaderreader=newXmlTextReader(streamToZip);
XmlDocumentdom=newXmlDocument();
dom.Load(reader);
…………………
XmlNodenode=dom.SelectSingleNode('//soap:Body',nsmgr);
node=node.FirstChild.FirstChild;
while(node!=null)
{
if(node.InnerXml.Length>0)
{
byte[]outData=Zip(node.InnerXml);
node.InnerXml=Convert.ToBase64String(outData);
}
node=node.NextSibling;
}
……….
}
解压缩的过程也类似于上述代码。 1/2 1 2 下一页 尾页 |