資源描述:
《海洋地質(zhì)數(shù)據(jù)訪問中間件的設(shè)計的問題和策略》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、海洋地質(zhì)數(shù)據(jù)訪問中間件的設(shè)計的問題和策略1系統(tǒng)目標(biāo)與功能數(shù)據(jù)訪問中間件是為了解決分布式X絡(luò)環(huán)境中,透明訪問異構(gòu)數(shù)據(jù)資源而開發(fā)的軟件實現(xiàn)了應(yīng)用領(lǐng)域中對象實體及屬性與關(guān)系數(shù)據(jù)庫中的關(guān)系表及數(shù)據(jù)之間的相互映射,從而使該中間件的使用者能夠直接面對業(yè)務(wù)模型,以面向?qū)ο蟮姆绞竭M(jìn)行業(yè)務(wù)實體的操作。MGDAM要能滿足以下功能需求:①利用合適的分布式數(shù)據(jù)訪問方法和數(shù)據(jù)提供方式,實現(xiàn)對不同單位海洋地質(zhì)數(shù)據(jù)的分布式訪問。②為上層業(yè)務(wù)應(yīng)用提供統(tǒng)一的業(yè)務(wù)模型。③解決面向?qū)ο蟮拈_發(fā)和關(guān)系數(shù)據(jù)存儲間的不匹配問題,實現(xiàn)對象關(guān)系映射(O/R-M)[4]。同時,基于合適的對象關(guān)系映射工具,能自動生成代碼,減少開發(fā)工作量
2、。④能快速適應(yīng)數(shù)據(jù)源的變化。⑤主要滿足用戶信息查詢的需求,不涉及進(jìn)行數(shù)據(jù)的修改。2系統(tǒng)設(shè)計2.1系統(tǒng)架構(gòu)設(shè)計MGDAM的框架結(jié)構(gòu)如圖1所示,MGDAM位于異構(gòu)數(shù)據(jù)源系統(tǒng)(數(shù)據(jù)層)和應(yīng)用程序(應(yīng)用層)之間,向下協(xié)調(diào)各數(shù)據(jù)源系統(tǒng),向上為訪問集成數(shù)據(jù)的應(yīng)用提供統(tǒng)一數(shù)據(jù)模式和數(shù)據(jù)訪問的通用接口[5]。其中數(shù)據(jù)層是實際的物理數(shù)據(jù)存儲,主要是各類關(guān)系型數(shù)據(jù)庫,包括Oracle、SQLServer、Access,提供關(guān)系數(shù)據(jù)模型,以關(guān)系表、字段、記錄等方式提供數(shù)據(jù)。應(yīng)用層是各種應(yīng)用程序,包括GDAM內(nèi)部自下而上又可以分為四個邏輯層次:持久化層、業(yè)務(wù)模型層、數(shù)據(jù)服務(wù)層、服務(wù)管理層。持久化層[6]提供
3、對象關(guān)系映射框架,實現(xiàn)對象關(guān)系映射機(jī)制;由于本項目是基于.進(jìn)行開發(fā),則采用基于.的ORM映射工具NHibernate[7],利用NHibernate自動生成SQL去從數(shù)據(jù)庫存取對象。業(yè)務(wù)模型層調(diào)用持久層以實現(xiàn)業(yè)務(wù)對象的持久化,提供映射后的業(yè)務(wù)對象模型,業(yè)務(wù)對象模型是統(tǒng)一邏輯模型的子類,符合邏輯模型定義,為數(shù)據(jù)服務(wù)層服務(wù)。數(shù)據(jù)服務(wù)層利用分布式通信編程框架L類圖如圖2所示,包括樣品站位要素類和多個對象類,如取樣現(xiàn)場記錄、樣品入庫記錄、巖芯描述、巖芯照片、分析測試等。2.3基于對象模型的數(shù)據(jù)契約設(shè)計基于對象模型進(jìn)行數(shù)據(jù)契約(DataContract)[8]設(shè)計,主要是對對象模型中的每個對象
4、類,通過DataContract與DataMember屬性將其定義為數(shù)據(jù)契約。MGDAM基于C#語言將類的屬性定義為C#的Virtual屬性,并通過get和set關(guān)鍵字實現(xiàn)屬性的定義。3系統(tǒng)實現(xiàn)3.1基于NHibernate實現(xiàn)對象關(guān)系映射基于NHibernate實現(xiàn)對象關(guān)系映射,需要在建立持久化類基礎(chǔ)上,創(chuàng)建NHibernate表映射和數(shù)據(jù)庫連接。其實現(xiàn)的關(guān)鍵是創(chuàng)建NHibernate表映射,即建立映射文件,每個數(shù)據(jù)庫表對應(yīng)一個映射文件,用于生成數(shù)據(jù)模型。在映射文件中定義了數(shù)據(jù)存儲到哪個數(shù)據(jù)庫表,哪個屬性映射到哪個字段,不同的對象如何相互關(guān)聯(lián)。在運(yùn)行過程中,NHibernate根據(jù)
5、映射文件生成SQL語句[9]。如鉆孔信息(BoreholeInfo)的映射文件定義如下:table=Boreholeunsaved-value=0Z!--一對多關(guān)系:BoreholeInfo有一個或多個DrillingRecords--3.2基于GDAM采用了基于控制臺應(yīng)用程序?qū)崿F(xiàn)數(shù)據(jù)服務(wù)自托管,其關(guān)鍵代碼如下:namespaceHOST{classProgram{staticvoidMain(string[]args){TypeserviceType=typeof(DataProviderService);using(ServiceHosthost=neoteAddressinda
6、taProvider){DataProviderClientclient=neoteAddress);//根據(jù)已注冊的數(shù)據(jù)服務(wù)動態(tài)調(diào)用//使用client變量在服務(wù)上調(diào)用操作。.client.Close();}if(docRst!=null)return(XmlDocumentToString(docRst));elsereturnNULLRESULT;4結(jié)論海洋地質(zhì)數(shù)據(jù)訪問中間件,利用NHibernate將數(shù)據(jù)從關(guān)系數(shù)據(jù)庫中的表形式轉(zhuǎn)化為對象,使得數(shù)據(jù)層和業(yè)務(wù)層分離,提高了系統(tǒng)的擴(kuò)展性,同時提高了開發(fā)效率和質(zhì)量;MGDAM基于技術(shù)的研究與應(yīng)用[D].上海交通大學(xué)碩士學(xué)位論文,200
7、9..中國海洋大學(xué)碩士學(xué)位論文,2010.[6]孫衛(wèi)琴.精通Hibernate:Java對象持久化技術(shù)詳解[M].電子工業(yè)出版社,2005.[7]NHibernate-RelationalPersistenceforIdiomatic..NHibernateReferenceDocumentation.http://.hibernate.org/hib-docs/NHibernate//2006-06-03..電子工業(yè)出版社,2012.[9]秦澤葉,高改梅