基于Eclipse Equinox的插件框架:TPF

          這篇blog是繼之前的一篇提升C/S結(jié)構(gòu)軟件的管理性的延續(xù),在這篇blog中會(huì)更加的實(shí)際的去介紹基于Eclipse Equinox實(shí)現(xiàn)的一個(gè)插件框架,而不再是象上篇中那樣的提及的想法而已了,通過這篇blog來展現(xiàn)目前一個(gè)這樣的插件框架的實(shí)際應(yīng)用的情況,為了更加形象的表達(dá),在文中會(huì)貼出一些目前這個(gè)系統(tǒng)的截圖。
          這個(gè)框架的簡(jiǎn)稱為TPF,是目前我所做的產(chǎn)品的底層框架,TPF本身構(gòu)建于Eclipse Equinox之上,Equinox做為OSGI R4的RI,提供了OSGI R4的全部實(shí)現(xiàn),而且同時(shí)它還結(jié)合了Eclipse IDE做為插件平臺(tái)的優(yōu)勢(shì)之處,所以是一個(gè)非常優(yōu)秀的插件框架,但相對(duì)需要強(qiáng)大管理性的應(yīng)用系統(tǒng)來說,基于Equinox還是缺少了一些做為基于微核的系統(tǒng)的管理性,TPF就是為了滿足這個(gè)而實(shí)現(xiàn)的,TPF主要的目標(biāo)就是:
          1、形成以TPF為微核的系統(tǒng)
          ????? Equinox其實(shí)也是一個(gè)具備微核特征的插件框架,在Equinox中只需要System Bundle是正常運(yùn)行的,那么就可以通過它來完成基于它之上的所有插件的管理,但對(duì)于系統(tǒng)級(jí)別而言,更多時(shí)候需要的是一種基于系統(tǒng)級(jí)別的控制,也就是統(tǒng)一控制基于Equinox的插件,統(tǒng)一的進(jìn)行重啟、停止和啟動(dòng)這樣的管理,而同時(shí)由于Equinox僅僅提供了console方式的管理,這對(duì)于用戶來說通常會(huì)有點(diǎn)麻煩,所以在TPF中提供的是web形式的管理。
          ??????在一個(gè)擁有TPF的系統(tǒng)的圖示通常是這樣(寫基于TPF不太正確,因?yàn)槠渌腂undle并不需要依賴于TPF):
          ??????tpfapp.jpg
          ????? 對(duì)于基于Equinox的系統(tǒng)而言,只需要安裝上TPF的Bundle,便可擁有TPF提供的方便了:
          ????? 通過TPF可更加方便的對(duì)插件進(jìn)行安裝、管理(停止、更新、啟動(dòng));
          ????? index.JPG
          ????? 可以對(duì)插件的元信息(MANIFEST.MF)以及插件外帶的一些配置文件的信息進(jìn)行直接的修改,同時(shí)更是提供了更為方便的設(shè)置插件啟動(dòng)順序的方法以及更加形象標(biāo)明插件作用的插件名的設(shè)置的功能;
          ????? info.jpg
          ????? 微核系統(tǒng)的特征,可統(tǒng)一啟動(dòng)或停止系統(tǒng)中的插件,方便了對(duì)于用戶而言的管理功能。
          ??????appman.jpg
          ????? 從這些特性上可以看出,在Equinox中安裝了TPF的幾個(gè)Bundle后,就可以更加方便的對(duì)插件進(jìn)行管理了,同時(shí)也可以形象的感覺到微核系統(tǒng)的特征,即不論系統(tǒng)處于啟動(dòng)還是停止?fàn)顟B(tài),只要微核運(yùn)行是正常的,那么系統(tǒng)就可以通過微核來進(jìn)行管理、擴(kuò)充功能以及修改功能的,而微核通常來講都是非常穩(wěn)定的,在擁有這樣特征的系統(tǒng)中,形象的說就是可以在項(xiàng)目開始的第一天在客戶處部署一個(gè)系統(tǒng),從此以后無論是更新版本還是如何,系統(tǒng)都是永遠(yuǎn)保持在運(yùn)行狀態(tài)的。
          2、增強(qiáng)的管理特性
          ??????在TPF中除了上面所說的一些插件管理功能的提升之外,最重要的就是增加了對(duì)遠(yuǎn)程同樣基于TPF系統(tǒng)的監(jiān)控,在TPF中可以監(jiān)控遠(yuǎn)程TPF系統(tǒng)的運(yùn)行狀態(tài),同時(shí)還可對(duì)遠(yuǎn)程的TPF系統(tǒng)進(jìn)行啟動(dòng)、停止的管理動(dòng)作。
          ????? remoteman.jpg
          TPF由三個(gè)Bundle共同構(gòu)成,基于tpf.core可以實(shí)現(xiàn)其他方式的管理端,如client UI方式的管理端,JMX管理端等;tpf.webshell這個(gè)Bundle則提供了目前看到的web管理的方式,如不需要web管理則直接不安裝這個(gè)bundle就可以了或停止這個(gè)bundle(在需要的時(shí)候啟動(dòng)就可以了);tpf.api提供了管理遠(yuǎn)程TPF的接口,如不需要遠(yuǎn)程管理,也可不安裝這個(gè)bundle或停止這個(gè)bundle。

          為了能更加清楚的說明TPF帶來的影響,畫了張簡(jiǎn)單的時(shí)序圖:
          tpfstart.JPG
          這張圖表達(dá)出了在安裝上TPF Bundles后,其他App Bundles的生命周期包括啟動(dòng)順序等是由TPF Bundles來控制,而不再是通過Equinox直接控制了,此時(shí)TPF Bundles和Equinox共同構(gòu)成了系統(tǒng)的微核。

          posted on 2006-08-18 21:24 BlueDavy 閱讀(6743) 評(píng)論(10)  編輯  收藏 所屬分類: Plugin Architecture

          評(píng)論

          # re: 基于Eclipse Equinox的插件框架:TPF 2006-08-18 21:43 robbie

          正如你所講的,“寫基于TPF不太正確,因?yàn)槠渌腂undle并不需要依賴于TPF”,你的TPF提供了一個(gè)管理界面,類似于osgi console但強(qiáng)于這種命令終端也更加方便,功能更為強(qiáng)大,但從架構(gòu)上,正如osgi bundle 也如eclipse plugin ,TPF與其它的bundle是并行在一個(gè)平面上的,而沒有誰(shuí)是誰(shuí)的基礎(chǔ)條件的問題,因?yàn)槠渌腷undle并沒有依賴TPF,也沒有必須知道TPF的存在。所以你上面的圖就有點(diǎn)問題了,TPF不是作為infrastructure存在的,我覺得從概念上講 osgi web console更為合適。:)當(dāng)然前提是我的理解沒有錯(cuò)的話。不知道TPF是否以O(shè)S的方式發(fā)布?非常關(guān)注,因?yàn)樽鬟^一段時(shí)候的基于eclipse 的IDE開發(fā),當(dāng)時(shí)eclipse 并沒有完全轉(zhuǎn)向osgi,隨時(shí)的3.0的release,osgi便吸引了eclipse社區(qū)相當(dāng)?shù)年P(guān)注。這是一個(gè)能使軟件真正能有機(jī)會(huì)實(shí)現(xiàn)組件化開發(fā)的機(jī)會(huì)  回復(fù)  更多評(píng)論   

          # re: 基于Eclipse Equinox的插件框架:TPF 2006-08-19 11:27 leowu

          我感覺那個(gè)框架圖也不是太貼切,其實(shí)TPF在層次上也是一個(gè)bundle而已,并不屬于基礎(chǔ)性的東西,整體圖示來看的話,核心還應(yīng)該是osgi,tpf放在左側(cè)或者右側(cè)可能更合適一些。

          題外話:此外,對(duì)于遠(yuǎn)程管理,可能很多時(shí)候還要考慮防火墻的限制,那么tpf作為大型應(yīng)用的客戶端架構(gòu)的話(例如服務(wù)器管理客戶端不同功能模塊),這種遠(yuǎn)程控制就要做一些調(diào)整了。  回復(fù)  更多評(píng)論   

          # re: 基于Eclipse Equinox的插件框架:TPF 2006-08-19 16:36 BlueDavy

          @robbie
          感謝你的答復(fù),你說的沒錯(cuò),由于我的一時(shí)偷懶,所以只是加了一行文字避免大家對(duì)圖的誤解,準(zhǔn)確的來說TPF并不僅僅是OSGI Web console,就像我文中所說的Web console只是TPF提供的一個(gè)更加方便的管理方式可以,但如果覺得沒必要的話,仍然可以不安裝,TPF.core提供的API足以讓你完成其他形式的管理端,TPF將以O(shè)S的方式發(fā)布。

          @leowu
          圖的問題確實(shí)是由于我的一時(shí)偷懶表達(dá)的不夠準(zhǔn)確,但其實(shí)在安裝了TPF后所有的插件不是通過System Bundle去安裝和啟動(dòng),而是通過TPF去安裝和啟動(dòng)的。
          對(duì)于遠(yuǎn)程管理方面的話,穿越防火墻仍然是http較為方便,而目前tpf采取的也是http的方式。  回復(fù)  更多評(píng)論   

          # re: 基于Eclipse Equinox的插件框架:TPF 2006-08-19 17:28 BlueDavy

          感謝robbie和leowu指出的錯(cuò)誤,為了避免圖給大家造成的誤解,重新畫了圖,并增加了一個(gè)簡(jiǎn)單的時(shí)序圖來說明下在安裝TPF后對(duì)Equinox產(chǎn)生的影響。  回復(fù)  更多評(píng)論   

          # re: 基于Eclipse Equinox的插件框架:TPF 2006-08-24 22:06 guangqing

          我的理解是這樣,TPF是一個(gè)web化的增強(qiáng)的Equinox的console,同時(shí)提供了對(duì)對(duì)于console的遠(yuǎn)程管理。那么我想問,console中管理的是不是都是在同一個(gè)JVM中運(yùn)行的bundle,遠(yuǎn)程節(jié)點(diǎn)之間的bundle又可不可以交互呢?
          我對(duì)OSGi了解不多,總感覺它講的都是在同一個(gè)JVM的情況(也許是由于它的原始需求決定的),我不知道它可不可以解決遠(yuǎn)程服務(wù)相互交互的情況,解決這個(gè)問題好像并不是一件難事?  回復(fù)  更多評(píng)論   

          # re: 基于Eclipse Equinox的插件框架:TPF 2006-08-25 11:31 BlueDavy

          遠(yuǎn)程服務(wù)交互的話需要引入WebService,OSGI規(guī)范中目前只有硬件方面的遠(yuǎn)程互通的協(xié)議。  回復(fù)  更多評(píng)論   

          # re: 基于Eclipse Equinox的插件框架:TPF 2007-09-07 16:09 huangmy

          BlueDavy 。不知道你能不能把TPF開源,謝謝  回復(fù)  更多評(píng)論   

          # re: 基于Eclipse Equinox的插件框架:TPF 2007-09-08 23:48 BlueDavy

          @huangmy
          TPF在今年年內(nèi)一定會(huì)開源的,目前在做一些準(zhǔn)備工作,最快的話可以在十月份完成開源的工作,多謝你的關(guān)注!
            回復(fù)  更多評(píng)論   

          # re: 基于Eclipse Equinox的插件框架:TPF 2009-05-13 09:29 瘋狂的奶瓶

          這張圖表達(dá)出了在安裝上TPF Bundles后,其他App Bundles的生命周期包括啟動(dòng)順序等是由TPF Bundles來控制,而不再是通過Equinox直接控制了,此時(shí)TPF Bundles和Equinox共同構(gòu)成了系統(tǒng)的微核。


          這么說,當(dāng)TPF啟動(dòng)后,equinox就退休了,此時(shí)不就是"基于"TPF了嗎?  回復(fù)  更多評(píng)論   

          # re: 基于Eclipse Equinox的插件框架:TPF 2009-12-14 13:17 sjrfox

          請(qǐng)問能給一個(gè)下載的有效連接嗎??謝謝  回復(fù)  更多評(píng)論   

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導(dǎo)航

          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統(tǒng)計(jì)

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 吉木萨尔县| 卓资县| 宜兰县| 北流市| 工布江达县| 石门县| 海伦市| 西昌市| 陕西省| 黔西| 北安市| 崇明县| 平舆县| 平武县| 阿勒泰市| 龙江县| 晋州市| 桃园市| 盐源县| 古蔺县| 东平县| 东阳市| 涿鹿县| 江达县| 綦江县| 利辛县| 黄大仙区| 巴塘县| 新泰市| 商洛市| 绍兴县| 浪卡子县| 卢湾区| 常德市| 白银市| 沂源县| 宜昌市| 炎陵县| 陆良县| 镇坪县| 达日县|