基于Windows服務的異構數據庫同步應用方案
隨著電子信息化的發(fā)展與應用,各個企業(yè)各個單位之間都開發(fā)和應用了自己的信息化系統(tǒng)。各個單位之間使用了不同的開發(fā)技術和后臺數據庫,它們之間是分離,沒有關系的。企業(yè)集成不僅僅能創(chuàng)建一個三(表現(xiàn)層、業(yè)務層、數據訪問層)層應用結構,還能使一個應用分布到多臺計算機上。分布式應用中,單個的一層是無法自己運行的,而集成應用中的每一個應用都能獨立運行,它們時間通過偶合完成功能。異步消息傳遞體系結構來集成多個應用,異構數據庫的同步問題是實際項目中急待解決的問題
1 系統(tǒng)需求
電子數據交換最主要的任務是實現(xiàn)不同系統(tǒng),不同業(yè)務之間的數據交換與系統(tǒng)整合,下圖是一個實際項目中各個系統(tǒng)的分布圖(圖1),各個系統(tǒng)之間是彼此獨立的,使用各自不同的數據庫。首先企業(yè)端通過一站式申報平臺申報單證信息到海關由海關進行審批工作,如果海關審批通過,相應的企業(yè)端信息狀態(tài)則進行變更,然后企業(yè)端發(fā)送車輛信息到物流園區(qū)場站系統(tǒng),場站系統(tǒng)接收到海關端的放行信息和企業(yè)端發(fā)送的車輛信息則進行車輛通過放行工作。
圖1
圖2
整個系統(tǒng)之間是通過各自獨立的Windows服務監(jiān)控自己的數據庫,對應表發(fā)生變更以后,生成變更后的XML報文,通過路由設置由MQ消息隊列把報文發(fā)送到接收端,接收端服務接收到MQ報文以后,對接收的XML報文解析進入接收端數據庫。各個報文定義使用Schema定義來完成,只有符合Schema規(guī)則定義的報文才可以進入消息隊列來進行傳輸。例如客戶關系Schema報文定義如(圖2)所示,只有符合Schema格式的報文才可以生成XML報文進行傳輸。
2 系統(tǒng)框架
圖3
如(圖3)所示,傳輸系統(tǒng)使用了WINDOWS服務來完成數據傳輸的;根據上圖可以看出其內部包括以下組成部分:
(1) WindowsServe_Fuzhou :Windows 服務組件,負責整個系統(tǒng)的數據傳輸;出庫動作:Adapter組件接收到自己數據庫變更的時候,通過對應配置指定的Schema生成XML報文,發(fā)送報文到MQ消息隊列里面。入庫動作:接收到MQ隊列里面的XML報文、通過對應的Schema進行報文格式的解析,符合格式要求的報文通過Adapter組件進入到自己的數據庫表里面。
(2) MSMQ :消息隊列傳輸組件,負責XML報文的傳輸工作;
(3) BIZTALK_MESSAGE:報文定義、解析、路由、配置組件;是整個傳輸系統(tǒng)的核心。使用配置文件來完成以上配置工作,提高系統(tǒng)的靈活性。
(4) LOG:系統(tǒng)日志模塊,用于報文的傳輸跟蹤與調試,建立統(tǒng)一的日志監(jiān)控平臺,完成對每一筆報文的監(jiān)視工作,同時可以對出現(xiàn)異常的報文進行分析工作,通過Web頁面顯示給客戶;
(5) SqlAdapter_fuzhou:數據庫(SQLSERVER)監(jiān)視組件,當監(jiān)視到數據庫里面對應的表發(fā)生變更以后,Adapter組件會啟動BIZTALK_MESSAGE消息處理模塊,對數據表里面的記錄進行操作,進行出入庫操作,服務的數據訪問層使用了傳統(tǒng)的三層架構來完成,如(圖4)所示,數據庫與傳輸服務服務之間使用了ADO.net 進行數據庫訪問,通過數據訪問層(DAL)和業(yè)務邏輯層(BLL)完成,提高了系統(tǒng)的可讀性與靈活性;
圖4
(6) ORACLE Adapter:數據庫(ORACLE)監(jiān)視組件,對Oracle數據庫進行監(jiān)視工作,系統(tǒng)通過不同類型的Adapter實現(xiàn)的多種數據庫的訪問接口,如果有新的數據庫類型只需要增加對應的Adapter就可以實現(xiàn)對應的數據庫同步;
(7) Security_Module:消息傳遞過程中的加密解密組件,系統(tǒng)使用了證書加密機制來完成對XML報文的加密和解密工作;
具體代碼如下:
3 系統(tǒng)部署
系統(tǒng)編譯測試完成以后,需要把服務部署到對應的系統(tǒng)上面,各個系統(tǒng)之間是通過網閘分離開來的,如(圖1)所示,一站式平臺、海關端系統(tǒng)、場站系統(tǒng)分別部署自己的服務,各個服務之間協(xié)同工作用于完成報文的接收和發(fā)送工作,具體部署包括修改配置文件,DLL動態(tài)鏈接庫的裝配(其中Schema定義模塊需要裝配到操作系統(tǒng)目錄下面),運行數據庫腳本和具體的服務安裝工作(主要包括連接數據庫設置、報文監(jiān)控系統(tǒng)的設置)。安裝部署完成以后打開三個不同地點的WINDOWS服務,系統(tǒng)部署完成,可以實現(xiàn)不同數據庫的同步工作。通過實際項目的運行工作,目前運行情況良好。
4 結束語
文章通過WINDOWS服務的數據訂閱分發(fā)機制給出了數據交換的一些具體解決方案。其中對XML報文的定義、解析、配置工作是系統(tǒng)實現(xiàn)的核心工作。也可以通過其他的技術來實現(xiàn)數據的傳輸工作,比如BIZTALK進行系統(tǒng)傳輸可以提高系統(tǒng)的穩(wěn)定性、工作流傳輸可以提高系統(tǒng)的流程配置靈活性,這里不再進行詳細的分析與描述。
參考文獻
[1] http://www.cnblogs.com/chnking/archive/2007/08/30/875947.html