基于Windows服务的异构数据库同步应用方案
随着电子信息化的发展与应用,各个企业各个单位之间都开发和应用了自己的信息化系统。各个单位之间使用了不同的开发技术和后台数据库,它们之间是分离,没有关系的。企业集成不仅仅能创建一个三(表现层、业务层、数据访问层)层应用结构,还能使一个应用分布到多台计算机上。分布式应用中,单个的一层是无法自己运行的,而集成应用中的每一个应用都能独立运行,它们时间通过偶合完成功能。异步消息传递体系结构来集成多个应用,异构数据库的同步问题是实际项目中急待解决的问题
1 系统需求
电子数据交换最主要的任务是实现不同系统,不同业务之间的数据交换与系统整合,下图是一个实际项目中各个系统的分布图(图1),各个系统之间是彼此独立的,使用各自不同的数据库。首先企业端通过一站式申报平台申报单证信息到海关由海关进行审批工作,如果海关审批通过,相应的企业端信息状态则进行变更,然后企业端发送车辆信息到物流园区场站系统,场站系统接收到海关端的放行信息和企业端发送的车辆信息则进行车辆通过放行工作。
图1
图2
整个系统之间是通过各自独立的Windows服务监控自己的数据库,对应表发生变更以后,生成变更后的XML报文,通过路由设置由MQ消息队列把报文发送到接收端,接收端服务接收到MQ报文以后,对接收的XML报文解析进入接收端数据库。各个报文定义使用Schema定义来完成,只有符合Schema规则定义的报文才可以进入消息队列来进行传输。例如客户关系Schema报文定义如(图2)所示,只有符合Schema格式的报文才可以生成XML报文进行传输。
2 系统框架
图3
如(图3)所示,传输系统使用了WINDOWS服务来完成数据传输的;根据上图可以看出其内部包括以下组成部分:
(1) WindowsServe_Fuzhou :Windows 服务组件,负责整个系统的数据传输;出库动作:Adapter组件接收到自己数据库变更的时候,通过对应配置指定的Schema生成XML报文,发送报文到MQ消息队列里面。入库动作:接收到MQ队列里面的XML报文、通过对应的Schema进行报文格式的解析,符合格式要求的报文通过Adapter组件进入到自己的数据库表里面。
(2) MSMQ :消息队列传输组件,负责XML报文的传输工作;
(3) BIZTALK_MESSAGE:报文定义、解析、路由、配置组件;是整个传输系统的核心。使用配置文件来完成以上配置工作,提高系统的灵活性。
(4) LOG:系统日志模块,用于报文的传输跟踪与调试,建立统一的日志监控平台,完成对每一笔报文的监视工作,同时可以对出现异常的报文进行分析工作,通过Web页面显示给客户;
(5) SqlAdapter_fuzhou:数据库(SQLSERVER)监视组件,当监视到数据库里面对应的表发生变更以后,Adapter组件会启动BIZTALK_MESSAGE消息处理模块,对数据表里面的记录进行操作,进行出入库操作,服务的数据访问层使用了传统的三层架构来完成,如(图4)所示,数据库与传输服务服务之间使用了ADO.net 进行数据库访问,通过数据访问层(DAL)和业务逻辑层(BLL)完成,提高了系统的可读性与灵活性;
图4
(6) ORACLE Adapter:数据库(ORACLE)监视组件,对Oracle数据库进行监视工作,系统通过不同类型的Adapter实现的多种数据库的访问接口,如果有新的数据库类型只需要增加对应的Adapter就可以实现对应的数据库同步;
(7) Security_Module:消息传递过程中的加密解密组件,系统使用了证书加密机制来完成对XML报文的加密和解密工作;
具体代码如下:
3 系统部署
系统编译测试完成以后,需要把服务部署到对应的系统上面,各个系统之间是通过网闸分离开来的,如(图1)所示,一站式平台、海关端系统、场站系统分别部署自己的服务,各个服务之间协同工作用于完成报文的接收和发送工作,具体部署包括修改配置文件,DLL动态链接库的装配(其中Schema定义模块需要装配到操作系统目录下面),运行数据库脚本和具体的服务安装工作(主要包括连接数据库设置、报文监控系统的设置)。安装部署完成以后打开三个不同地点的WINDOWS服务,系统部署完成,可以实现不同数据库的同步工作。通过实际项目的运行工作,目前运行情况良好。
4 结束语
文章通过WINDOWS服务的数据订阅分发机制给出了数据交换的一些具体解决方案。其中对XML报文的定义、解析、配置工作是系统实现的核心工作。也可以通过其他的技术来实现数据的传输工作,比如BIZTALK进行系统传输可以提高系统的稳定性、工作流传输可以提高系统的流程配置灵活性,这里不再进行详细的分析与描述。
参考文献
[1] http://www.cnblogs.com/chnking/archive/2007/08/30/875947.html