- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
数据交换实现模式
数据交换实现模式
XML标准的出现,使基于统一的规范格式的数据交换系统在实现技术上成为可能,各个应
用系统可以制订底层数据交换的规范,并定制符合自己领域需要的配套标签[4]。
利用XML文档作为中间数据源实现数据库间信息的交换需要将信息从源数据库提取出来
转移到XML文档,然后再将信息从XML文档转移到目的数据库。
2系统设计与实现
2.1系统结构和流程
考虑到系统的整体功能,系统采用B/S三层架构,分别为基于Web浏览器的表示层、处理
逻辑关系的业务层以及处理数据关系的数据层。
本系统采用的开发环境和开发工具为:MicrosoftWindowsServer2008、MicrosoftVisual
Studio2008、SQLServer2005。
为了满足数据交换的要求,通常数据交换系统包括数据发送和数据接收这两个部分。
数据发送部分的工作主要是把需要交换的数据通过一定的方式发送出去,而数据接收部分
的工作主要是把从发送端接收到的数据进行解析并保存。
基于以上情况,本文设计的系统将通过以下的流程运行:系统接收到发送请求以后,立即
对数据库执行查询操作,并把数据导入到数据处理部分。
数据在数据处理部分被封装成XML并打包成ZIP文件,然后发送出去,再由接受端解压
ZIP文件并解析XML文件,生成数据并更新数据库,返回结果。
这个过程可由图1表示。
2.2数据的生成
两个系统之间进行数据交换,如果传输的数据非异构数据,则数据可以直接交换。
但实际情况中,大多数的数据交换都是基于异构数据的交换,数据不能直接传输,必须以
其他方式传输。
本文首先会将数据库中的表转换为XML文件,然后再进行交换。
具体实现过程如下:当接收到发送请求以后,系统会立即对数据库进行查询操作。
判断数据在数据库中对应的表之后,实例化业务层中对应的类,调用在数据层中定义的
GetList方法将所需要的数据导入到DataSet。
DataSet中的数据会经由WriteXml(stringfileName)方法转换为XML文件并存入指定的文件
夹。
2.3数据的压缩和解析
如果文件的传输以XML进行,将会导致文件数量庞大,过程繁琐,较容易出错,因此系
统会将XML文件压缩成ZIP文件进行传输。
压缩部分的主要步骤是:首先找出需要传输的XML文件,存入数组,再压缩成ZIP文件。
该功能部分代码如下:ArrayListal=newArrayList();
stringstSJ=DateTime.Now.ToString(yyyyMMddHHmm
string[]stFiles=newstring[al.Count];
stringstFilename=this.Server.MapPath(temp/
al.Add(D:WebSitessjjhxml+stname++stname++stSJ+.xml
for(intii=0;iial.Count;ii++)
{stFiles[ii]=al[ii].ToString();}
zip(stFiles,stFilename,stSJ);
为了确保安全性,在ZIP文件传输之前系统用MD5对其进行加密操作。
当接收端接收到ZIP文件之后,首先用Unzip方法解压,并验证MD5的值,与原文件中
MD5值相同则验证通过,不同则返回重传。
得到XML文件以后,首先利用DirectoryInfo类和FileInfo类获取每个XML文件,并用
ReadXml方法将XML中的数据转入DataSet。
接下来必须判断这些数据对应的数据库中的表,由于每个XML的文件名都事先由表名和
时间定义,而时间是长度为16的字符串,因此用finame.Remove(finame.Length-16)即能获
取相应的表名。
在存入数据库之前,必须保证这些数据与目标数据库中的数据不重复。
由于每条数据的ID是唯一的,因此用判断ID是否存在来判断数据的重复与否。
在存入每条数据之前用方法Exis
文档评论(0)