<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    子在川上曰

      逝者如斯夫不舍晝夜
    隨筆 - 71, 文章 - 0, 評(píng)論 - 915, 引用 - 0
    數(shù)據(jù)加載中……

    RCP最靈活的模塊組織方式

    文/陳剛 from www.ChenGang.com.cn at 2006年4月29日 (轉(zhuǎn)載請標(biāo)明出處)

    起因是這樣的,有一個(gè)已經(jīng)開發(fā)了比較多功能的RCP程序,它包含這樣幾個(gè)模塊:JMX瀏覽器(類似于MC4J的功能)、系統(tǒng)事件監(jiān)控器、權(quán)限控制框架等。這些模塊是寫在一個(gè)RCP項(xiàng)目中的。

    現(xiàn)在,我想更靈活些。比如,JMX瀏覽器模塊這個(gè)是通用的,但如果誰要使用這個(gè)功能,就必須運(yùn)行整個(gè)RCP項(xiàng)目才行,而我希望這個(gè)JMX模塊是可簡單裝卸的。充分運(yùn)行Eclipse的插件機(jī)制,讓各模塊成為一個(gè)獨(dú)立的插件,應(yīng)該可以實(shí)現(xiàn)這個(gè)功能。

    比如,JMX模塊形成一個(gè)獨(dú)立的插件:它既可以讓其他人當(dāng)做一個(gè)普通插件,安裝到Eclipse中;也可以成為一個(gè)模塊,插入我RCP項(xiàng)目中來。這樣的設(shè)計(jì),讓模塊的開重用性變得很高了。

    這個(gè)想法中,RCP部份,僅僅成為一個(gè)空殼,提供更插件的插入機(jī)制。這個(gè)方案特別適合那種想把原有插件項(xiàng)目,改裝成RCP而發(fā)布的項(xiàng)目,基本上原有插件無需做改動(dòng)。

    然而這個(gè)想法是否可行呢?
    (1) 插件能否想插入到Eclipse,插入到RCP空殼項(xiàng)目中?
    (2) 插件中的如果存在依賴關(guān)系(比如,一個(gè)插件需要用到另一個(gè)插件的代碼),怎么實(shí)現(xiàn)。
    (3) 插件依然的JAR包怎么處理。比如有三個(gè)插件都要用到log4j.jar來輸出日志,如果把log4j.jar放在插件項(xiàng)目的lib目錄來使用的話,log4j.jar在三個(gè)插件各有一份,就會(huì)有三份。當(dāng)三個(gè)插件合到RCP項(xiàng)目中時(shí),就有兩個(gè)log4j是冗余的。這會(huì)增在RCP項(xiàng)目的大小。
    (4) RCP項(xiàng)目有一些界面元素須要根據(jù)插入的插件,做相應(yīng)的變化。怎么實(shí)現(xiàn)?


    為了驗(yàn)證第(1)點(diǎn),我做了這個(gè)實(shí)驗(yàn):

    創(chuàng)建一個(gè)很簡單的插件項(xiàng)目,此插件項(xiàng)目包含一個(gè)很簡單的透視圖。我要看看這個(gè)透視圖能否出現(xiàn)在RCP項(xiàng)目中的。很順便,當(dāng)我把插件項(xiàng)目導(dǎo)出后,安裝到RCP項(xiàng)目的plugin目錄,再運(yùn)行RCP項(xiàng)目,發(fā)現(xiàn)這個(gè)插件項(xiàng)目的透視圖出現(xiàn)在了RCP項(xiàng)目的透視圖列表中。

    如果是開發(fā)時(shí),我希望運(yùn)行RCP項(xiàng)目時(shí),就能看到插件項(xiàng)目插入進(jìn)來后的效果。實(shí)現(xiàn)也不難,步驟如下:
    (1) 在Plugin.xml的dependencies項(xiàng),把插件項(xiàng)目加入到Required Plug-ins中。(表示項(xiàng)目的依賴)
    (2) 在run..里的Plug-ins項(xiàng),選擇插件項(xiàng)目和RCP項(xiàng)目,并單擊Add Required Plug-ins(表現(xiàn)運(yùn)行時(shí)的依賴)


    為了驗(yàn)證第(2)點(diǎn),我做了這個(gè)實(shí)驗(yàn):
    在插件項(xiàng)目中創(chuàng)建一個(gè)類,在RCP項(xiàng)目中使用這個(gè)類,這時(shí)還是找不到類的。解決辦法是:在打開插件項(xiàng)目的plugin.xml-->runtime選項(xiàng)卡-->Exported Packages(輸出的包),把這個(gè)類所在的包加入進(jìn)來。這下RCP項(xiàng)目可以使用插件項(xiàng)目的類了。

    關(guān)于第(3)點(diǎn),我沒有做實(shí)驗(yàn),我的想法是:把jar包封裝成插件(可參考eclipse對(duì)junit的封裝),從而將項(xiàng)目對(duì)JAR包的依賴,轉(zhuǎn)變成對(duì)插件的依賴。

    關(guān)于第(4)點(diǎn),我沒有做實(shí)驗(yàn),我的想法是:通過自定義RCP項(xiàng)目的擴(kuò)展點(diǎn)來實(shí)現(xiàn)。


    在我這個(gè)項(xiàng)目分解模塊還會(huì)遇到這樣的問題:權(quán)限安全模塊是影響到整個(gè)RCP項(xiàng)目的,但JMX模塊獨(dú)立出來后,顯然不是必須要權(quán)限安全模塊的。怎么解除這種依賴關(guān)系呢。我看是解除不了的了,但可以設(shè)一個(gè)開關(guān),讓權(quán)限安全模塊失效。這樣雖然代碼和權(quán)限安全模塊有依賴,但可以把權(quán)限檢查的功能關(guān)閉。


    總結(jié):

    這種方式雖然靈活,但也是有代價(jià)的---編程和項(xiàng)目管理更復(fù)雜了。

    posted on 2006-04-29 12:40 陳剛 閱讀(2538) 評(píng)論(10)  編輯  收藏 所屬分類: Eclipse

    評(píng)論

    # re: RCP最靈活的模塊組織方式  回復(fù)  更多評(píng)論   

    我買了你的書,一個(gè)很嚴(yán)重的問題,《Eclipse從入門到精通》上的網(wǎng)址www.chengang.com.cn根本無法訪問,可能你的域名解析出問題了,
    我是通過百度快照找到這里來的,http://www.baidu.com/s?ct=0&ie=gb2312&bs=updates5.0net.zip&sr=&z=&cl=3&f=8&wd=www.chengang.com.cn%2F
    2006-05-15 14:21 | 農(nóng)民

    # re: RCP最靈活的模塊組織方式  回復(fù)  更多評(píng)論   

    不錯(cuò),寫得很好!
    "關(guān)于第(3)點(diǎn):把jar包封裝成插件(可參考eclipse對(duì)junit的封裝),從而將項(xiàng)目對(duì)JAR包的依賴,轉(zhuǎn)變成對(duì)插件的依賴。"
    能不能說得詳細(xì)點(diǎn).因現(xiàn)在做的項(xiàng)目正有這樣的需要。先謝了。
    2006-06-06 15:32 | limeiyong

    # re: RCP最靈活的模塊組織方式  回復(fù)  更多評(píng)論   

    文中的四點(diǎn)想法對(duì)我現(xiàn)在所從事的項(xiàng)目具有很大的借鑒意義。
    我的RCP應(yīng)用已經(jīng)實(shí)現(xiàn)了擴(kuò)展應(yīng)用。關(guān)于第(1)點(diǎn)的驗(yàn)證:
    按1.1的方法驗(yàn)證:但是按照你說的第一點(diǎn)修改的時(shí)候:既RCP是一個(gè)獨(dú)立的應(yīng)用程序,我將它原來所利用到的插件(在同一個(gè)工程中定義的插件)制作成一個(gè)獨(dú)立插件,然后將此插件放到該RCP應(yīng)用程序的plugin目錄中,卻沒有實(shí)現(xiàn)擴(kuò)展。
    按1.2的方法驗(yàn)證:可以實(shí)現(xiàn)擴(kuò)展,同時(shí)還發(fā)現(xiàn)可以通過增加config.ini文件中的jar包引用實(shí)現(xiàn)擴(kuò)展。但是這種方式的擴(kuò)展對(duì)插件的加載是不受控制的,就是什么時(shí)候加載哪個(gè)插件我是不知道的。
    請問如何解決以上問題?謝謝!
    2006-06-06 21:09 | dew_chx

    # re: RCP最靈活的模塊組織方式  回復(fù)  更多評(píng)論   

    以上的1、2點(diǎn)實(shí)驗(yàn)成功。謝謝本文作者,繼續(xù)關(guān)注3、4的實(shí)現(xiàn)。
    不過還有一個(gè)疑問:就是我想在自己的RCP應(yīng)用程序中自定義一個(gè)透視圖擴(kuò)展點(diǎn),其他的透視圖插件實(shí)現(xiàn)該擴(kuò)展。如果能夠?qū)崿F(xiàn)的話,我就可以控制插件的加載過程。
    2006-06-13 10:28 | dew_chx

    # re: RCP最靈活的模塊組織方式  回復(fù)  更多評(píng)論   

    你的書不錯(cuò),我最近在學(xué)習(xí)!
    2006-12-13 10:26 | 服務(wù)器超時(shí)

    # re: RCP最靈活的模塊組織方式  回復(fù)  更多評(píng)論   

    博主,你好。
    我根據(jù)你的對(duì)第一點(diǎn)想法的做法也做了一個(gè)實(shí)驗(yàn),但沒成功。不知道是怎么回事,請教一下。
    你在博文中說:“創(chuàng)建一個(gè)很簡單的插件項(xiàng)目,此插件項(xiàng)目包含一個(gè)很簡單的透視圖。我要看看這個(gè)透視圖能否出現(xiàn)在RCP項(xiàng)目中的。很順便,當(dāng)我把插件項(xiàng)目導(dǎo)出后,安裝到RCP項(xiàng)目的plugin目錄,再運(yùn)行RCP項(xiàng)目,發(fā)現(xiàn)這個(gè)插件項(xiàng)目的透視圖出現(xiàn)在了RCP項(xiàng)目的透視圖列表中。”
    我按照你的做法,實(shí)驗(yàn)步驟如下(我用的是eclipse3.3 europa):
    1,新建一個(gè)插件工程,用的是hello word模板,此模板的功能為添加窗口添加了一個(gè)“sample menu”菜單,并有一個(gè)菜單項(xiàng)。
    2,新建了一個(gè)rcp 插件工程,用的是view模板。
    3,將1所建的插件工程導(dǎo)出為deployable plug-ins and fragments.得到一個(gè)plugins文件夾,里面為一個(gè)jar包。
    4,在rcp工程下,新建一個(gè)lib文件夾,將3所得的jar包拷貝到文件夾中。然后在plugin.xml-》runtime選項(xiàng)卡的classpath中加入此jar包。在buid選項(xiàng)卡中將lib,bin勾上。
    5,對(duì)rcp工程進(jìn)行以eclipse application 方式運(yùn)行,但結(jié)果去只有2的結(jié)果,1的結(jié)果沒有加上去。

    對(duì)你說的在開發(fā)的時(shí)候怎么加載我也做了實(shí)驗(yàn),實(shí)驗(yàn)成功了。
    請指點(diǎn)一二。不甚感激。
    2007-08-21 20:24 | yqouyang

    # re: RCP最靈活的模塊組織方式  回復(fù)  更多評(píng)論   

    @yqouyang
    @limeiyong
    @dew_chx

    這篇文章的更細(xì)節(jié)的內(nèi)容,在《Eclipse從入門到精通》的第二版的第33章有論述。
    2007-08-25 11:33 | 陳剛

    # re: RCP最靈活的模塊組織方式  回復(fù)  更多評(píng)論   

    @陳剛
    非常感謝。
    2007-08-25 18:38 | yqouyang

    # re: RCP最靈活的模塊組織方式[未登錄]  回復(fù)  更多評(píng)論   

    謝謝樓主,在你那書學(xué)習(xí)到很多,不過現(xiàn)在有個(gè)問題就是,菜單通過配置生成的,怎么在菜單生成里加入權(quán)限呢!
    2008-09-05 09:34 | 小剛

    # re: RCP最靈活的模塊組織方式[未登錄]  回復(fù)  更多評(píng)論   

    請問樓主,rcp里的權(quán)限應(yīng)怎么權(quán)限呢,通actionset里配置的菜單,有沒有辦法加入權(quán)限,讓有權(quán)限權(quán)限顯視,無權(quán)限的不讓顯視呢....謝謝
    2008-09-05 15:13 | 小剛
    主站蜘蛛池模板: 久久久久亚洲AV片无码| 精品久久免费视频| 久久青青草原亚洲AV无码麻豆| 男女污污污超污视频免费在线看| 全免费A级毛片免费看网站 | 无码欧精品亚洲日韩一区| 久久久久久毛片免费看| 国产国拍精品亚洲AV片| 精品国产免费一区二区三区| 国产亚洲成归v人片在线观看 | 亚洲欧洲第一a在线观看| 久99久精品免费视频热77| 亚洲av无码无在线观看红杏| 特级精品毛片免费观看| 亚洲精品国产第1页| 免费精品国产自产拍在| 亚洲爆乳无码专区www| 亚洲男人的天堂一区二区| 亚洲午夜久久久久妓女影院| 亚洲黄色在线网站| 性做久久久久久久免费看| 亚洲av无码成人影院一区| 亚洲精品无码久久久| 四虎成人精品永久免费AV| 亚洲精品二三区伊人久久| 亚洲精品视频免费 | 美女被免费视频网站a| 亚洲欧洲日产国码av系列天堂| 久久午夜免费鲁丝片| 亚洲一欧洲中文字幕在线| 国产男女猛烈无遮挡免费视频| 国产精品成人69XXX免费视频| 亚洲精品无码不卡| 日本高清免费不卡视频| 三上悠亚在线观看免费| 国产精品久久亚洲不卡动漫| 免费国产成人高清视频网站| 久久久精品午夜免费不卡| 13小箩利洗澡无码视频网站免费| 久久精品国产亚洲AV麻豆王友容| 两性刺激生活片免费视频 |