亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于OSGi的跨平臺測井軟件設(shè)計及應(yīng)用

        2014-12-13 05:27:02陳江浩余衛(wèi)東雷曉陽彭慧琴方璐張培軍
        測井技術(shù) 2014年5期
        關(guān)鍵詞:跨平臺插件視圖

        陳江浩,余衛(wèi)東,雷曉陽,彭慧琴,方璐,張培軍

        (中國石油集團測井有限公司,陜西 西安710077)

        0 引 言

        EILog[1]測井成套裝備已經(jīng)在國內(nèi)外30多個地區(qū)和油田投入生產(chǎn)應(yīng)用,井下測井儀器也開發(fā)出適用于常規(guī)裸眼井測井、套管井測井、非常規(guī)測井、過鉆具測井等多個系列;地面系統(tǒng)也逐步向網(wǎng)絡(luò)化、智能化發(fā)展。這些都對ACME[2]測井采集軟件提出更高的要求。①可擴展性。軟件用戶的多樣化,儀器系列的增加,地面系統(tǒng)新技術(shù)應(yīng)用對測井采集軟件的可擴展性提出更高要求,主要集中在儀器組件庫的擴展、主控模塊的擴展、處理方法的擴展、繪圖對象的擴展。②可維護性。軟件日益復(fù)雜,要求從軟件設(shè)計角度進一步降低軟件的維護成本,提高維護效率和質(zhì)量,方便軟件推廣應(yīng)用。

        本文在深入分析 OSGi[3](Open Service Gateway Initiative)框架的基礎(chǔ)上,提出了一種基于C++的跨平臺Q-OSGi框架實現(xiàn),重點解決服務(wù)層、生命周期層、事件服務(wù)、擴展點等關(guān)鍵技術(shù)。將該框架應(yīng)用在測井采集實時監(jiān)控軟件中,特別是對集成界面、可視化系統(tǒng)、數(shù)據(jù)層進行了詳細設(shè)計。

        1 OSGi服務(wù)平臺

        1.1 OSGi介紹

        OSGi服務(wù)平臺規(guī)范是OSGi聯(lián)盟提出的一個松耦合、面向服務(wù)的應(yīng)用程序開發(fā)框架[4]。它提供了系統(tǒng)動態(tài)擴充、修改系統(tǒng)功能和改變系統(tǒng)行為的支持,也提供了規(guī)范化的模塊組件以及統(tǒng)一的開發(fā)方式。

        1.2 OSGi的優(yōu)勢和不足

        OSGi框架的優(yōu)勢主要集中3個方面:可擴展性、軟件復(fù)雜度和可維護性。利用OSGi框架本身提供的動態(tài)擴展支持,通過對整個系統(tǒng)進行模塊化拆分,降低了模塊實施的復(fù)雜度。通過良好的模塊化組織和版本管理,通過局部更新來減少對整個軟件系統(tǒng)的影響,進一步降低了維護成本。

        OSGi框架是基于Java語言特性而定制的。由于Java語言采用虛擬機形式運行,對于測井實時采集軟件其運行效率不能滿足要求,而且測井采集軟件已有代碼都是基于C++開發(fā)的,必須充分繼承這部分資源,降低開發(fā)成本。

        2 跨平臺測井軟件架構(gòu)設(shè)計與實現(xiàn)

        2.1 基于C++的跨平臺OSGi框架實現(xiàn)(Q-OSGi)

        Qt是一個跨平臺C++圖形用戶界面應(yīng)用框架。Qt完全面對對象,容易擴展,并且允許真正地組件編程。它具有優(yōu)良的跨平臺特性,Qt支持的操作系統(tǒng)有 Windows 95/98、Windows NT、Linux、Solaris、SunOS、HP-UX等。

        鑒于Qt的跨平臺性和其本質(zhì)是C++語言的特點,跨平臺測井軟件的核心框架Q-OSGi利用Qt庫,依據(jù)OSGi規(guī)范標準裁剪了與java相關(guān)的內(nèi)容,實現(xiàn)了一個同時滿足測井軟件的需求又實現(xiàn)了OSGi平臺規(guī)范的輕量級插件框架。

        基于這個框架,通過對集成界面、可視化界面和數(shù)據(jù)層的實現(xiàn),最終充分利用OSGi平臺的優(yōu)勢框架理念,并能夠減少OSGi的不足和繼承原有代碼,降低開發(fā)成本。該框架系統(tǒng)結(jié)構(gòu)見圖1。

        2.1.1 Q-OSGi框架的服務(wù)層(Service Layer)

        圖1 Q-OSGi框架系統(tǒng)結(jié)構(gòu)圖

        插件(Plugin)對應(yīng)于OSGi中的Bundle,構(gòu)成了Q-OSGi的基礎(chǔ)單元。它建立在系統(tǒng)的相互協(xié)作的可用服務(wù)之上,這些服務(wù)共享一個服務(wù)注冊中心。服務(wù)對象是屬于插件的,而且必須在插件之內(nèi)運行。插件必須將服務(wù)對象注冊到框架服務(wù)注冊中心,這樣其他插件才可以查詢到該插件提供的服務(wù)。提供服務(wù)的插件和使用服務(wù)的插件之間的依賴關(guān)系由框架管理。當停止一個插件后,該插件在框架中注冊的服務(wù)必須要自動取消注冊。

        2.1.2 Q-OSGi框架的生命周期層(Life Cycle Layer)

        一個插件的生命周期分為6個狀態(tài),分別是UNINSTALLED(未安裝)、INSTALLED(安裝)、RESOLVED(解決的)、STARTING(啟動)、STOPPING(停止)、ACTIVE(激活)。插件的狀態(tài)變化見圖2。由圖2可知,插件安裝后,首先對插件信息進行解析,檢測類依賴是否正確,成功后狀態(tài)變?yōu)镽ESOLVED。框架啟動插件,插件在啟動期間,根據(jù)相關(guān)協(xié)議檢測,如果啟動成功,插件狀態(tài)變成ACTIVE(激活),這時插件可以對外提供服務(wù)。

        圖2 Q-OSGi框架插件狀態(tài)圖

        2.1.3 Q-OSGi事件服務(wù)規(guī)范

        在Q-OSGi框架中,為滿足插件之間的通訊要求,采用發(fā)布者/訂閱者模式實現(xiàn)事件服務(wù)機制。按照事件發(fā)送者的不同,事件定義分為2類。①框架發(fā)送的標準事件,主要包括普通框架事件、生命周期中的插件狀態(tài)改變。②任何插件都可以根據(jù)自身需要,發(fā)送基于主題(Topic)的事件。

        圖3描述的時間服務(wù)處理流程主要面對2個對象:事件發(fā)布者和事件訂閱者。事件發(fā)布者使用postEvent和sendEvent發(fā)送事件到事件服務(wù),事件服務(wù)再通過handleEvent接口將事件發(fā)送給事件訂閱者。事件發(fā)布者使用事件服務(wù)發(fā)送基于主題(Topic)的事件,任何對某一主題感興趣的事件訂閱者都會收到該事件,并且做出相應(yīng)的反應(yīng)。

        圖3 Q-OSGi事件服務(wù)處理流程

        2.1.4 Q-OSGi擴展點設(shè)計

        為了增強系統(tǒng)的靈活性和擴展性,系統(tǒng)擴展了OSGi的規(guī)范設(shè)計,實現(xiàn)了擴展點機制。擴展插件的結(jié)構(gòu)見圖4。插件本身可以同時具有擴展點和擴展實現(xiàn),各個插件可以定義自身的擴展點供其他插件實現(xiàn),同時也可以實現(xiàn)其他插件的擴展點。插件本身需要實現(xiàn)系統(tǒng)中已有的擴展點才能插入到系統(tǒng)和已有的插件集成。插件本身可以是新的擴展點,在此基礎(chǔ)上可以讓其它插件擴展出新的功能。在單個插件的基礎(chǔ)上,插件之間不斷進行擴展,形成插件網(wǎng)絡(luò),最終組合成整個系統(tǒng)。

        圖4 擴展點結(jié)構(gòu)圖

        2.2 測井軟件系統(tǒng)設(shè)計

        為了充分利用Q-OSGi框架的靈活性和可擴展性,增強系統(tǒng)的穩(wěn)定性,減少維護成本,測井軟件的設(shè)計使用微內(nèi)核架構(gòu)。微內(nèi)核架構(gòu)將系統(tǒng)服務(wù)的實現(xiàn)和系統(tǒng)基本操作規(guī)則分離開來,系統(tǒng)核心只包含必須的部分。通過這種設(shè)計大大簡化了移植和升級維護的困難,同時由于內(nèi)核的代碼不多,也容易進行除錯,增加系統(tǒng)的穩(wěn)定性。一個服務(wù)組件的失效并不會導(dǎo)致整個系統(tǒng)的崩潰,內(nèi)核需要做的僅僅是重新啟動這個組件,而不必影響其他部分。

        微內(nèi)核負責搜索、加載、啟動/關(guān)閉插件。微內(nèi)核啟動后,會首先搜索和加載用戶許可校驗插件,用以確定用戶許可使用的插件。加載和啟動集成界面插件,最終啟動整個系統(tǒng)的各個模塊。由于插件系統(tǒng)的特性,插件還可以動態(tài)啟動,實現(xiàn)懶加載模式。

        整個測井軟件按照測井業(yè)務(wù)功能層次劃分,主要由集成界面、可視化系統(tǒng)、數(shù)據(jù)層組成(見圖5)。

        圖5 系統(tǒng)總體結(jié)構(gòu)圖

        2.2.1 集成界面

        集成界面設(shè)計系統(tǒng)的集成界面由界面顯示插件和其他可視化系統(tǒng)插件集成而組成的。集成界面主插件負責收集、管理接口數(shù)據(jù),向Q-OSGi框架中注冊服務(wù),并在交互界面上顯示。插件可以根據(jù)需要向系統(tǒng)界面中加入子菜單或操作項,也可以根據(jù)需要在菜單欄中添加新的菜單項。由于采用靈活的插件機制,測井軟件實現(xiàn)了2套集成界面插件,一套是基于觸摸屏的平板版用戶交互界面,另一套是基于桌面系統(tǒng)的交互界面。通過插件配置,可以方便地實現(xiàn)一個運行程序、兩種用戶體驗。

        2.2.2 可視化系統(tǒng)

        可視化系統(tǒng)主要有測井視圖、組合視圖、圖表視圖等3個視圖子系統(tǒng)。組合視圖和圖表視圖的結(jié)構(gòu)比較簡單,通過繼承QGraphicsView[4]類實現(xiàn)視圖的繪制。測井視圖子系統(tǒng)需要考慮多種情況和多種類型的對象的擴展和管理,結(jié)構(gòu)較為復(fù)雜。測井視圖的類圖見圖6。

        測井視圖中視圖(View)接口為VLoggingView,場景(Scence)接口為 VLoggingScence,元素(Item)實現(xiàn)為TrackItem類。TrackItem包括了Track-BodyItem和 TrackHeadItem。TrackContentItem是道內(nèi)包含元素的實現(xiàn),它繼承自IDrawExt,由ITrackDrawExt組成。在測井系統(tǒng)的設(shè)計中,設(shè)計了2個接口類IDrawExt,TrackDrawExt,分別是曲線對象和道對象的擴展接口。由圖6可知,繼承IDrawExt,實現(xiàn)了普通曲線對象Curve,波列曲線WAVE,變密度曲線VDL。繼承ITrackDrawExt,實現(xiàn)了索引道,線性道,對數(shù)道。在系統(tǒng)擴展時,僅需要實現(xiàn)這2個接口,就可以擴展不同類型的道對象和曲線對象,方便了用戶的擴展。

        圖6 測井視圖類圖

        2.2.3 數(shù)據(jù)層

        實時測井數(shù)據(jù)文件物理結(jié)構(gòu)采用的是被廣泛應(yīng)用在地球物理系統(tǒng)中的HDF5[6]數(shù)據(jù)格式,其采用類似文件系統(tǒng)的方式對數(shù)據(jù)進行結(jié)構(gòu)化存儲,這種設(shè)計極大地提升數(shù)據(jù)讀寫效率,簡化了數(shù)據(jù)處理邏輯。HDF5[7]不僅能夠滿足測井采集軟件實時處理數(shù)據(jù)的要求,更支持跨平臺的數(shù)據(jù)存儲。

        數(shù)據(jù)層主要分為3層:數(shù)據(jù)底層讀寫服務(wù)層、數(shù)據(jù)緩存層和上層數(shù)據(jù)接口層(見圖7)。

        圖7 測井數(shù)據(jù)層結(jié)構(gòu)圖

        數(shù)據(jù)底層讀寫服務(wù)層為上層提供數(shù)據(jù)讀寫的基本接口服務(wù)。包括了對儀器的管理,曲線對象的管理和讀寫,井場信息的讀寫。

        數(shù)據(jù)緩存層主要是在軟件讀寫數(shù)據(jù)時的緩存服務(wù),減少讀寫數(shù)據(jù)文件的次數(shù),從而提升程序執(zhí)行效率。當數(shù)據(jù)訪問者修改數(shù)據(jù)后,并不會立刻寫入數(shù)據(jù)文件,因此需要把數(shù)據(jù)保存在內(nèi)存中,并通知其他的數(shù)據(jù)訪問者更新,重新讀取數(shù)據(jù)。其他插件通過數(shù)據(jù)訪問管理讀取數(shù)據(jù)時,數(shù)據(jù)訪問管理會先去查找有無數(shù)據(jù)緩存,如果有數(shù)據(jù)緩存則讀取相應(yīng)的數(shù)據(jù)并返回。如果沒有數(shù)據(jù)緩存則直接讀取底層數(shù)據(jù)并返回。外部調(diào)用保存接口時,數(shù)據(jù)訪問管理會查找出相應(yīng)的數(shù)據(jù)緩存,并通過底層數(shù)據(jù)接口寫入文件。

        上層讀寫接口使用了觀察者模式實現(xiàn)數(shù)據(jù)的更新機制。使用數(shù)據(jù)接口層訪問所關(guān)注的數(shù)據(jù)后,數(shù)據(jù)服務(wù)會把此訪問者加入訂閱列表,當訪問者所關(guān)注的數(shù)據(jù)發(fā)生變化時,數(shù)據(jù)服務(wù)會直接推送數(shù)據(jù)到數(shù)據(jù)訪問者。每個需要數(shù)據(jù)并且需要數(shù)據(jù)更新獲得主動通知的地方,都需要通過數(shù)據(jù)訪問中間層創(chuàng)建一個數(shù)據(jù)訪問者。創(chuàng)建訪問者的同時,會自動注冊到數(shù)據(jù)訪問中間層,當數(shù)據(jù)訪問者訪問的數(shù)據(jù)發(fā)生變化時,數(shù)據(jù)訪問中間層會主動推送更新的數(shù)據(jù)給訪問者。

        3 應(yīng)用效果

        3.1 系統(tǒng)主要功能展示

        系統(tǒng)主界面如圖8所示,系統(tǒng)通過創(chuàng)建新的曲線對象擴展插件,可以實現(xiàn)新的曲線類型。

        3.2 系統(tǒng)的跨平臺應(yīng)用

        在Q-OSGi的基礎(chǔ)上,設(shè)計并實現(xiàn)的測井采集實時監(jiān)控軟件可以輕易的移植到不同的平臺中經(jīng)過編譯部署。目前已經(jīng)移植到 Window系列、Linux系列和Mac OSX系列操作系統(tǒng)。

        3.3 插件的動態(tài)管理功能驗證

        Q-OSGi實現(xiàn)了OSGi平臺要求框架對插件的動態(tài)管理,使用start啟動某個插件,stop停止某個插件的運行。Update功能可以從服務(wù)器端動態(tài)更新某個插件。

        3.4 性能測試

        從框架的啟動時間對Q-OSGi進行了性能測試,測試所使用的計算機配置為Intel coreTM i3 CPU、主頻2.20GHZ、2G內(nèi)存。將 Q-OSGi與其他實現(xiàn)了OSGi規(guī)范的插件框架啟動時間進行測試,其中Felix和Equniox都是基于java實現(xiàn)的。圖9為Q-OSGi與Felix和Equniox主框架的啟動時間對比測試圖。

        圖8 軟件主界面

        圖9 框架啟動時間對比測試圖

        3.5 效果總結(jié)

        在可擴展性方面,Q-OSGi框架提供的擴展點機制為系統(tǒng)提供了靈活的可擴展機制,擴展對象與系統(tǒng)能夠使用簡單機制進行整合與管理。在跨平臺方面,除了數(shù)據(jù)底層之外,只需要一套代碼編譯不同平臺的版本,便可輕松實現(xiàn)多個平臺版本。在動態(tài)管理方面,Q-OSGi實現(xiàn)了對插件的動態(tài)管理,可以動態(tài)地進行更新和管理所有系統(tǒng)運行時加載的插件。在性能方面,對比其他基于java實現(xiàn)的框架而言啟動速度較快。

        4 結(jié)束語

        (1)在詳細分析OSGi規(guī)范的基礎(chǔ)上,設(shè)計并實現(xiàn)了一個基于C++的跨平臺OSGi框架實現(xiàn)方案Q-OSGi。在該框架的基礎(chǔ)上,設(shè)計并實現(xiàn)測井采集實時監(jiān)控軟件。

        (2)應(yīng)用效果表明,采用OSGi技術(shù)能大幅提高軟件的可擴展性和可維護性,對軟件的開發(fā)效率和性能都有極大的提升。

        [1]湯天知.EILog測井系統(tǒng)技術(shù)現(xiàn)狀與發(fā)展思路[J].測井技術(shù),2007,31(2):99-102.

        [2]陳江浩,陳文輝,余衛(wèi)東,等.ACME測井采集控制管理平臺開發(fā)與應(yīng)用[J].石油儀器,2010,24(5):77-79.

        [3]OSGi Service Platform[R].4.3th ed.OSGi Alliance,2012.

        [4]Wu Bo.Analysis and Applied Research of OSGi Framework[D].Chengdu:Chengdu University of Technology,2009.

        [5]倪繼利.Qt及Linux操作系統(tǒng)窗口設(shè)計[M].北京.電子工業(yè)出版社,2006.

        [6]劉玉潔,楊忠東.MODIS遙感信息處理原理與算法[M].北京:科學(xué)出版社,2001.

        [7]HDF5File Format Specification[EB/OL].http:∥hd.fncsa.uiuc.edu/HDF5/doc/H5.format.html.2013-8.

        [8]張云濤,龔玲.Eclipse精要與高級開發(fā)技術(shù)[M].北京:電子工業(yè)出版社,2005.

        猜你喜歡
        跨平臺插件視圖
        自編插件完善App Inventor與樂高機器人通信
        電子制作(2019年22期)2020-01-14 03:16:34
        跨平臺APEX接口組件的設(shè)計與實現(xiàn)
        5.3 視圖與投影
        視圖
        Y—20重型運輸機多視圖
        SA2型76毫米車載高炮多視圖
        MapWindowGIS插件機制及應(yīng)用
        基于QT的跨平臺輸電鐵塔監(jiān)控終端軟件設(shè)計與實現(xiàn)
        基于OPC跨平臺通信的電機監(jiān)測與診斷系統(tǒng)
        基于Revit MEP的插件制作探討
        丝袜 亚洲 另类 欧美| 中文字幕无码成人片| 777国产偷窥盗摄精品品在线| 99久久人妻精品免费二区| 少妇精品久久久一区二区三区| 无码人妻专区免费视频| 激情人妻网址| 91精品国产九色综合久久香蕉| 亚洲av无码专区国产乱码4se| 伊人久久久精品区aaa片| 亚洲国产成人精品女人久久久| 亚洲黄色性生活一级片| 少妇人妻系列中文在线| 国产69精品久久久久9999apgf| 99精品国产一区二区| 成人片黄网站色大片免费观看app| 国产极品喷水视频| 日本免费一区二区精品| 国产极品裸体av在线激情网| 欧美人做人爱a全程免费| 国产精品多人P群无码| 亚洲精品二区三区在线观看| 亚洲精品中文字幕码专区| 日本区一区二区三视频| 国产肉体xxxx裸体784大胆| 亚洲欧洲无码一区二区三区| 久久综合亚洲色社区| 自拍偷拍亚洲视频一区二区三区| 欧美成人秋霞久久aa片| 亚洲男人的天堂网站| 东京热加勒比在线观看| 在线亚洲精品一区二区三区 | 亚洲精品无码mv在线观看| 国产精品短视频| 国产美女高潮流白浆免费观看| 男人的天堂一区二av| 被黑人猛烈30分钟视频| www插插插无码视频网站| 日产精品毛片av一区二区三区| 成年免费a级毛片免费看无码| 欧美性猛交xxxx乱大交蜜桃|