隨著電子信息化的發展與應用,各個企業各個單位之間都開發和應用了自己的 信息化系統。各個單位之間使用了不同的開發技術和後台數據庫,它們之間是分 離,沒有關系的。企業集成不僅僅能創建一個三(表現層、業務層、數據訪問層) 層應用結構,還能使一個應用分布到多台計算機上。分布式應用中,單個的一層 是無法自己運行的,而集成應用中的每一個應用都能獨立運行,它們時間通過偶 合完成功能。異步消息傳遞體系結構來集成多個應用,異構數據庫的同步問題是 實際項目中急待解決的問題
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進行系統傳輸可以提高系統的穩 定性、工作流傳輸可以提高系統的流程配置靈活性,這裡不再進行詳細的分析與 描述。