《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > 插件虛擬機的設計與實現
插件虛擬機的設計與實現
來源:微型機與應用2014年第3期
劉洪蕾,丁香乾,侯瑞春
(中國海洋大學 信息科學與工程學院,山東 青島 266100)
摘要: 在基于.Net平臺的信息系統開發過程中,組件-控件的復用已經很常見,但是,邏輯流程部分的代碼始終沒有得到有效的縮減。針對這種現狀,提出對插件虛擬機的研究。在組件-控件和功能模塊間抽象一層“插件”,將信息系統劃分為不同的“插件”,通過XML配置文件來定義“插件”間的邏輯關系,同時,“插件”也可以很好地實現功能的復用。插件虛擬機用于解釋執行該配置文件。
Abstract:
Key words :

摘  要: 在基于.Net平臺的信息系統開發過程中,組件-控件的復用已經很常見,但是,邏輯流程部分的代碼始終沒有得到有效的縮減。針對這種現狀,提出對插件虛擬機的研究。在組件-控件和功能模塊間抽象一層“插件”,將信息系統劃分為不同的“插件”,通過XML配置文件來定義“插件”間的邏輯關系,同時,“插件”也可以很好地實現功能的復用。插件虛擬機用于解釋執行該配置文件。
關鍵詞: XML;插件;虛擬機;業務邏輯

 虛擬機并不是新技術,早在20世紀六七十年代,IBM研究中心就在試驗室里實現了其主機的鏡像,算是最原始的虛擬機了。之后一段時間發展緩慢,一度由于分時操作系統的出現而處于停滯狀態。20世紀90年代隨著Java虛擬機的推出,使對虛擬機技術的研究成為處理器設計人員、軟件設計人員、服務器設計人員和網絡安全設計人員的熱門研究課題。虛擬機并不只是應用于對操作系統,目前,在具體應用領域的虛擬機開發得到迅速發展。這里將虛擬機的概念首次應用到Net環境下的信息系統的開發過程中。
 為了便于理解插件虛擬機的作用,首先介紹一種自動化業務流程規范語言——業務流程執行語言BPEL(Business Process Execution Language),這與插件虛擬機中用XML配置文件實現業務邏輯有相似之處。BPEL是基于XML和Web服務的,用XML文檔寫入BPEL中的流程能在Web服務之間以標準化的交互方式得到精心組織,它簡化了將多個Web服務合成到一個新的業務流程中的操作[1]。這些流程能夠在任何一個符合BPEL規范的平臺或產品上執行。BPEL通過合作伙伴連接來實現服務的調用,合作伙伴連接只定義所要調用的接口,它是一個抽象的網絡服務描述語言WSDL(Web Services Description Language)接口,這個接口在BPEL運行時再綁定到真正的服務提供者上面[2]。這樣使接口和實現之間達到了一種松散耦合的效果,Web Service實現了接口的可重用性,而BPEL實現的是流程的可重用性。在XML配置文件中,“插件”類似于Web Service的接口,而BPEL對Web Service提供的服務類似于XML配置文檔對“插件”的執行順序的控制。插件虛擬機的研究,提出了一種新的業務邏輯部分的實現,在此之前,業務邏輯部分只能通過程序代碼實現,現在轉換成只需要編寫描述性的文本語言,從而有效減少開發工作量,降低軟件開發成本。
1 相關名詞簡介
1.1 虛擬機

 虛擬機按其表面意思來理解就是指虛擬的機器,這個機器并不是由真實的硬件所組成,而是通過軟件系統虛擬而成的具有跟真正機器類似功能的一種實現[3-5]。“插件虛擬機”的命名,是因為其設計思想與計算機的基本思想相類似:計算機的工作基于存儲程序與程序控制,其中存儲程序包括對程序及運行中所需數據的存儲,程序控制指計算機對程序中一條條指令的取出、分析與執行[6];在插件虛擬機中,其主要工作是數據的存儲與插件的控制,數據的存儲包括外界輸入的數據及運行時數據的存儲,插件的控制包括插件的取出、分析與執行。從功能上看,CPU的內部結構分為控制單元、邏輯單元和存儲單元3大部分[7],這3個部分互相協調進行分析、判斷、運算,并控制計算機各部件進行工作。插件虛擬機中根據各部分具體實現的功能,可以把它分為如下幾部分:插件運行時、插件執行器、路由規則器、插件管理器、消息管理器、線程管理器、共享數據堆和運行時上下文。通過這幾部分的相互協作,共同完成信息系統中插件的有序調用與執行。
1.2 插件
 在開發信息系統軟件的時候,現在最常見的做法是把軟件按功能模塊來劃分,將每個功能模塊分別設計好之后,最后再組合起來形成最終的信息系統軟件。目前,在程序復用方面,最常見的是組件復用,最具有代表性的是微軟公司的組件對象模型COM(Component Object Model)和Sun公司的企業級JavaBean EJB(Enterprise JavaBean)。COM是基于分布式對象模型的開放標準,它詳細規定了一個COM組件所應具有的二進制內存結構是組件集成的框架,這個框架支持對象的互操作性和可重用性[8-9],COM組件的創建由COM庫和類工廠協作完成,它是ActiveX技術的基礎,并且運用于大多數的Windows編程;EJB是一種基于Java環境的針對服務器端的組件模型[10],其設計目標與核心應用是部署分布式應用程序,同時它定義了一個用于開發基于組件的企業多重應用程序的標準,EJB技術簡化了用Java語言編寫企業級應用系統的開發、配置和執行[11]。插件虛擬機中的“插件”是在模塊、控件-組件中抽象出來的,單個模塊中可以包含多個插件,插件中可以包含控件和組件,在復雜的應用系統中可以實現插件的嵌套,例如:信息系統首先劃分為幾個插件,插件中可以包含功能模塊,然后功能模塊中再包含插件。
2 虛擬機的設計及實現
2.1 組成結構

 插件虛擬機的工作是圍繞“插件”的調用展開的,信息系統被劃分為插件的形式,插件被統一定義在配置文件中,其中插件的編碼與實現插件的類相互對應,便于插件虛擬機在合適的場景與環境中調用插件。根據插件虛擬機要完成的功能將其分為以下幾部分,其結構圖如圖1所示。


 (1)插件虛擬機運行時,為插件提供面向操作系統和Net環境的基礎服務,解釋模塊配置文件,根據模塊配置文件創建各種子系統;
 (2)上下文管理器,提供對插件虛擬機傳入的參數的封裝;
 (3)共享數據堆,提供插件間的數據共享服務;
 (4)消息管理器,提供插件間的消息發送功能;
 (5)插件管理器,負責查找、加載、緩存插件;
 (6)插件執行器,負責從插件池中取出插件,執行插件,并根據插件參數確定插件顯示模式;
 (7)路由規則器,主要負責確定下一個需要執行的插件的id,并將插件id發送給插件執行器,由插件執行器運行id對應的插件;
 (8)線程管理器,提供操作系統的線程封裝服務,提供線程間數據傳遞服務。
2.2 插件虛擬機的實現
 插件虛擬機的實現,有其完備的執行過程,不僅能夠完成基本的功能,而且能夠處理運行過程中產生的各種異常。其主要的技術點包括:插件間數據的存儲、插件的生命周期以及接口規范等。啟動插件虛擬機,會檢查各部分的完整性并加載XML配置文件中定義的所有“插件”,用戶界面輸入的數據會在插件虛擬機中的得到相應的處理并觸發相應“插件”的執行。插件虛擬機的工作流程如圖2所示。

    插件虛擬機運行時,主要包括以下步驟:
 (1)插件虛擬機運行時加載并讀取配置文件信息,根據配置文件創建子系統。子系統包括:路由規則器、消息管理器、共享數據堆、線程管理器、上下文管理器、插件管理器、插件執行器。然后,插件虛擬機運行時調用插件管理器;
 (2)插件管理器加載配置文件中涉及到的插件,由加載單元通過Net環境調用操作系統,在操作系統下查找插件。插件虛擬機運行時包含在名為pluginvm core.dll的動態鏈接庫中,為插件提供面向操作系統和Net環境的基礎服務。具體包括:
 ①文件操作及路徑查找服務;
 ②唯一主機碼創建(包含CPU-網卡),即密碼驗證服務,通過讀取主機唯一的CPU序列號以及網卡的序列號,按照相應的公式計算出驗證碼,與軟件中存儲的密碼相匹配,保障了軟件安裝合法性,可以有效防止盜版;
 ③加密解密;
 ④面向Window操作系統API的托管封裝;
 ⑤解釋模塊配置文件,根據模塊配置文件創建各種子系統。
 插件管理器查找到所有的配置文件中涉及到的插件后,確認可用的插件然后加載,插件管理器加載完畢后,等待插件執行器調用。
 加載配置文件中將插件加載至插件管理器中,由插件管理器統一管理加載的插件,并且將參數存儲至上下文管理器中。上下文管理器提供對運行插件虛擬機傳入的參數的封裝,具體為一個面向對象的哈希表;
 (3)路由規則器根據插件執行器調用插件后返回的結果或者根據加載單元提供的插件調用入口點確定插件執行器需要執行的插件編碼,并將該插件編碼傳遞給插件執行器;
 (4)插件執行器接收路由規則器傳入的插件編碼,并從上下文管理器中獲得和本插件相關的參數;插件執行器通過調用插件的約定方法并在調用時傳入從上下文管理器中獲得的參數來執行插件;
 將插件執行過程中產生的數據,存儲至共享數據堆中,以供其他插件調用。不同的插件可以將需要共享的數據放入共享數據堆中,插件虛擬機退出后共享數據堆可以自動回收。插件虛擬機維護共享數據堆中的數據的引用計數,當數據引用計數為0的時候,共享數據將被自動回收。

 


插件執行器負責從插件管理器中取出插件,調用插件的特定方法Excute Plugin(PluginParam param)執行插件;插件執行器還負責處理插件異常信息,如果遇到需要退出插件虛擬機的異常則直接調用插件虛擬機提供的退出函數ExitVm(Excption ecode)退出插件虛擬機。
 插件執行器執行完畢當前插件后,還將當前插件運行完畢后返回的數據轉發至路由規則器中,路由規則器根據插件執行器返回的數據確定下一個需要執行的插件的編碼,并將插件編碼發送給插件執行器,由插件執行器運行編碼對應的插件。
 (5)插件間可以通過插件虛擬機發送/接收消息。消息管理器包括消息隊列和消息派發器,消息隊列接收消息,并將其加入隊列,消息派發器按照隊列順序將消息派發給該消息所指定的插件。消息中攜帶有需要執行插件的信息,消息管理器向插件管理器中的需要執行的插件(若插件管理器中沒有加載所述的需要執行的插件,則由插件管理器重新加載,然后由插件執行器執行。具體過程與初始加載插件時一致:由加載單元通過Net環境調用操作系統,在操作系統下查找插件。加載后的插件存儲至插件管理器中,參數存儲至參數封裝單元中,然后由插件執行器可以調用)派發該消息,由插件管理器將該插件的編碼傳給插件執行器,最終插件執行器根據該插件的編碼執行該插件。消息管理器的功能還有:消息隊列,負責存儲插件發送過來的消息,并按照先后順序排成隊列的形式。其中,插件需要實現AcceptRunMsg(RunMessage msg)接口接收插件管理器發送的消息。
 目前,隨著軟件行業的發展,其規模和復雜性提高、使用范圍擴大,為了便于維護和管理,軟件開發過程中逐漸出現對開發方法的研究、軟件管理的規范、體系結構的分離[12]。在開發信息系統軟件過程中,通常會將一個系統分為幾個相互獨立的功能模塊,由不同人員來開發,最后再根據用戶的操作邏輯和業務邏輯組織起來。通過對插件虛擬機的研究,實現了縮減業務邏輯部分代碼,首次提出用配置文件的描述語言代替業務邏輯部分的代碼;其次,以“插件”的形式來實現信息系統中程序的復用,同一“插件”可以被多個模塊的配置文件使用。由此,可以降低軟件開發成本,縮短周期,增強可讀性,更加便于維護和管理。
參考文獻
[1] 劉樹軍,王炳同,李莉.基于WS-BPEL的Web服務組合技術[J].計算機系統應用,2012(8):206-209.
[2] 陳建飛,申晨光,韓偉力.面向WS-BPEL的訪問控制策略合成研究[J].計算機應用與軟件,2012,29(3):195-197.
[3] 劉菲軍,陳俊杰,郭濤,等.云計算下虛擬機部署機制的研究[J].電腦開發與應用,2012(5):4-6.
[4] 鄧維,廖小飛,金海.基于虛擬機的數據中心能耗管理機制[J].中興通訊技術,2012(4):15-18.
[5] Wu Dongyao, Wei Jun, Gao Chushu, et al. Event-driven process execution model for virtual machine[J]. Computer Integrated Manufacturing Systems, 2012(8): 1675-1685.
[6] 詹姆斯,瑞維著,安虹,等譯.虛擬機:系統與進程的通用平臺第二版[M].北京:機械工業出版社,2009.
[7] EMOTO, MASAHIKO, YOSHIDA, et al. Application of virtual machine technology to real-time mapping of Thomson scattering data to flux coordinates for the LHD[J]. Fusion Engineering and Design, 2012(87): 2076-2080.
[8] 劉春泉,周紹梅,劉小東.COM在軟件復用中的應用[J].計算機與現代化,2005(5):28-30.
[9] 潘恒.中間件技術——COM組件的探究[J].科協論壇:下半月,2011(4):61-62.
[10] 喬波.新一代EJB組件技術研究[J].科技信息,2009(5):62-63.
[11] 劉秋梅,鄭耿忠.EJB組件技術在數字參考咨詢系統中的應用[J].圖書館學刊,2010(12):85-87.
[12] 夏明忠,夏以軒,李兵元.軟件模塊化設計和模塊化管理[J].中國信息界,2012(11):56-59.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
尤物网精品视频| 亚洲精品日韩在线| 欧美成人在线免费观看| 久久精品免费| 久久av一区二区三区| 亚洲欧美日韩在线综合| 亚洲资源av| 亚洲砖区区免费| 亚洲免费综合| 亚洲一区二区三区在线看| 一区二区三区欧美在线观看| 99xxxx成人网| 一区二区精品在线| 中文精品视频一区二区在线观看| 99在线热播精品免费99热| 亚洲美女黄网| 99视频超级精品| 一区二区三区久久精品| 亚洲午夜在线视频| 亚洲欧美激情视频| 亚洲欧美日韩国产另类专区| 午夜精品偷拍| 久久久精品日韩| 免费看的黄色欧美网站| 欧美www视频| 欧美激情一区三区| 欧美久久在线| 国产精品久久久久久久久| 国产精品亚洲一区| 国产亚洲欧美一级| 在线免费一区三区| 亚洲狼人综合| 亚洲欧美在线一区二区| 亚洲黄色片网站| 99精品国产高清一区二区| 亚洲专区免费| 久久久久九九九| 欧美成人精品影院| 欧美亚州韩日在线看免费版国语版| 国产精品v片在线观看不卡| 国产欧美精品国产国产专区| 国产在线播精品第三| 最新精品在线| 亚洲在线免费观看| 国产精品美女久久久久久免费| 国产自产女人91一区在线观看| 欧美成ee人免费视频| 欧美日韩激情网| 国产麻豆精品久久一二三| 狠狠色狠狠色综合日日91app| 亚洲国产99| 中日韩视频在线观看| 午夜精品久久久久久99热软件| 亚洲电影第三页| 亚洲婷婷综合色高清在线| 久久riav二区三区| 欧美精品一区二区在线观看| 国产精品永久在线| 亚洲国产清纯| 亚洲欧美日韩在线不卡| 亚洲人精品午夜在线观看| 亚洲欧美国产不卡| 麻豆国产精品777777在线| 欧美午夜精品理论片a级按摩| 国产在线观看一区| 一本综合久久| 亚洲激情欧美| 欧美一区午夜视频在线观看| 欧美激情91| 国产一区二区三区久久 | 亚洲午夜激情网站| 亚洲国产成人av好男人在线观看| 亚洲视频图片小说| 毛片av中文字幕一区二区| 国产精品三上| 亚洲欧洲中文日韩久久av乱码| 性欧美超级视频| 一本久道久久综合婷婷鲸鱼 | 久久综合狠狠综合久久激情| 欧美性猛交xxxx乱大交蜜桃| 在线观看日韩www视频免费| 亚洲视频在线看| 日韩亚洲视频在线| 麻豆av一区二区三区| 国产精品亚洲精品| 日韩午夜免费| 亚洲精品日韩在线| 久久久综合免费视频| 国产精品手机视频| 一本色道久久加勒比88综合| 亚洲欧洲日本专区| 久久久久亚洲综合| 国产欧美一区二区三区另类精品 | 亚洲第一黄色网| 亚洲男人第一网站| 欧美精品一区二区三| 尤物yw午夜国产精品视频明星| 午夜宅男欧美| 欧美一级电影久久| 国产精品大片wwwwww| 99国产精品久久久久久久| 亚洲激情网址| 久久夜色精品国产噜噜av| 国产视频久久久久| 亚洲欧美成人| 午夜久久99| 国产精品国产馆在线真实露脸| 亚洲乱码国产乱码精品精天堂| 亚洲激情第一区| 麻豆av福利av久久av| 国内成+人亚洲| 欧美在线观看你懂的| 欧美专区第一页| 国产日韩欧美一区二区| 午夜国产精品视频免费体验区| 欧美亚洲一区二区在线| 欧美新色视频| 亚洲天堂av在线免费| 亚洲砖区区免费| 国产精品久久激情| 亚洲在线第一页| 欧美在线一级视频| 国产午夜精品麻豆| 久久精品国产亚洲aⅴ| 久久久精品视频成人| 国产综合av| 亚洲国产精品欧美一二99| 免费日韩视频| 亚洲精品乱码| 亚洲一区二区三区高清| 国产精品美女久久| 午夜视频一区在线观看| 久久精品99久久香蕉国产色戒 | 欧美一区不卡| 久久综合给合| 亚洲国产精品一区二区久| 日韩亚洲国产精品| 欧美午夜一区二区| 亚洲一区美女视频在线观看免费| 欧美亚洲综合在线| 国产揄拍国内精品对白| 最新精品在线| 欧美日韩喷水| 亚洲免费婷婷| 另类av导航| 日韩视频在线观看国产| 亚洲欧美影音先锋| 国产主播一区| 日韩视频在线观看一区二区| 欧美三级免费| 欧美一区三区三区高中清蜜桃 | 亚洲欧美影音先锋| 久久综合网hezyo| 亚洲精品一二三| 欧美一区二区三区喷汁尤物| 国产一区欧美| 99精品久久| 国产日韩欧美制服另类| 亚洲国产精品v| 欧美日韩少妇| 欧美在线综合视频| 欧美日韩免费高清一区色橹橹| 亚洲一卡二卡三卡四卡五卡| 欧美影视一区| 亚洲国产精品综合| 亚洲欧美日韩精品久久| 韩国v欧美v日本v亚洲v| 99re6热只有精品免费观看| 欧美先锋影音| 亚洲国产黄色| 国产精品免费久久久久久| 久久黄色网页| 国产精品v亚洲精品v日韩精品 | 欧美jizzhd精品欧美巨大免费| 在线午夜精品| 久久天天躁夜夜躁狠狠躁2022| 亚洲黄色在线视频| 欧美在线关看| 亚洲免费电影在线观看| 久久精品视频播放| 日韩午夜免费视频| 久久久噜噜噜久久久| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 欧美一区二区| 亚洲精品国产视频| 久久精品亚洲精品国产欧美kt∨| 亚洲精品日韩在线观看| 久久久91精品国产一区二区三区 | 一本久久a久久精品亚洲| 久久久一区二区三区| 中文亚洲字幕| 欧美国产先锋| 午夜欧美大片免费观看| 欧美日韩免费在线观看| 亚洲国产精品视频一区| 国产欧美日韩精品专区| 亚洲香蕉网站| 91久久久久| 久久综合亚洲社区| 亚洲欧美一区二区三区极速播放|