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

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

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

    子在川上曰

      逝者如斯夫不舍晝夜
    隨筆 - 71, 文章 - 0, 評論 - 915, 引用 - 0
    數據加載中……

    RCP最靈活的模塊組織方式

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

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

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

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

    這個想法中,RCP部份,僅僅成為一個空殼,提供更插件的插入機制。這個方案特別適合那種想把原有插件項目,改裝成RCP而發布的項目,基本上原有插件無需做改動。

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


    為了驗證第(1)點,我做了這個實驗:

    創建一個很簡單的插件項目,此插件項目包含一個很簡單的透視圖。我要看看這個透視圖能否出現在RCP項目中的。很順便,當我把插件項目導出后,安裝到RCP項目的plugin目錄,再運行RCP項目,發現這個插件項目的透視圖出現在了RCP項目的透視圖列表中。

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


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

    關于第(3)點,我沒有做實驗,我的想法是:把jar包封裝成插件(可參考eclipse對junit的封裝),從而將項目對JAR包的依賴,轉變成對插件的依賴。

    關于第(4)點,我沒有做實驗,我的想法是:通過自定義RCP項目的擴展點來實現。


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


    總結:

    這種方式雖然靈活,但也是有代價的---編程和項目管理更復雜了。

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

    評論

    # re: RCP最靈活的模塊組織方式  回復  更多評論   

    我買了你的書,一個很嚴重的問題,《Eclipse從入門到精通》上的網址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 | 農民

    # re: RCP最靈活的模塊組織方式  回復  更多評論   

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

    # re: RCP最靈活的模塊組織方式  回復  更多評論   

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

    # re: RCP最靈活的模塊組織方式  回復  更多評論   

    以上的1、2點實驗成功。謝謝本文作者,繼續關注3、4的實現。
    不過還有一個疑問:就是我想在自己的RCP應用程序中自定義一個透視圖擴展點,其他的透視圖插件實現該擴展。如果能夠實現的話,我就可以控制插件的加載過程。
    2006-06-13 10:28 | dew_chx

    # re: RCP最靈活的模塊組織方式  回復  更多評論   

    你的書不錯,我最近在學習!
    2006-12-13 10:26 | 服務器超時

    # re: RCP最靈活的模塊組織方式  回復  更多評論   

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

    對你說的在開發的時候怎么加載我也做了實驗,實驗成功了。
    請指點一二。不甚感激。
    2007-08-21 20:24 | yqouyang

    # re: RCP最靈活的模塊組織方式  回復  更多評論   

    @yqouyang
    @limeiyong
    @dew_chx

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

    # re: RCP最靈活的模塊組織方式  回復  更多評論   

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

    # re: RCP最靈活的模塊組織方式[未登錄]  回復  更多評論   

    謝謝樓主,在你那書學習到很多,不過現在有個問題就是,菜單通過配置生成的,怎么在菜單生成里加入權限呢!
    2008-09-05 09:34 | 小剛

    # re: RCP最靈活的模塊組織方式[未登錄]  回復  更多評論   

    請問樓主,rcp里的權限應怎么權限呢,通actionset里配置的菜單,有沒有辦法加入權限,讓有權限權限顯視,無權限的不讓顯視呢....謝謝
    2008-09-05 15:13 | 小剛
    主站蜘蛛池模板: 精品一区二区三区免费观看| 免费夜色污私人影院网站电影| 最新久久免费视频| 亚洲第一页综合图片自拍| 国产青草亚洲香蕉精品久久| 国产又长又粗又爽免费视频| 青草青草视频2免费观看| 亚洲国产成人乱码精品女人久久久不卡| 国产精品亚洲一区二区三区在线观看| 男人的天堂亚洲一区二区三区| 中文文字幕文字幕亚洲色| 免费看又爽又黄禁片视频1000| 亚洲av午夜国产精品无码中文字| 国产高清免费观看| 亚洲日韩在线观看免费视频| 亚洲成AV人片天堂网无码| 亚洲精品在线免费观看| 在线观看亚洲AV日韩AV| 国产无遮挡裸体免费视频| 一区二区三区免费视频网站| 亚洲成色在线综合网站| 97碰公开在线观看免费视频| 亚洲码欧美码一区二区三区| www.91亚洲| 免费黄网站在线看| 亚洲综合色婷婷在线观看| 免费吃奶摸下激烈视频| 久久久久国产免费| 色欲aⅴ亚洲情无码AV蜜桃| 国产亚洲精品看片在线观看| 最好看最新的中文字幕免费| 苍井空亚洲精品AA片在线播放 | 亚洲视频精品在线观看| 免费毛片在线视频| 中文字幕免费在线播放| 天天爽亚洲中文字幕| 亚洲情综合五月天| 在线v片免费观看视频| 国产又黄又爽又大的免费视频| 亚洲一级毛片视频| 国产成人麻豆亚洲综合无码精品|