段方振 何清頂
(中國衛(wèi)星海上測(cè)控部 江蘇江陰 214400)
基于WCF服務(wù)的異構(gòu)數(shù)據(jù)源集成查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
段方振 何清頂
(中國衛(wèi)星海上測(cè)控部 江蘇江陰 214400)
異構(gòu)數(shù)據(jù)集成查詢是當(dāng)前單位信息化建設(shè)過程中面臨的一個(gè)重要課題,能夠解決實(shí)際應(yīng)用中的“信息孤島”問題。集成己有系統(tǒng)的數(shù)據(jù),屏蔽各異構(gòu)數(shù)據(jù)源間的差異,為用戶提供涉及多個(gè)異構(gòu)數(shù)據(jù)源的統(tǒng)一查詢機(jī)制,提高了數(shù)據(jù)的查詢效率和利用率。
WCF;異構(gòu)數(shù)據(jù);集成查詢
針對(duì)某單位在信息化發(fā)展過程中形成的異構(gòu)數(shù)據(jù)源所帶來的數(shù)據(jù)集成問題,通過分析國內(nèi)外數(shù)據(jù)集成技術(shù),統(tǒng)的研究了異構(gòu)數(shù)據(jù)源數(shù)據(jù)集成的體系結(jié)構(gòu)、主流技術(shù)、設(shè)計(jì)和實(shí)現(xiàn),采用Mediator/Wrapper的方式并借鑒面向服務(wù)SOA的思想進(jìn)行數(shù)據(jù)集成,并利用WCF技術(shù)的跨平臺(tái)特性和SOAP消息[1]的簡(jiǎn)單通用、穿透力強(qiáng)的特性,使用SOAP消息封裝數(shù)據(jù)來實(shí)現(xiàn)較大范圍的數(shù)據(jù)集成;利用Microsoft.NET中的ADO.NET技術(shù)[2]解決數(shù)據(jù)庫數(shù)據(jù)異構(gòu)的問題,設(shè)計(jì)并實(shí)現(xiàn)了異構(gòu)數(shù)據(jù)源集成查詢的原型系統(tǒng)。為某單位的業(yè)務(wù)系統(tǒng)數(shù)據(jù)共享提供簡(jiǎn)單、方便、綜合的查詢服務(wù)平臺(tái),該系統(tǒng)在現(xiàn)有各信息管理系統(tǒng)保持自治的基礎(chǔ)上,實(shí)現(xiàn)了信息系統(tǒng)間所要共享數(shù)據(jù)的集成查詢,從而達(dá)到對(duì)整個(gè)系統(tǒng)實(shí)施統(tǒng)一的控制和訪問。
2.1 系統(tǒng)分析
在已經(jīng)存在的多個(gè)異構(gòu)的、分布的數(shù)據(jù)源的基礎(chǔ)上實(shí)現(xiàn)集成查詢,這就需在各業(yè)務(wù)系統(tǒng)數(shù)據(jù)源的基礎(chǔ)上建立一個(gè)綜合集成查詢平臺(tái),用戶通過集成查詢平臺(tái)能夠同時(shí)對(duì)多個(gè)業(yè)務(wù)系統(tǒng)數(shù)據(jù)源的數(shù)據(jù)進(jìn)行透明訪問。用戶的查詢請(qǐng)求所涉及的數(shù)據(jù)可能來自于多個(gè)信息系統(tǒng)的數(shù)據(jù)。由于各業(yè)務(wù)信息系統(tǒng)的數(shù)據(jù)源都是相互獨(dú)立的實(shí)體,都具有相對(duì)的獨(dú)立性、自主性,同時(shí)為了各自業(yè)務(wù)系統(tǒng)信息的安全,各業(yè)務(wù)系統(tǒng)數(shù)據(jù)源只會(huì)提供相關(guān)的業(yè)務(wù)數(shù)據(jù),而不是數(shù)據(jù)源所有的數(shù)據(jù)。為此在參與集成的各業(yè)務(wù)系統(tǒng)數(shù)據(jù)以數(shù)據(jù)訪問接口形式的提供訪問,在該數(shù)據(jù)源的WCF Service[3~4]中提供了多個(gè)數(shù)據(jù)訪問接口,這些數(shù)據(jù)訪問接口上所能返回的數(shù)據(jù)就是參與系統(tǒng)集成的數(shù)據(jù)。在數(shù)據(jù)接口中不能返回的數(shù)據(jù),用戶則無法訪問。
異構(gòu)數(shù)據(jù)源集成查詢系統(tǒng)根據(jù)用戶的查詢需求實(shí)時(shí)從各局部數(shù)據(jù)源獲取所需的數(shù)據(jù),集成查詢系統(tǒng)平臺(tái)相當(dāng)于在多個(gè)業(yè)務(wù)系統(tǒng)的數(shù)據(jù)源與用戶之間建立一個(gè)查詢服務(wù)中間層。對(duì)用戶來說,只要擁有一個(gè)瀏覽器,就可以提交相應(yīng)的查詢請(qǐng)求,而集成查詢系統(tǒng)平臺(tái)對(duì)用戶的查詢請(qǐng)求依據(jù)全局模式和屬性映射表中的對(duì)應(yīng)關(guān)系進(jìn)行解析,然后將查詢分解為對(duì)各個(gè)業(yè)務(wù)系統(tǒng)WCF Service本地代理中數(shù)據(jù)訪問接口的調(diào)用,最后將各數(shù)據(jù)訪問接口返回的數(shù)據(jù)集成在一起返回給用戶,這樣就可以滿足用戶的查詢請(qǐng)求。
2.2 系統(tǒng)設(shè)計(jì)方案
針對(duì)集成查詢系統(tǒng)的需求,對(duì)各業(yè)務(wù)系統(tǒng)數(shù)據(jù)源構(gòu)建WCF Service,將參與集成的數(shù)據(jù)以操作契約的形式封裝在WCF Service中。同時(shí)利用WCF Service可跨平臺(tái)、能穿越防火墻、互操作等特點(diǎn),實(shí)現(xiàn)集成查詢系統(tǒng)平臺(tái)和各業(yè)務(wù)系統(tǒng)WCF Servcie之間消息和數(shù)據(jù)傳輸。在每個(gè)業(yè)務(wù)系統(tǒng)數(shù)據(jù)源端部署一個(gè)WCF Servcie,而一個(gè)WCF Service中有多個(gè)數(shù)據(jù)訪問接口,每個(gè)數(shù)據(jù)訪問接口返回的數(shù)據(jù)即為該數(shù)據(jù)源參與系統(tǒng)集成的數(shù)據(jù)。集成查詢系統(tǒng)平臺(tái)可按照需要分布在不同的地方,便于用戶應(yīng)用。
2.3 系統(tǒng)數(shù)據(jù)訪問接口的設(shè)計(jì)
數(shù)據(jù)訪問接口對(duì)參與集成的每個(gè)數(shù)據(jù)源中的相關(guān)數(shù)據(jù)進(jìn)行結(jié)構(gòu)化處理后,使這些數(shù)據(jù)訪問接口能夠提供該數(shù)據(jù)源用于參與系統(tǒng)集成的數(shù)據(jù)。WCF Service在集成查詢系統(tǒng)中注冊(cè),并將其中的數(shù)據(jù)訪問接口注冊(cè)到全局?jǐn)?shù)據(jù)庫中,同時(shí)建立數(shù)據(jù)訪問接口的屬性和全局模式[5]屬性之間的映射關(guān)系。由于參與集成的局部數(shù)據(jù)源可能是不同的類型,例如有些數(shù)據(jù)源提供的是半結(jié)構(gòu)化數(shù)據(jù)如xml,文本文件,excel等。為了將這些不同的數(shù)據(jù)源集成到系統(tǒng)中,就需要根據(jù)集成系統(tǒng)的需求把其中的數(shù)據(jù)轉(zhuǎn)換為能夠給全局模式提供的結(jié)構(gòu)化數(shù)據(jù)。
通過WCF Service中的操作契約即數(shù)據(jù)訪問接口,利用微軟ADO.NET作為數(shù)據(jù)源的包裝器來實(shí)現(xiàn)數(shù)據(jù)的結(jié)構(gòu)化的處理的。ADO.NET通過數(shù)據(jù)提供程序能訪問各種數(shù)據(jù)源,包括SQLServer,MySQL,Oracle,ACCESS等,以及ODBC,OLEDB數(shù)據(jù)源,同時(shí)屏蔽了具體數(shù)據(jù)源的一些具體特征,包括該數(shù)據(jù)源所能接受的訪問方法,具體數(shù)據(jù)源所在的地址,對(duì)實(shí)際數(shù)據(jù)源發(fā)出的請(qǐng)求以及結(jié)果的具體數(shù)據(jù)格式等。本文中在按照用戶需求通過數(shù)據(jù)訪問接口對(duì)參與集成的每個(gè)數(shù)據(jù)源中的相關(guān)數(shù)據(jù)進(jìn)行結(jié)構(gòu)化處理后,使這些數(shù)據(jù)訪問接口能夠提供該數(shù)據(jù)源用于參與系統(tǒng)集成數(shù)據(jù)。而這些數(shù)據(jù)訪問接口能夠在特定查詢限制條件下接受用戶查詢請(qǐng)求,并返回符合查詢條件的數(shù)據(jù)。數(shù)據(jù)訪問接口用F(A1,A2,…,An)來表示,它是在該數(shù)據(jù)源預(yù)先確定的一組屬性 A(A1,A2,…,An)上的取值,并輸出固定結(jié)構(gòu)的數(shù)據(jù)
3.1 數(shù)據(jù)采集子系統(tǒng)功能模塊的設(shè)計(jì)
數(shù)據(jù)采集子系統(tǒng)能實(shí)現(xiàn)定時(shí)定期采集數(shù)據(jù)源中相關(guān)的業(yè)務(wù)數(shù)據(jù),將數(shù)據(jù)統(tǒng)一轉(zhuǎn)換為XML格式的數(shù)據(jù)[6],并將數(shù)據(jù)提交給集成查詢子系統(tǒng),通過數(shù)據(jù)采集子系統(tǒng)消除異構(gòu)數(shù)據(jù)源間的模式、數(shù)據(jù)類型等的異構(gòu)。
3.2 集成查詢子系統(tǒng)功能模塊
集成查詢子系統(tǒng)的設(shè)計(jì)目的是集成各數(shù)據(jù)采集子系統(tǒng)提交的相關(guān)業(yè)務(wù)數(shù)據(jù),消除數(shù)據(jù)間的異構(gòu),將數(shù)據(jù)集成為全局?jǐn)?shù)據(jù)后開放查詢接口,接受用戶的查詢。
本文針對(duì)當(dāng)前某單位信息化建設(shè)面臨的實(shí)際情況,研究并提出了一個(gè)基于WCF的異構(gòu)數(shù)據(jù)集成查詢解決方案,詳細(xì)論述了異構(gòu)數(shù)據(jù)集成查詢系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)和難點(diǎn)問題,并最終實(shí)現(xiàn)了異構(gòu)數(shù)據(jù)集成查詢的原型系統(tǒng)。該系統(tǒng)能實(shí)現(xiàn)在保持單位各業(yè)務(wù)信息系統(tǒng)相對(duì)獨(dú)立的同時(shí),對(duì)各業(yè)務(wù)數(shù)據(jù)的動(dòng)態(tài)查詢。該方案充分利用了WCF服務(wù)的互操作性,具有部署靈活和易管理的優(yōu)點(diǎn),較好地解決了某單位各業(yè)務(wù)系統(tǒng)間數(shù)據(jù)集成查詢的問題。
[1]Bill Evjen等.《ASP.NET4高級(jí)編程(第7版)》,清華大學(xué)出版社,2010,9.
[2]Bill Hamilton.《ADO.NET3.5經(jīng)典實(shí)例第2版》.機(jī)械工業(yè)出版社,2009,9.
[3]年福豐,劉秋讓.基于WCF的異構(gòu)數(shù)據(jù)源集成系統(tǒng)的研究和實(shí)現(xiàn)[J].科學(xué)技術(shù)與工程,2009,11(9).
[4]沈 正,陳 鍾.基于WCF和SOA的電力SCADA系統(tǒng)研究與開發(fā)[J].信息技術(shù),2009,13.
[5]毛國君.高級(jí)數(shù)據(jù)庫原理與技術(shù)[M].北京:人民郵電出版社,2004:176~197.
[6]邵秀麗,韓建彬,閻仲璞.基于XML的異構(gòu)數(shù)據(jù)源間數(shù)據(jù)交換的實(shí)現(xiàn)研究.南開大學(xué)學(xué)報(bào)(自然科學(xué)版)2007,Vol.40(3):9~14.
TP311.5
A
1004-7344(2016)11-0317-01
2016-3-26