思考插件架構體系

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

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

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

          評論

          # re: 思考插件架構體系 2005-11-15 13:53 fisher

          也許你該看看eclipse的Equinox項目
          我很想仔細看看,可是一直沒時間
          :(  回復  更多評論   

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

          呵呵,我已經(jīng)在用了!
          但其實不管用哪種,上面的這些問題仍然會有部分存在的,這是架構體系帶來的問題。  回復  更多評論   

          # re: 思考插件架構體系 2005-11-15 20:11 fisher

          哦?用于做什么?  回復  更多評論   

          # re: 思考插件架構體系 2006-02-26 17:52 JC

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

          # re: 思考插件架構體系 2006-02-27 21:41 BlueDavy

          MSN:
          bluedavy@hotmail.com  回復  更多評論   

          # re: 思考插件架構體系 2006-08-30 10:18 guangqing

          為什么說,extension對于eclipse那么重要,而osgi卻不提供bundle的擴展機制嗎,然后就是因為它提倡通過service來交互,而eclipse卻一些自己的需求,比如它是一個open的平臺,這樣可以方便大家做contribution?  回復  更多評論   

          # re: 思考插件架構體系 2006-08-30 22:52 BlueDavy

          做為插件框架而言提供擴展點機制很關鍵....  回復  更多評論   

          # re: 思考插件架構體系 2006-08-31 09:35 guangqing

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

          # re: 思考插件架構體系 2006-08-31 10:37 BlueDavy

          為什么說對于插件框架而言擴展點特別重要呢,因為框架都是要具備開放性,而開放性的框架是需要通過提供擴展的方式來使得開發(fā)人員能夠基于框架構建出真正的應用系統(tǒng)。
          Equinox的server-side app就提供了一種擴展點的方式來實現(xiàn)新的servlet和資源文件的注冊。  回復  更多評論   

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

          在本人所開發(fā)的好服組件服務器中,用到了插件化架構思想、反謝方式動態(tài)載入DLL、程序域等等思想和技術。
          有興趣請看:http://www.soa365.com/techblog/article_view.aspx?art_id=70  回復  更多評論   

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導航

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

          統(tǒng)計

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 习水县| 广饶县| 平远县| 新宾| 巴青县| 平遥县| 松滋市| 丹寨县| 志丹县| 包头市| 岢岚县| 兴城市| 河西区| 津南区| 古浪县| 布拖县| 中宁县| 牟定县| 兴业县| 武城县| 赤峰市| 拉萨市| 滨海县| 竹北市| 郑州市| 奇台县| 尼木县| 兰坪| 定南县| 长宁县| 新竹县| 常熟市| 南宁市| 华蓥市| 玛沁县| 孟连| 达尔| 兴和县| 漳平市| 青田县| 海林市|