魏曉華,王振智,李 源,屠星月
(1.中國(guó)農(nóng)業(yè)大學(xué)信息與電氣工程學(xué)院,北京100083;2.農(nóng)業(yè)部農(nóng)業(yè)信息獲取技術(shù)重點(diǎn)實(shí)驗(yàn)室,北京100083;3.山東省農(nóng)業(yè)科學(xué)院科技信息研究所,山東濟(jì)南250100)
農(nóng)業(yè)是國(guó)民經(jīng)濟(jì)的基礎(chǔ)產(chǎn)業(yè),農(nóng)業(yè)信息化已成為世界各國(guó)信息化建設(shè)的重要組成部分[1-2]。隨著信息化的不斷發(fā)展,基于多種開(kāi)發(fā)平臺(tái)和多種后臺(tái)數(shù)據(jù)庫(kù)的應(yīng)用軟件越來(lái)越多,目前現(xiàn)有的信息系統(tǒng)太多,很多資源沒(méi)有得到有效的共享。為了將現(xiàn)有的各大信息系統(tǒng)進(jìn)行整合,并能夠交換數(shù)據(jù)、傳遞數(shù)據(jù),高效的系統(tǒng)集成對(duì)于農(nóng)業(yè)信息來(lái)說(shuō)至關(guān)重要[3]?,F(xiàn)有的農(nóng)業(yè)信息共享模式主要包括公開(kāi)數(shù)據(jù)庫(kù)模式、視圖和觸發(fā)器模式以及中間庫(kù)和WebService模式等。
第1種公開(kāi)數(shù)據(jù)庫(kù)模式中數(shù)據(jù)提供方向接收方公開(kāi)數(shù)據(jù)庫(kù)信息,允許直接讀取數(shù)據(jù)庫(kù)信息,同時(shí)允許接收方將信息寫入公開(kāi)的數(shù)據(jù)庫(kù)中。該方案的優(yōu)點(diǎn)是數(shù)據(jù)讀取速度快,數(shù)據(jù)更新時(shí)不需通知數(shù)據(jù)接收方。缺點(diǎn)是需提供方和接收方的配合度高,需要互相了解彼此的數(shù)據(jù)庫(kù)設(shè)計(jì)結(jié)構(gòu),并且還涉及到雙方知識(shí)產(chǎn)權(quán)。還可能因某一方軟件設(shè)計(jì)不合理,而直接影響對(duì)方軟件的運(yùn)行,甚至出現(xiàn)死鎖,甚至導(dǎo)致數(shù)據(jù)庫(kù)損壞[4]。
第2種視圖和觸發(fā)器模式中,視圖是一個(gè)虛擬表,其內(nèi)容由查詢定義。運(yùn)用視圖進(jìn)行共享,由于其自定義隱藏?cái)?shù)據(jù)從而保證數(shù)據(jù)安全,同時(shí)可使復(fù)雜的查詢易于理解和使用。觸發(fā)器是一個(gè)特殊的存儲(chǔ)過(guò)程,執(zhí)行由某個(gè)事件觸發(fā),例如向?qū)Ψ綌?shù)據(jù)庫(kù)中插入或更新或新增數(shù)據(jù)時(shí),則會(huì)啟動(dòng)觸發(fā)器;當(dāng)需調(diào)用對(duì)方數(shù)據(jù)庫(kù)中數(shù)據(jù)時(shí),即可直接調(diào)用對(duì)方數(shù)據(jù)庫(kù)中相應(yīng)的視圖。該模式的優(yōu)點(diǎn)是只需在對(duì)方的數(shù)據(jù)庫(kù)中增加觸發(fā)器和視圖,而無(wú)需過(guò)多改動(dòng)原有數(shù)據(jù)庫(kù),從而減少工作量,缺點(diǎn)是當(dāng)數(shù)據(jù)庫(kù)中存在的數(shù)據(jù)量較大時(shí),將明顯影響對(duì)方數(shù)據(jù)庫(kù)的運(yùn)行速度,甚至?xí)斐伤梨i。
第3種中間庫(kù)和WebService模式中,雙方系統(tǒng)采用中間庫(kù)的模式進(jìn)行數(shù)據(jù)交換。供方將對(duì)方需要的數(shù)據(jù)發(fā)送到中間表中,并設(shè)置相應(yīng)的寫入標(biāo)志,再由WebService通知對(duì)方數(shù)據(jù)已更新;需方從中間表中讀取信息,并設(shè)置相應(yīng)的讀取標(biāo)志,再由WebService通知對(duì)方數(shù)據(jù)已讀取完成。雙方的操作通過(guò)中間庫(kù)完全隔離。該模式速度快、可靠性高、通用性好、適應(yīng)性強(qiáng)、安全性高,無(wú)需雙方系統(tǒng)的工程師支持,即可獨(dú)立完成數(shù)據(jù)更新。
通過(guò)對(duì)3種方案的比較分析,筆者選擇應(yīng)用中間庫(kù)和WebService模式進(jìn)行農(nóng)業(yè)信息共享,并以山東省農(nóng)業(yè)10大產(chǎn)業(yè)平臺(tái)為例進(jìn)行方法驗(yàn)證,實(shí)現(xiàn)了10大產(chǎn)業(yè)平臺(tái)的數(shù)據(jù)分散管理和服務(wù)接口有機(jī)整合。
1.1 中間庫(kù) 中間庫(kù)是一種用于實(shí)現(xiàn)數(shù)據(jù)共享和交互的臨時(shí)數(shù)據(jù)庫(kù)。當(dāng)一個(gè)大系統(tǒng)中存在兩個(gè)或多個(gè)數(shù)據(jù)庫(kù),其中各個(gè)數(shù)據(jù)庫(kù)中存放著不同數(shù)據(jù),為實(shí)現(xiàn)數(shù)據(jù)共享和交互,可建立一個(gè)新的數(shù)據(jù)庫(kù),即中間庫(kù)用來(lái)存放臨時(shí)數(shù)據(jù)。中間庫(kù)中表和表字段需依據(jù)各系統(tǒng)的實(shí)際情況由對(duì)接雙方商討確定,賦予數(shù)據(jù)提供方寫入權(quán)限,以便其將其他系統(tǒng)需要的數(shù)據(jù)寫入中間庫(kù),賦予數(shù)據(jù)需求方開(kāi)放讀取權(quán)限,以便其從中間庫(kù)中讀取其他系統(tǒng)提供的數(shù)據(jù)供系統(tǒng)使用。
中間庫(kù)具有3大特性:①快速高效。通過(guò)數(shù)據(jù)庫(kù)內(nèi)置的功能,直接通過(guò)數(shù)據(jù)通信,減少數(shù)據(jù)中間轉(zhuǎn)換。②數(shù)據(jù)同步和完整性保證。對(duì)接雙方的數(shù)據(jù)將在可接受的時(shí)間間隔內(nèi)進(jìn)行中間庫(kù)數(shù)據(jù)的同步更新,從而保證數(shù)據(jù)的同步和完整。③數(shù)據(jù)安全性保證。經(jīng)過(guò)中間庫(kù)數(shù)據(jù)的緩沖,對(duì)接雙方可以對(duì)數(shù)據(jù)進(jìn)行過(guò)濾、分析從而實(shí)現(xiàn)對(duì)共享數(shù)據(jù)的控制。所有進(jìn)入對(duì)接雙方系統(tǒng)的數(shù)據(jù),都通過(guò)業(yè)務(wù)規(guī)則的處理,確保數(shù)據(jù)進(jìn)入系統(tǒng)時(shí)都是安全可靠的。
1.2 WebService WebService是一種獨(dú)立、低耦合、自包含、可編程的Web應(yīng)用程序,使用開(kāi)放的XML標(biāo)記語(yǔ)言描述、發(fā)布和配置,試紙是由若干站點(diǎn)開(kāi)放的遠(yuǎn)程調(diào)用接口,通過(guò)URL指定方法名后發(fā)出請(qǐng)求,站點(diǎn)中對(duì)應(yīng)的服務(wù)接口接到請(qǐng)求后,根據(jù)傳入的參數(shù)進(jìn)行處理,然后將處理結(jié)果以XML形式返回至請(qǐng)求方,請(qǐng)求方即可解析 XML數(shù)據(jù)[5-7]。WebService技術(shù)可在網(wǎng)絡(luò)中通過(guò)HTTP協(xié)議進(jìn)行傳遞,簡(jiǎn)化了訪問(wèn)和返回結(jié)果的過(guò)程,并能突破被防火墻的限制。Web-Service的一個(gè)最基本的目的就是解決了不同平臺(tái)不同系統(tǒng)之間數(shù)據(jù)傳輸、數(shù)據(jù)共享的問(wèn)題,達(dá)到協(xié)同工作的目的。WebService主要由XML、SOAP、WSDL以及UDDI技術(shù)所構(gòu)成。WSDL是程序員描述WebService的編程接口,簡(jiǎn)而言之,它實(shí)現(xiàn)了WebService接口與實(shí)現(xiàn)的分離。WebService可以通過(guò)UDDI來(lái)注冊(cè)自己的特性,其他應(yīng)用程序可以通過(guò)UDDI找到Web服務(wù)。SOAP則可提供應(yīng)用程序和Web服務(wù)之間的通信手段,實(shí)現(xiàn)各個(gè)WebService組件之間傳遞消息的傳輸層,因此可以說(shuō)是一項(xiàng)透明的協(xié)同技術(shù)。而SOAP、WSDL、UDDI都是建立在XML基礎(chǔ)之上。
1.3 基于中間庫(kù)和WebService共享模式流程 下面以系統(tǒng)為例闡述中間庫(kù)與WebService共享信息的模式。圖1為中間庫(kù)與WebService共享信息模式圖,系統(tǒng)A將數(shù)據(jù)寫入中間庫(kù),寫入標(biāo)志設(shè)置為1,然后通過(guò)WebService通知系統(tǒng)B數(shù)據(jù)已寫入,系統(tǒng)B從中間庫(kù)中讀取數(shù)據(jù),將讀取標(biāo)志設(shè)置為1,然后通過(guò)WebService通知系統(tǒng)A數(shù)據(jù)已讀取。同時(shí),系統(tǒng)A和系統(tǒng)B以XML的方式通過(guò)WebService進(jìn)行簡(jiǎn)單的數(shù)據(jù)交換。XML應(yīng)用過(guò)程中,系統(tǒng)A將中間庫(kù)Table1表中滿足條件Requirement的數(shù)據(jù)更新后,將Symbol標(biāo)志字段置為1,通過(guò)WebService方式通知系統(tǒng)B數(shù)據(jù)已改變,然后中間庫(kù)將已改變數(shù)據(jù)的標(biāo)志和改變條件通過(guò)XML方式由系統(tǒng)A通知系統(tǒng)B,然后系統(tǒng)B更新數(shù)據(jù),然后將中間庫(kù)中Table1表中Symbol標(biāo)志字段置為0表示更新任務(wù)已完成[8-11]。
數(shù)據(jù)更新接口為WRITEDATA,XML配置文件的內(nèi)容如下:
圖1 中間庫(kù)與WebService共享信息模式
目前我國(guó)已有很多網(wǎng)絡(luò)平臺(tái)提供農(nóng)業(yè)供求信息,然而通過(guò)專業(yè)網(wǎng)站獲取的農(nóng)業(yè)供求信息具有單一性和區(qū)域性,很多的網(wǎng)站僅針對(duì)某一類農(nóng)產(chǎn)品發(fā)布供求信息,僅提供對(duì)某一個(gè)地區(qū)的農(nóng)業(yè)供求信息[6]。為整合糧食作物、經(jīng)濟(jì)作物、林木花卉、果樹(shù)、蔬菜、生豬、畜牧、家禽、水產(chǎn)、農(nóng)產(chǎn)品等產(chǎn)業(yè)供求信息資源,將分散式管理變?yōu)榧惺焦芾?,將零散的小系統(tǒng)變?yōu)榻y(tǒng)一的大系統(tǒng),該研究構(gòu)建了基于中間庫(kù)和Webservice的農(nóng)業(yè)信息供求平臺(tái)“供求聯(lián)播”模式。該模式中,農(nóng)業(yè)信息服務(wù)總平臺(tái)統(tǒng)一組織規(guī)劃,各產(chǎn)業(yè)系統(tǒng)配合參與,從而實(shí)現(xiàn)供求信息互聯(lián)互通,方便數(shù)據(jù)共享和交換,具體如圖2所示。
2.1 “供求聯(lián)播”平臺(tái)工作流程 “供求聯(lián)播”平臺(tái)工作流程如圖3所示,具體為:①數(shù)據(jù)提供者寫入數(shù)據(jù),判斷寫入數(shù)據(jù)是否有效,若無(wú)效則返回重新寫入數(shù)據(jù),若有效則將數(shù)據(jù)存入中間庫(kù);②通知總平臺(tái)(數(shù)據(jù)接收者)讀取數(shù)據(jù),若讀取失敗則返回重新讀取,若讀取成功則將數(shù)據(jù)存入總平臺(tái)數(shù)據(jù)庫(kù)。然后發(fā)送通知給數(shù)據(jù)提供者,若通知失敗則返回重新通知,如果通知成功則將對(duì)外提供訪問(wèn)接口;③輸入檢索條件,首先判斷是否具有訪問(wèn)權(quán)限,若沒(méi)有訪問(wèn)權(quán)限則返回重新輸入檢索條件,若具有訪問(wèn)權(quán)限則返回授權(quán)碼,并將滿足檢索條件的數(shù)據(jù)輸出。
2.2 WebService實(shí)現(xiàn)流程 該平臺(tái)以Java語(yǔ)言開(kāi)發(fā),以A-pache Axis2為WebService框架,保證了跨平臺(tái)工作,同時(shí)也有利于異構(gòu)數(shù)據(jù)源的集成[12]。WebService通知流程如圖4所示,具體為:數(shù)據(jù)提供者調(diào)用相應(yīng)的WebService服務(wù)以XML的方式將數(shù)據(jù)存入中間庫(kù)對(duì)應(yīng)的表中,新寫入的數(shù)據(jù)標(biāo)志字段(Symbol)置為1,同時(shí)通知數(shù)據(jù)接收者數(shù)據(jù)已寫入中間庫(kù),數(shù)據(jù)接收者接到通知后去中間庫(kù)取數(shù)據(jù)并調(diào)用相應(yīng)的WebService服務(wù)以XML的方式將數(shù)據(jù)存入總平臺(tái)數(shù)據(jù)庫(kù),讀取完成后將數(shù)據(jù)標(biāo)志字段(Symbol)置為0,同時(shí)通知數(shù)據(jù)提供者數(shù)據(jù)已讀取完畢。在這個(gè)過(guò)程中,數(shù)據(jù)提供者、中間庫(kù)以及數(shù)據(jù)接收者之間的調(diào)用和協(xié)作都是通過(guò)WebService來(lái)實(shí)現(xiàn)的。
圖2 農(nóng)業(yè)信息供求平臺(tái)信息共享示意
圖3 “供求聯(lián)播”平臺(tái)的工作流程
為實(shí)現(xiàn)農(nóng)業(yè)專業(yè)信息平臺(tái)的信息整合與共享,該研究提出了一種基于中間庫(kù)與WebService農(nóng)業(yè)信息共享模式,利用中間庫(kù)實(shí)現(xiàn)數(shù)據(jù)共享的高效快速存取,同時(shí)保證了數(shù)據(jù)同步更新和完整性安全性,并利用WebService完成信息供求方的系統(tǒng)存取通知。最后,以農(nóng)業(yè)信息供求平臺(tái)為例,設(shè)計(jì)了基于中間庫(kù)與WebService的“供求聯(lián)播”信息共享,為我國(guó)農(nóng)業(yè)專業(yè)服務(wù)信息共享提供了有效參考。今后的研究中,還應(yīng)當(dāng)針對(duì)農(nóng)業(yè)資訊、種養(yǎng)殖管理技術(shù)、農(nóng)業(yè)資源等專業(yè)信息設(shè)計(jì)農(nóng)業(yè)信息共享模式。
圖4 WebService通知流程
[1]盛旗鋒.農(nóng)業(yè)信息化建設(shè)與評(píng)價(jià)研究[D].合肥:安徽農(nóng)業(yè)大學(xué),2006:48-53.
[2]唐啟國(guó).淺談農(nóng)業(yè)現(xiàn)代化與農(nóng)業(yè)信息化建設(shè)[J].農(nóng)業(yè)現(xiàn)代化研究,2004(1):56 -58.
[3]彭玢,代潔.基于中間庫(kù)與WebService平臺(tái)信息交互接口設(shè)計(jì)[J].算機(jī)與數(shù)字工程,2013(11):1801-1803.
[4]潘榮成.利用中間庫(kù)構(gòu)建醫(yī)院信息系統(tǒng)和檢驗(yàn)信息系統(tǒng)的無(wú)縫連接[J].醫(yī)學(xué)信息學(xué)雜志,2011(8):20 -22,25.
[5]陳紅茜,楊增玲,李輝,等.基于WebService和元數(shù)據(jù)的農(nóng)業(yè)生物質(zhì)特性數(shù)據(jù)共享平臺(tái)研究[J].廣東農(nóng)業(yè)科學(xué),2014(5):217-222.
[6]李琳琳,姚超,王慶超,等.基于Web Service的軟件資源共享方法研究[J].火力與指揮控制,2004(5):45 -48.
[7]李億紅,徐韌,程祥圣,等.基于XML和WebService的數(shù)據(jù)庫(kù)審計(jì)系統(tǒng)[J].計(jì)算機(jī)應(yīng)用與軟件,2010(1):198 -200,223.
[8]劉建勛,張申生,胡濤.基于Web與XML的企業(yè)交互集成接口研究[J].高技術(shù)通訊,2002(5):71 -75.
[9]李琳琳,姚超,王慶超,等.基于Web Service的軟件資源共享方法研究[J].火力與指揮控制,2014(5):45 -48.
[10]劉建勛,張申生,胡濤.基于Web與XML的企業(yè)交互集成接口研究[J].高技術(shù)通訊,2002(5):71 -75.
[11]HENDRICKSM,GALBRAITH B.Java Web 服務(wù)編程指南[M].北京:電子工業(yè)出版社,2002:58-62.
[12]何勇,陳世平.基于Webservice的校園數(shù)據(jù)共享的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2005(10):64-66.