思考插件架構(gòu)體系

          插件架構(gòu)體系是我一直就非常關(guān)注的內(nèi)容,其實(shí)插件架構(gòu)體系的發(fā)展已經(jīng)有很久的背景了,插件架構(gòu)體系的優(yōu)點(diǎn)我們也是能看的非常明顯,象硬件一樣的即插即用、無(wú)論對(duì)于公司還是業(yè)界而言的良好的積累方式、為公司或業(yè)界提供統(tǒng)一而規(guī)范的開發(fā)方式以及穩(wěn)定的內(nèi)核架構(gòu)等等,這些優(yōu)點(diǎn)無(wú)論對(duì)于公司還是業(yè)界來(lái)說(shuō)都是非常重要的。
          插件架構(gòu)體系基本的一個(gè)概念就是基于松散的模塊積累方式,通過(guò)新增插件以及擴(kuò)展原有插件的方法來(lái)完成系統(tǒng)的實(shí)現(xiàn),凡事有利必有弊,在看到插件架構(gòu)體系的這些優(yōu)點(diǎn)的同時(shí),在實(shí)現(xiàn)和使用插件架構(gòu)體系的時(shí)候仍然會(huì)碰到不少的問題,我大概的整理了一下,主要有:
          1、插件的定義
                插件的定義可謂是插件架構(gòu)體系在使用時(shí)會(huì)碰到的最大的問題,首先要解決的問題就是何謂插件、插件如何去定義?何謂插件這個(gè)大家的看法都會(huì)有所不同,由于對(duì)于何謂插件的看法不同,必然就導(dǎo)致了在整個(gè)系統(tǒng)的設(shè)計(jì)時(shí)采用了不同的設(shè)計(jì)方式,主要是在插件的粒度控制上會(huì)有不同的設(shè)計(jì)方式。
                個(gè)人覺得也許采用模塊作為插件是一種可行的方案,采用模塊作為插件的核心思想是按一種從頂至下的設(shè)計(jì)理念,也就是架構(gòu)設(shè)計(jì)中產(chǎn)生的模塊視圖首先作為系統(tǒng)的插件構(gòu)成視圖,根據(jù)對(duì)模塊的詳細(xì)設(shè)計(jì)此時(shí)又可對(duì)模塊的插件進(jìn)行細(xì)一步的劃分,或者是將插件劃的更細(xì),或者是采用插件的擴(kuò)展機(jī)制去實(shí)現(xiàn)。
                插件的定義則是帶來(lái)了一些設(shè)計(jì)上的難度的,我仍然覺得需要將插件視為黑盒去看,插件需要提供什么樣的功能、插件需要什么樣的運(yùn)行環(huán)境、插件需要暴露哪些包等等,這個(gè)在Osgi中都有相應(yīng)的映射,在基于插件架構(gòu)體系進(jìn)行系統(tǒng)構(gòu)建的時(shí)候插件的粒度、定義我覺得這是最難把握的,甚至覺得難度上會(huì)超過(guò)以前的模塊設(shè)計(jì),需要的是更為規(guī)范的模塊式的設(shè)計(jì),覺得這個(gè)在中小型軟件企業(yè)中往往是很難做到的,主要仍然是架構(gòu)設(shè)計(jì)時(shí)的控制,在設(shè)計(jì)時(shí)重要的因素在于保持系統(tǒng)的松散結(jié)構(gòu),至于概要設(shè)計(jì)時(shí)則完全可按照架構(gòu)設(shè)計(jì)的約束去進(jìn)行,詳細(xì)設(shè)計(jì)則完全和平時(shí)的做法一樣。
          2、插件的依賴
                插件的依賴主要有兩種,一是對(duì)于系統(tǒng)已有插件的依賴,另一方面則是對(duì)于外部jar包的依賴。這都是在設(shè)計(jì)時(shí)需要做出考慮的,對(duì)于插件架構(gòu)體系而言對(duì)已有插件的依賴和對(duì)外部jar包的依賴這個(gè)差別就比較大了,其實(shí)這個(gè)在設(shè)計(jì)上還好辦,因?yàn)榭梢酝ㄟ^(guò)重構(gòu),本來(lái)一直依賴覺得最困難的是對(duì)其他插件的依賴怎么辦,難道要去引用其他plugin的lib,在eclipse ide中是解決了這個(gè)問題的,所以現(xiàn)在來(lái)說(shuō)插件的依賴在插件體系架構(gòu)中就顯得沒那么困難了,這說(shuō)明插件的依賴的解決依賴于一個(gè)良好的插件開發(fā)IDE。
          3、插件的測(cè)試
                插件的測(cè)試我這指的不是運(yùn)行的功能測(cè)試,而是單元測(cè)試,感覺這個(gè)在現(xiàn)在的插件架構(gòu)體系里還是比較困難的,因?yàn)樵谝环N松耦合的架構(gòu)體系中,對(duì)于其他插件的依賴是要在容器運(yùn)行期才能夠獲取的,覺得這個(gè)有點(diǎn)變成了當(dāng)時(shí)ejb container的問題,現(xiàn)在好像得通過(guò)mock以及其他的方法去解決,另外一個(gè)也許是IoC的策略?這方面需要進(jìn)一步思考,
          4、插件的調(diào)試
                插件的調(diào)試主要是依賴容器的調(diào)試,現(xiàn)在的eclipse ide已經(jīng)支持插件的調(diào)試,并且好像是支持插件的遠(yuǎn)程調(diào)試的。
          5、插件開發(fā)學(xué)習(xí)的門檻
                 就目前來(lái)說(shuō)插件開發(fā)學(xué)習(xí)的門檻并不算低的,個(gè)人覺得至少要對(duì)插件體系架構(gòu)有一定的了解(例如基于Osgi的插件框架,那就要求對(duì)OSGI有一定的熟悉),但相對(duì)這個(gè)門檻而言,其獲得的價(jià)值是值得的。

          其實(shí)講了這么些問題,集中的主要在于基于插件架構(gòu)體系的應(yīng)用框架以及業(yè)務(wù)系統(tǒng)的設(shè)計(jì)方式將和以前的會(huì)有些變化,這個(gè)也是可以理解的,畢竟是受技術(shù)架構(gòu)約束的,另外一方面則主要集中在插件開發(fā)的簡(jiǎn)易性和質(zhì)量的保證,這個(gè)就得依靠一個(gè)強(qiáng)大的插件開發(fā)IDE。

          posted on 2005-11-15 11:09 BlueDavy 閱讀(7120) 評(píng)論(10)  編輯  收藏 所屬分類: Plugin Architecture系統(tǒng)設(shè)計(jì)

          評(píng)論

          # re: 思考插件架構(gòu)體系 2005-11-15 13:53 fisher

          也許你該看看eclipse的Equinox項(xiàng)目
          我很想仔細(xì)看看,可是一直沒時(shí)間
          :(  回復(fù)  更多評(píng)論   

          # re: 思考插件架構(gòu)體系 2005-11-15 14:42 Programmer's Life

          呵呵,我已經(jīng)在用了!
          但其實(shí)不管用哪種,上面的這些問題仍然會(huì)有部分存在的,這是架構(gòu)體系帶來(lái)的問題。  回復(fù)  更多評(píng)論   

          # re: 思考插件架構(gòu)體系 2005-11-15 20:11 fisher

          哦?用于做什么?  回復(fù)  更多評(píng)論   

          # re: 思考插件架構(gòu)體系 2006-02-26 17:52 JC

          IMO, 我覺將插件架構(gòu)上升到構(gòu)件架構(gòu)更為合適。
          因?yàn)闃?gòu)件架構(gòu)其實(shí)已經(jīng)包含了構(gòu)件插口(Component socket)的概念。
          by the way, 可以留下你的聯(lián)絡(luò)方式交流一下嗎?   回復(fù)  更多評(píng)論   

          # re: 思考插件架構(gòu)體系 2006-02-27 21:41 BlueDavy

          MSN:
          bluedavy@hotmail.com  回復(fù)  更多評(píng)論   

          # re: 思考插件架構(gòu)體系 2006-08-30 10:18 guangqing

          為什么說(shuō),extension對(duì)于eclipse那么重要,而osgi卻不提供bundle的擴(kuò)展機(jī)制嗎,然后就是因?yàn)樗岢ㄟ^(guò)service來(lái)交互,而eclipse卻一些自己的需求,比如它是一個(gè)open的平臺(tái),這樣可以方便大家做contribution?  回復(fù)  更多評(píng)論   

          # re: 思考插件架構(gòu)體系 2006-08-30 22:52 BlueDavy

          做為插件框架而言提供擴(kuò)展點(diǎn)機(jī)制很關(guān)鍵....  回復(fù)  更多評(píng)論   

          # re: 思考插件架構(gòu)體系 2006-08-31 09:35 guangqing

          OSGi core framework不也可以說(shuō)是一個(gè)插件框架么?還有,對(duì)于一般的應(yīng)用而言,比如J2EE應(yīng)用,有沒有這種必要性為這些應(yīng)用提供可擴(kuò)展機(jī)制呢?聽說(shuō)WAS 6.1利用Eclipse extension機(jī)制已經(jīng)可以為J2EE應(yīng)用提供可擴(kuò)展功能,但我還不知道具體的表現(xiàn)形式,因?yàn)闆]有找到sample看  回復(fù)  更多評(píng)論   

          # re: 思考插件架構(gòu)體系 2006-08-31 10:37 BlueDavy

          為什么說(shuō)對(duì)于插件框架而言擴(kuò)展點(diǎn)特別重要呢,因?yàn)榭蚣芏际且邆溟_放性,而開放性的框架是需要通過(guò)提供擴(kuò)展的方式來(lái)使得開發(fā)人員能夠基于框架構(gòu)建出真正的應(yīng)用系統(tǒng)。
          Equinox的server-side app就提供了一種擴(kuò)展點(diǎn)的方式來(lái)實(shí)現(xiàn)新的servlet和資源文件的注冊(cè)。  回復(fù)  更多評(píng)論   

          # re: 思考插件架構(gòu)體系 2008-11-20 17:15 西南三少

          在本人所開發(fā)的好服組件服務(wù)器中,用到了插件化架構(gòu)思想、反謝方式動(dòng)態(tài)載入DLL、程序域等等思想和技術(shù)。
          有興趣請(qǐng)看:http://www.soa365.com/techblog/article_view.aspx?art_id=70  回復(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)論排行榜

          主站蜘蛛池模板: 正安县| 醴陵市| 阆中市| 新疆| 尼玛县| 涪陵区| 上栗县| 贡觉县| 平乡县| 米易县| 轮台县| 泾阳县| 涞源县| 玉树县| 疏附县| 巴彦县| 金华市| 大石桥市| 会泽县| 沧源| 民乐县| 靖州| 尼玛县| 祁东县| 娄底市| 民权县| 苏尼特右旗| 宝山区| 台南市| 阳山县| 右玉县| 临洮县| 连江县| 峨边| 抚宁县| 安阳县| 理塘县| 阿克苏市| 肃宁县| 垦利县| 名山县|