一卡通系統(tǒng)數(shù)據(jù)交換模式初探
文章出處:http://www.fang1.net 作者:歐陽小建 人氣: 發(fā)表時間:2011年12月03日
一、前言
一卡通,簡言之即一卡通用,用戶持一張卡可在多個應用領(lǐng)域進行使用,最常見的如企業(yè)一卡通、校園一卡通、小區(qū)一卡通、酒店一卡通等等。不同行業(yè)的一卡通系統(tǒng),其基本架構(gòu)一般都采用平臺+應用的模式,即在一卡通平臺之上來構(gòu)筑諸跟卡相關(guān)的應用系統(tǒng),如達實公司自主研發(fā)的C3企業(yè)一卡通系統(tǒng)即由企業(yè)一卡通平臺(人員信息+設(shè)備信息+卡片信息+數(shù)據(jù)庫后臺)外加常見的考勤、消費、門禁等應用;而校園一卡通系統(tǒng)一般由校園一卡通平臺外加常見的食堂消費、綜合消費、考勤管理、門禁管理、數(shù)字迎新管理、控水、控電節(jié)能管理以及圖書館管理、機房管理、多媒教學、重點設(shè)備管理等應用。
IC卡技術(shù)發(fā)展到現(xiàn)在,形成了不同行業(yè)中的參差不齊的一卡通系統(tǒng)供應商,有的供應商面向高端市場,也有的面向中低端市場。我們的終端用戶往往對IC卡的應用及其相關(guān)知識缺乏足夠的了解,在選擇適合于自己企業(yè)的一卡通系統(tǒng)時往往選擇了至少2家以上的系統(tǒng)供應商,如選擇了A系統(tǒng)供應商的考勤管理系統(tǒng),同時選擇了B供應商的消費、門禁管理子系統(tǒng),因為在用戶看來,這兩家供應商各有所專長,且供應商答應仍可實現(xiàn)所謂的一卡通用。對IC卡系統(tǒng)熟悉的讀者就會知道,這實際上并非是真正意義上的一卡通(卡通、庫通、網(wǎng)通三者缺一不可),因為至少數(shù)據(jù)庫就未真正通起來。這樣的客戶并不少見,在我接觸的許多用戶中就有這樣的案例,我們額外所要做的事就是如何在不同的一卡通系統(tǒng)之間做數(shù)據(jù)交換。
另外,由于大多數(shù)一卡通系統(tǒng)供應商做的是專業(yè)的一卡通系統(tǒng)(如專業(yè)做考勤系統(tǒng)或門禁或停車場系統(tǒng)),從而使得企業(yè)用戶在選擇這些供應商時,往往得同時向多家一卡通供應商去購買拼湊型一卡通系統(tǒng)。而這些系統(tǒng)的基礎(chǔ)數(shù)據(jù)又恰恰來源于企業(yè)的HR系統(tǒng)。這又迫使企業(yè)投入足夠的人力物力去協(xié)調(diào)各系統(tǒng)間的數(shù)據(jù)交換及同步問題。
基于一卡通行業(yè)的應用現(xiàn)狀,如何在各信息系統(tǒng)之間找到一種簡單、通用、高效的數(shù)據(jù)交換機制,就成為一件很有意義的事情。下面我們就來探討一下這個數(shù)據(jù)交換問題。
二、常用數(shù)據(jù)交換模式
一卡通系統(tǒng)之間需要共享的數(shù)據(jù)一般均為基礎(chǔ)數(shù)據(jù),如人員信息(包括人員姓名、性別、部門、出生年月、部門以及在職狀態(tài)等)、卡片信息(包括卡ID號、流水號、卡狀態(tài)日期、卡狀態(tài)、卡有效期等)等。而業(yè)務(wù)明細數(shù)據(jù)在這方面則相對要求比較少,除非客戶想基于這些業(yè)務(wù)數(shù)據(jù)做一些深層次的數(shù)據(jù)挖掘工作。
基礎(chǔ)數(shù)據(jù)交換的方式一般常見的有以下幾種,外部文件(如Txt、CSV、XML)導入導出、數(shù)據(jù)庫視圖(DataView)方式、數(shù)據(jù)庫觸發(fā)器(Trigger)方式、中間服務(wù)(如Web Service)方式。下面分別作一些簡單介紹。
2.1文件共享模式(TXT、CSV、XML)
文共享模式是最常見的一種松耦合的數(shù)據(jù)交換模式。文件的數(shù)據(jù)格式事先由系統(tǒng)雙方共同約定,之后由導出系統(tǒng)按約定格式導出,待導入系統(tǒng)接收文件后按約定格式進行解析并導入系統(tǒng)。示意圖如圖1所示。
文件的格式通常有以下幾種:
i) TXT格式(Text Document):純文本文件;
ii) CSV格式(Comma Separate Values):以逗號為分隔符的數(shù)據(jù)交互格式,具體格式定義如下:
每條記錄占一行;
以逗號為分隔符;
逗號前后的空格會被忽略;
字段中包含有逗號,該字段必須用雙引號括起來;
字段中包含有換行符,該字段必須用雙引號括起來;
字段前后包含有空格,該字段必須用雙引號括起來;
字段中的雙引號用兩個雙引號表示;
字段中如果有雙引號,該字段必須用雙引號括起來;
第一條記錄,可以是字段名;
iii) XML格式(Extensible Markup Language):XML是一種擴展標記語言,它是一種簡單的數(shù)據(jù)儲存語言,采用一系列簡單的標記來描述數(shù)據(jù),極易被第三方系統(tǒng)掌握和使用。
在實際應用中,具體選擇哪種數(shù)據(jù)格式并不重要,重要的是看哪一種格式更適合于當前雙方之間的系統(tǒng),即要減少工作量而且要能提高數(shù)據(jù)交換的時效性。
數(shù)據(jù)文件共享模式的優(yōu)點在于其完全的松耦合性,安全性也比較好,雙方系統(tǒng)之間無需直接通訊,只要系統(tǒng)雙方事先約定好一定的數(shù)據(jù)格式,即可通過一定的介質(zhì)或載體將數(shù)據(jù)傳遞至另外一個系統(tǒng)。
這種模式的缺點是數(shù)據(jù)傳遞的實時性不好,無法快速響應用戶對數(shù)據(jù)實時性要求較高的場合。
2.2數(shù)據(jù)視圖模式(Data View)
該模式是通過在提供數(shù)據(jù)的系統(tǒng)數(shù)據(jù)庫內(nèi)建立一開放數(shù)據(jù)視圖(Data View),專供第三方系統(tǒng)來主動獲取數(shù)據(jù)。我們常見的SQL Server、Oracle數(shù)據(jù)庫均可建立這樣的視圖。示意圖如圖2所示。
這種數(shù)據(jù)交互模式下,A系統(tǒng)一般會創(chuàng)建一個單獨的用戶,供B系統(tǒng)獲取Data View專用,該用戶一般只擁有讀取指定視圖數(shù)據(jù)的權(quán)限,所以不必擔心B系統(tǒng)通過該用戶會對A系統(tǒng)的數(shù)據(jù)造成破壞的可能。
數(shù)據(jù)視圖模式下的B系統(tǒng)對數(shù)據(jù)的訪問相對外部文件模式來說更主動和實時一些,只要B系統(tǒng)一有數(shù)據(jù)變動,視圖便會自動反映出來,只要B系統(tǒng)的數(shù)據(jù)獲取機制足夠靈活和實時即可獲得不錯的數(shù)據(jù)交互效果。
數(shù)據(jù)視圖模式也是一種松耦合型的數(shù)據(jù)接口模式,其優(yōu)點在于提供數(shù)據(jù)方的工作量較少,只要建好視圖、開放用戶即可;另外視圖也可靈活定義,只要保證輸出項不變即可,至于數(shù)據(jù)條件可靈活設(shè)置。缺點是由于其數(shù)據(jù)庫部分對外開放,在數(shù)據(jù)交互量較大的情況下會對數(shù)據(jù)提供方的后臺數(shù)據(jù)庫性能造成一定的影響。
2.3觸發(fā)器模式(Trigger)
觸發(fā)器模式是一種可解決雙方系統(tǒng)數(shù)據(jù)能實時進行同步的一種模式之一,它是通過在數(shù)據(jù)提供方的后臺數(shù)據(jù)庫中建立一些數(shù)據(jù)觸發(fā)器,達到當數(shù)據(jù)一旦發(fā)生異動時能通過觸發(fā)器在第一時間傳遞給第三方系統(tǒng),從而達到實時的目的。示意圖如圖3所示。
該模式下,A系統(tǒng)會在自己的數(shù)據(jù)庫中有針對性地創(chuàng)建一些數(shù)據(jù)表Trigger,通過這些Trigger可以將數(shù)據(jù)表的異動情況及時傳遞出去;而B系統(tǒng)一般會先創(chuàng)建一個單獨的用戶,供A系統(tǒng)的Trigger直接將異動數(shù)據(jù)傳遞到B系統(tǒng)之用,另外,在B系統(tǒng)方一般會創(chuàng)建一個或多個中間數(shù)據(jù)表,供A系統(tǒng)的Trigger通過指定的用戶進行讀和寫。
Trigger模式與Data View模式有點相似,都是A系統(tǒng)主動將異動數(shù)據(jù)準備好,由B系統(tǒng)實時或非實時地去讀取。Trigger模式下數(shù)據(jù)交互的實時性取決于B系統(tǒng),在Trigger模式下,如果B系統(tǒng)中的中間數(shù)據(jù)表也建立相應的觸發(fā)器,實時對傳遞過來的數(shù)據(jù)進行解析,則這種實時性就相當不錯了;但如果B系統(tǒng)是通過上位應用軟件來定時分解中間數(shù)據(jù)表內(nèi)的數(shù)據(jù),則實時性的效果就不是很明顯了。
一般常用SQL Server或Oracle數(shù)據(jù)庫系統(tǒng)均可對表建立觸發(fā)器,所以這種模式對數(shù)據(jù)同步的實時性要求很高的系統(tǒng)來說不失為一種選擇。觸發(fā)器模式是一種緊耦合的模式,它要求被同步的系統(tǒng)開放其部分數(shù)據(jù)表的可寫功能,而這種開放數(shù)據(jù)庫的可寫性是數(shù)據(jù)接口的避諱。所以這種模式在不得已的情況下不建議大家去采用。
2.4中間服務(wù)模式(Web Service)
中間服務(wù)模式是指由數(shù)據(jù)提供方開放并提供一些中間數(shù)據(jù)服務(wù),這些服務(wù)與數(shù)據(jù)庫物理分離,數(shù)據(jù)接收方通過這些數(shù)據(jù)服務(wù)來獲取對方數(shù)據(jù)的一種模式。示意圖如圖4。
中間數(shù)據(jù)服務(wù)模式對數(shù)據(jù)接口的開放性和安全性方面來說都是最佳的一種模式。數(shù)據(jù)提供方通過建立一系列的中間數(shù)據(jù)服務(wù),針對不同的第三方系統(tǒng)靈活定制不同的數(shù)據(jù)服務(wù),同時制定不同的開放策略,靈活性很高。數(shù)據(jù)接收方要獲取數(shù)據(jù),必須先獲得調(diào)用中間服務(wù)的許可權(quán),有了許可權(quán),就可以直接調(diào)用開放的中間數(shù)據(jù)服務(wù)來獲取想要的數(shù)據(jù)。
中間數(shù)據(jù)服務(wù)的開發(fā)語言可以有很多種,最常見的有基于.Net或J2EE架構(gòu)下開發(fā)的Web Service服務(wù)。Web服務(wù)(Web Service)是近年內(nèi)興起的另一種基于Internet的技術(shù),在近幾年受到了極大的關(guān)注。該技術(shù)的出現(xiàn)標志著人類已經(jīng)邁入應用程序開發(fā)技術(shù)的新紀元,它使得Internet不僅是傳輸數(shù)據(jù)的平臺,也變成了傳遞服務(wù)的平臺。
簡單的說,一個Web服務(wù)(圖5)就是一個能夠使用XML消息通過網(wǎng)絡(luò)來訪問的接口,這個接口描述了一組可訪問的操作。它是由企業(yè)驅(qū)動和應用驅(qū)動而產(chǎn)生的;它具有分布性、松散藕合、可復用性、開放性以及可交互性等特性。
中間數(shù)據(jù)服務(wù)雖然有以上諸多優(yōu)點,但仍無法滿足對數(shù)據(jù)的實時性要求,即無法做到數(shù)據(jù)的實時同步。
三、通用數(shù)據(jù)交換模式初探
前面我們討論了一卡通系統(tǒng)之間一些常用的數(shù)據(jù)交換模式,包括各自的優(yōu)缺點我們也分別進行了一些論述,下面我們來對一卡通系統(tǒng)之間的通用數(shù)據(jù)交換模式來做一個初步的探討。
3.1通用數(shù)據(jù)交換模式的定義
通用數(shù)據(jù)交換一般必須滿足以下幾個要素:
1) 支持多個一卡通系統(tǒng)之間進行數(shù)據(jù)交換;
2) 支持多個異構(gòu)數(shù)據(jù)庫之間的數(shù)據(jù)交換;
3) 實施布署靈活,有較好的人機對話界面;
4) 采用TCP/IP通訊協(xié)議進行數(shù)據(jù)包的傳遞;
5) 具備消息通知機制和日志可追查能力;
6) 具備數(shù)據(jù)交換的授權(quán)接入機制,保證數(shù)據(jù)安全。
如圖6所示。
3.2通用數(shù)據(jù)交換架構(gòu)模型
根據(jù)前面的定義,我們可以初步設(shè)想一下通用數(shù)據(jù)交換的架構(gòu)模型。
首先,該數(shù)據(jù)交換要能同時支持多個系統(tǒng)之間的數(shù)據(jù)進行交換(或稱之為同步),它必須要有一套完整的數(shù)據(jù)收集及數(shù)據(jù)分發(fā)系統(tǒng),我們暫時稱其為“通用數(shù)據(jù)交換系統(tǒng)”,如圖7所示。
圖7可以簡單地看出“通用數(shù)據(jù)交換系統(tǒng)”的基本功能及工作原理,從第三方系統(tǒng)的數(shù)據(jù)安全性考慮,數(shù)據(jù)交換系統(tǒng)盡量避免直接對第三方的數(shù)據(jù)庫進行操作。由此,我們可以引出“通用數(shù)據(jù)交換系統(tǒng)”中間件的概念。
中間件(MiddleWare),是基礎(chǔ)軟件的一大類,屬于可復用軟件的范疇。顧名思義,中間件處于操作系統(tǒng)軟件與用戶的應用軟件的中間。中間件在操作系統(tǒng)、網(wǎng)絡(luò)和數(shù)據(jù)庫之上,應用軟件的下層,總的作用是為處于自己上層的應用軟件提供運行與開發(fā)的環(huán)境,幫助用戶靈活、高效地開發(fā)和集成復雜的應用軟件。
中間件分為兩大類:一類是底層中間件,用于支撐單個應用系統(tǒng)或解決單一類問題,包括交易中間件(TPM)、應用服務(wù)器(WAS)、消息中間件(MOM)、 數(shù)據(jù)訪問中間件(UDA)等;另一類是高層中間件,更多用于系統(tǒng)整合,包括企業(yè)應用集成中間件(EAI Suites)、工作流中間件(Workflow)、門戶中間件(Portal)等,它們通常會與多個應用系統(tǒng)打交道,在系統(tǒng)中的層次較高,并大多基于底層中間件運行。
數(shù)據(jù)交換中間件既包括底層中間件,用來與特定的第三方系統(tǒng)進行數(shù)據(jù)交換,也包括高層中間件,用來整合多個第三方系統(tǒng)之間的數(shù)據(jù)交互。
有了數(shù)據(jù)交換中間件,我們可以對數(shù)據(jù)交換系統(tǒng)架構(gòu)模型進行細化,如圖8所示。
我們將數(shù)據(jù)交換系統(tǒng)的中間件分兩部分,位于數(shù)據(jù)中心方(即待同步數(shù)據(jù)方)的中間件稱之為中間件服務(wù)端,位于第三方系統(tǒng)(即待接收數(shù)據(jù)方)的中間件稱之為中間件用戶端。這樣從數(shù)據(jù)中心出來的數(shù)據(jù)經(jīng)過中間件才到達第三方系統(tǒng)的數(shù)據(jù)庫中,我們就可以將很多數(shù)據(jù)業(yè)務(wù)邏輯、安全檢查以及數(shù)據(jù)處理規(guī)則等放在中間件端,從而減輕了數(shù)據(jù)庫方的壓力。
“通用數(shù)據(jù)交換系統(tǒng)”采用了流行的中間件技術(shù),重點加強了數(shù)據(jù)交換的靈活性、傳輸?shù)陌踩?,以及易實施性等諸多優(yōu)點。
四、篇尾總結(jié)
隨著各行各業(yè)對一卡通系統(tǒng)的要求越來越高,除了穩(wěn)定性、可擴展性被視為重要因素之一外,各一卡通產(chǎn)家之間的信息數(shù)據(jù)共享也顯得越來越重要,客戶不希望買了一堆信息相互孤立的系統(tǒng)。所以數(shù)據(jù)交換和共享成了一卡通廠家要優(yōu)先考慮的事情。
本文粗略對一卡通系統(tǒng)之間的數(shù)據(jù)交換模式進行了枚舉式的講解,并大膽提出“通用數(shù)據(jù)交換模式”的概念。由于篇幅有限原因,本文只能先簡單對“通用數(shù)據(jù)交換系統(tǒng)”作拋磚引玉式的講解,作者將會在后期的文章中繼續(xù)對“通用數(shù)據(jù)交換系統(tǒng)”在用戶端授權(quán)、用戶端加密策略及加密字等方面展開討論,希望有興趣的讀者可以一起來加以補充和完善。 (作者:達實智能,軟件工程部經(jīng)理歐陽小建)
參考文獻
1. 《CSV文件格式介紹》,http://blog.iyi.cn/billy/2006/06/csv.html.
2. 《XML格式》,http://www.hoodong.com/wiki/xmlæ ¼å¼.
3. 《中間件的定義、分類以及典型產(chǎn)品》,http://www.51testing.com/77492/action_viewspace_itemid_19488.html