999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OSGI分層動態的軟件設計與開發①

2017-09-15 07:19:08魏東平李奉娟苑志朋
計算機系統應用 2017年9期
關鍵詞:模塊化作業服務

魏東平,李奉娟,苑志朋

(中國石油大學(華東)計算機與通信工程學院,青島 266580)

基于OSGI分層動態的軟件設計與開發①

魏東平,李奉娟,苑志朋

(中國石油大學(華東)計算機與通信工程學院,青島 266580)

在傳統的java框架下開發的應用軟件系統缺乏模塊化、動態化的管理能力.在深入研究OSGI框架的基礎上,本文在井下作業管理系統的開發過程中,采用OSGI規范與分層解耦思想結合的方法,設計了系統的總體架構,并解決了系統動態管理與服務層的問題.本文在井下作業管理系統的開發中,詳細闡述了OSGI在系統中的應用,包括OSGI擴展點機制以及AOP思想等,提高了系統擴展能力與解決了數據同步更新的問題.軟件測試結果表明,該模型提高系統的性能,降低了系統各模塊之間的耦合性,實現了模塊的動態管理,增加了各組件的重用性與可擴展性,也提高了系統的穩定性.

OSGI;模塊化;動態管理;井下作業管理系統

1 概述

隨著互聯網技術的發展,軟件開發技術實現了由面向過程向面向對象的轉變,形成了企業級應用的開發模式.特別是在 Java EE 開發領域,MVC(Model View Controller)開發模式、SSH框架以及EJB(Enterprise JavaBean)等都已經比較成熟.但是,基于這些技術開發的應用程序,各個模塊之間是緊耦合的,沒有考慮支持粗粒度的模塊化編程[1,2].

OSGI(Open Service Gateway Initiative)是專門針對Java模塊化制定的一個標準.OSGI帶來了規范化的模塊劃分、低耦合的模塊間關系、統一的模塊開發方式、可動態插拔的模塊管理環境等.本文研究了OSGI框架的特點,結合分層解耦的思想,以井下作業管理系統的開發為例,詳細闡述了OSGI在軟件開發中的應用,實現了井下作業管理系統的模塊化動態管理.

2 相關技術

2.1 OSGI

OSGI框架是一種分層架構,如圖1所示,主要有模塊層、生命周期層、服務層等.模塊層定義了OSGI模塊的概念,稱為 Bundle.Bundle 既實現了邏輯模塊化也實現了物理模塊化.生命周期層定義了OSGI是如何實現動態安裝和管理Bundle.服務層使各個bundle之間以松耦合的方式進行交互.

圖1 OSGI結構圖

2.2 AOP

AOP(Aspect Oriented Programming,面向切面編程)的實現建立在OOP基礎上,AOP是通過關注點分離的原則將獨立的邏輯片段模塊化,通過切面織入的方法將關注點應用于程序的多個地方.AOP主要應用在權限、緩存、內容傳遞、錯誤處理、延時加載、性能優化、持久化、同步、事務等問題的解決中.

3 系統的分析與設計

3.1 系統功能分析

井下作業管理是油田企業生產管理的重要組成部分,是油田原油生產平穩運行和產量任務完成的重要保障.隨著信息技術的不斷發展,油田企業為優化井下作業管理流程,需要對原來的井下作業管理系統進行改版升級,我們對各個單位進行了深入的調研,將他們的需求進行了整合,確定了井下作業管理系統的主要功能模塊.各主要模塊及功能可概括為:

(1)計劃管理:實現生產井年計劃的錄入、修改、刪除以及計劃的實施情況進行查詢,例如設計進度與施工進度放入查詢.

(2)設計管理:主要是根據計劃編寫施工設計,設計模塊又分為地質設計、工程設計、工藝設計.該模塊實現設計word文檔的生成、在線編輯、在線審核、查看.

(3)施工管理:實現施工動態、作業監督的實時動態管理,記錄每天的施工情況并編寫施工總結.

(4)用戶信息管理:主要實現用戶注冊、信息修改、上傳簽名圖片,對于系統管理員可以對用戶進行業務權限和數據權限管理.

3.2 系統總體設計

本文在系統總體架構設計過程中,遵循OSGI規范,并結合J2EE系統開發的分層解耦設計思想.系統總體分層結構如圖2所示.數據庫與持久層是軟件體系結構的基礎.為降低各個功能插件之間的耦合度,將各個功能插件通用的組件封裝在通用組件層,應用OSGI的面向服務組件模型[3]的設計思想將業務組件發布為OSGI服務,在業務邏輯層調用這些服務.表現層與業務邏輯層實現具體的業務流程.根據關注點分離的思想將表現層與業務邏輯層劃分為多個功能插件(Bundle)實現了模塊劃分,每個功能插件之間的交互盡量使用服務的形式,降低了各個功能插件之間的耦合度.生命周期層是對體系結構中的功能插件的生命周期進行管理.可以安全地在體系結構中安裝和卸載Bundle,而不需要重啟應用程序.

圖2 系統架構圖

井下作業管理系統總體架構的設計充分體現了OSGI框架的三個分層,而不是單純的運用模塊層,但也存在一些需要解決的問題.

3.3 生命周期層

生命周期層實現了應用程序的動態管理,相比傳統的 J2EE 框架,是很大的突破.但是,在軟件總體架構設計中我們發現,當一個Bundle被其他Bundle依賴時,在更新這個Bundle后,依賴這個Bundle的Bundle被加載時可能被更新為舊版本的Bundle,由此會發被更新Bundle與其他Bundle的不一致,不能真正做到動態更新.為解決這一問題,在動態更新 Bundle 時,我們采取了更新-刷新控制機制[4],具體步驟如下:

①更新Bundle.此時新版本被放到了正確位置,但舊版本的Bundle依然存在,依賴它的Bundle依然從舊版本加載類,維持有依賴關系的Bundle的穩定性.

②從更新的Bundle開始,重新計算受影響并存在依賴關系的Bundle的結構圖,任何用了更新Bundle的導出包的Bundle都會被放到結構圖中.當結構圖外部不存在用了結構圖內Bundle的Bundle時,該結構圖才被認定為完全繪制完成.

③結構圖中處于Active狀態的Bundle被停止并切換至Resolved狀態,處于Resolved狀態的Bundle都會被切換至Installed狀態,處于Uninstalled狀態的Bundle會被從結構圖移除.

④對于結構圖中余下的Bundle,框架會重啟之前處于Active狀態的Bundle,并對這些Bundle以及其所依賴的Bundle進行解析.

⑤框架觸發Refreshed類型的事件,對整個框架進行更新操作.

3.4 服務層

服務是實現Bundle間交互的途徑.使用服務能夠降低Bundle之間的耦合,更加有利于軟件的重用.后前比較常用的發布與使用服務的方式有聲明式服務和Blueprint.在軟件總體架構設計過程中,我們對這兩種方式的內部原理進行了研究.聲明式服務采用的是級聯的方式,也就是激活或停用組件基于依賴是否能夠滿足,不能很好地應對在Bundle更新期間服務取消和發布對框架的影響.而在 Spring DM (Spring Dynamic Modules)基礎上定義的 Blueprint容器規范,即Blueprint是一個 OSGI的 IOC(Inversion of Control)[5]規范,采用了代理的方式,將代理注入到組件中,而不是注入到真正的服務對象中.利用代理提供服務動態性阻塞的機制,當服務從服務注冊中心移除時,阻塞機制會阻塞調用線程并阻塞等待一段時間,若超時到期并沒有找到新的服務替代,代理就會拋出異常,所以在Bundle更新期間,這種方式可以減少服務取消發布對框架的影響.基于以上研究,在模型的服務層采用了Blueprint的方式發布用服務.

4 系統實現

4.1 系統各功能模塊的關系

井下作業管理系統主要由計劃管理、設計管理、施工管理等模塊組成,從圖3的抽象實體類之間的關系可以看出,計劃模塊要反映設計狀態以及施工進度的更新,所以設計、施工的數據更新要與計劃的數據更新同步.傳統的方法是在數據庫建立視圖,但因關聯的表及屬性眾多,對視圖的管理非常復雜.我們在系統開發中借助AOP思想解決了這一難題,下面以設計管理的實現為例做簡單說明.

圖3 系統功能模塊關系圖

4.2 井下作業管理系統的設計管理模塊

作業設計是井下作業過程中的重要部分.在井下作業管理系統中,設計管理模塊主要包括設計數據的錄入、設計的word文檔的生成及審核過程三個流程.由于井下作業管理系統涉及多個單位以及多種井型,所以在設計模塊會有多種設計類型,不同設計類型在數據的錄入、設計的word文檔的生成及審核過程中會有不同,需要設計模塊具有很好的擴展性,而且要與計劃模塊在數據更新上具有同步性.

在設計模塊,我們采用了OSGI擴展點機制[6,7]和AOP思想實現[8],如圖4所示.

圖4 設計模塊擴展與AOP同步更新示意圖

以生成word組件為例.PoiWordInterface作為擴展點的接口類,并定義擴展契約,其他的擴展插件按照擴展點約定的契約實現不同擴展,同時擴展點注冊表會對所有的擴展進行管理,并且會負責監聽擴展插件的生命周期,加強擴展點擴展的穩定性,在PoiWordInterface所在插件調用不同的擴展實現,實現不同類型的設計.每當生成了設計文檔,就說明設計狀態變為設計中,設計的狀態要與計劃顯示的數據同步.AOP是實現橫切關注點的工具,通過定義切入點和通知實現,將PoiWordImp組件中的生成word文件方法定義為切入點,將從服務層調用的修改計劃實體類屬性值的服務定義為后置通知,在生成word文檔同時修改計劃模塊數據,實現了設計模塊與計劃模塊數據更新的同步進行.

圖4還描述了設計數據錄入與審核流程的擴展實現及同步更新.

OSGI擴展點機制和AOP思想的結合既實現了邏輯片段的模塊化也降低了插件之間的耦合性,某一擴展插件的啟動與卸載不會影響到其他擴展插件的運行,提高了系統穩定性.

5 系統使用及測試情況

我們在井下作業管理系統的開發中,采用了OSGI框架與分層解耦思想結合的方法,取代了基于SSM框架的架構.后前,該系統已在油田企業推廣使用.系統的開發采用 Java 語言,開發工具是 Eclipse 3.7+JDK1.6,系統框架使用 OSGI Eclipse Equinox.

我們分別對采用2種方法開發的井下作業系統進行了測試,對比了系統的啟動時間、系統中生成word文檔的響應時間,如圖5、圖6所示.可以看出,基于本文的方法開發的井下作業管理系統在啟動時間及響應時間上都有很大提高.這是因為,OSGI采用的不是Java傳統的樹狀類加載架構,而是網狀的類加載架構,基于這種模型,插件既可以加載自己的類也可以直接委派其他類加載器加載本插件中用到的其他插件中的類,這是一個并行運行的過程.

圖5 啟動時間比較

圖6 響應時間比較

OSGI是一個模塊化的框架,模塊化可以使系統的代碼在一定范圍內實現自治.而且OSGI的面向服務組件模型要求程序員規范化代碼的書寫,去掉程序中的一些冗余代碼,提高組件的復用能力,使系統達到了瘦身的效果,減少了代碼量.對兩個系統工程設計模塊的代碼量對代碼量進行比較,結果如圖7所示,在功能基本相同的情況下,在OSGI規范下可以有效減少代碼量,提高開發效率.

圖7 代碼量比較

另外,對于要求7*24小時不間斷運行的井下作業管理系統來說,提高系統穩定性十分重要.在OSGI模型下,系統的每個插件都具有生命周期,各個模塊的啟動、停止、動態更新都可以實現管理,因而可以做到動態地增加或禁止某項功能、更新某個模塊,可以在不中斷運行的情況下自動更新升級,這無疑提高了系統穩定性.

6 結語

OSGI是一個松耦合、面向服務的應用程序開發框架.我們在OSGI框架基礎上,結合分層解耦思想,對井下作業管理系統進行總體設計與開發.不僅降低了各個模塊之間的耦合度,還改善了系統的開發效率,提升了系統性能.由于不需要重新部署整個系統,從而極大地改善了系統維護和部署的難度.

1 Knoernschild K.Java 應用架構設計:模塊化模式與 OSGI.張衛濱,譯.北京:機械工業出版社,2013.

2 Mohammed M,Elish M,Qusef A.Empirical insight into the context of design patterns:Modularity analysis.Proc.of 7th International Conference on Computer Science and Information Technology (CSTT).Amman,Jordan.2016.

3 Li WB,Zhang YB,Jin J.Research of the service design approach based on SCA_OSGi.Proc.of IITA International Conference on Services Science,Management and Engineering.Zhangjiajie,China.2009.392–395.

4 Hall RS,Pauls K,McCulloch S,等.OSGI實戰.郭慶,李楠,李守超,等譯.北京:人民郵電出版社,2013.

5 楊揚,侯紅,郝克剛.基于容器的IOC控制反轉模式的研究.計算機應用與軟件,2009,26(4):17–19.

6 陳江浩,余衛東,雷曉陽,等.基于 OSGI的跨平臺測井軟件設計及應用.測井技術,2014,38(5):587–591.

7 朱珠.OSGI框架下REST架構風格的數據中心環境監測系統的分析與設計[碩士學位論文].北京:北京交通大學,2010.

8 Alexandersson R,?hman P,Ivarsson M.Aspect oriented software implemented node level fault tolerance.Proc.of the 9th IASTED International Conference on Software Engineering and Applications.Phoenix AZ,USA.2007.57–74.

Hierarchical Dynamic Software Model Based on OSGI

WEI Dong-Ping,LI Feng-Juan,YUAN Zhi-Peng

(College of Computer and Communication Engineering,China University of Petroleum,Qingdao 266580,China)

The application software under the traditional java framework lacks the ability of modularization and dynamic management.Based on the in-depth study of OSGI framework,this paper proposes a method of combining the OSGI and the hierarchical decoupling.It uses the method to design the overall architecture of downhole operation management system,and also solves the problem of dynamic management and service layer.It describes the application of OSGI extension point mechanism and AOP in detail,then improves the system expansion ability and solves the problem of data synchronization update.The test results show that the model can improve the performance of the system,reduces the coupling between the modules,increases the reusability of components and scalability,and improves the stability of the system.

OSGI;modularity;dynamic management;downhole operation management system

魏東平,李奉娟,苑志朋.基于OSGI分層動態的軟件設計與開發.計算機系統應用,2017,26(9):98–102.http://www.c-s-a.org.cn/1003-3254/5934.html

2016-12-24;采用時間:2017-01-12

猜你喜歡
模塊化作業服務
模塊化自主水下機器人開發與應用
快來寫作業
模塊化住宅
現代裝飾(2020年5期)2020-05-30 13:01:56
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
ACP100模塊化小型堆研發進展
中國核電(2017年2期)2017-08-11 08:00:56
模塊化VS大型工廠
流程工業(2017年4期)2017-06-21 06:29:50
作業
故事大王(2016年7期)2016-09-22 17:30:08
主站蜘蛛池模板: 最新国产精品鲁鲁免费视频| 71pao成人国产永久免费视频| 2020精品极品国产色在线观看| 国产极品美女在线播放| 久久精品嫩草研究院| 91最新精品视频发布页| 国内精品久久久久久久久久影视 | 国产精品一区二区不卡的视频| 青青青国产视频| 狼友视频国产精品首页| 91黄色在线观看| 嫩草在线视频| 2021国产精品自产拍在线| 国产精品成人免费视频99| 久久国语对白| 国产精品尹人在线观看| 91久久夜色精品| 999精品在线视频| 国产成人精品18| 国产一区二区精品福利| 欧美日韩中文国产| 国产精品亚洲αv天堂无码| 99久久精品视香蕉蕉| 亚洲美女视频一区| 国产网站免费观看| 亚洲欧美日韩动漫| 一级黄色片网| 成人另类稀缺在线观看| 国产黄在线观看| 精品三级网站| 国产精品爆乳99久久| 国产呦精品一区二区三区下载| 国产精品.com| 91欧美在线| 2021最新国产精品网站| 国产福利小视频高清在线观看| 亚洲无线视频| 无遮挡一级毛片呦女视频| 97在线碰| 视频一本大道香蕉久在线播放| 日本a级免费| 日本午夜精品一本在线观看| 又爽又黄又无遮挡网站| 日日摸夜夜爽无码| 白浆免费视频国产精品视频| 97超碰精品成人国产| 欧美日韩另类国产| 视频二区国产精品职场同事| 毛片一区二区在线看| 日韩欧美91| 欧美三级日韩三级| 国产精品成人AⅤ在线一二三四| 亚洲性一区| 91精品国产自产在线老师啪l| 青青草国产免费国产| 亚洲女同一区二区| 激情无码视频在线看| 成人综合网址| 亚洲三级a| 超碰色了色| 国产清纯在线一区二区WWW| 亚洲中文字幕在线观看| 制服丝袜亚洲| 久草视频一区| 日韩精品免费一线在线观看| 亚洲男人的天堂久久香蕉| 99青青青精品视频在线| 97国内精品久久久久不卡| 97国产精品视频人人做人人爱| 亚洲综合色吧| 日韩A∨精品日韩精品无码| 亚洲综合经典在线一区二区| 2019年国产精品自拍不卡| 亚洲欧洲日韩综合色天使| 日韩高清成人| 亚洲中文字幕久久无码精品A| 精品91在线| 精品国产成人av免费| 欧美日本二区| 久久这里只有精品23| 国产无码网站在线观看| 毛片免费在线视频|