終於可以發布Delphi下收點OSGI精髓皮毛而設計的插件框架WisdomPluginFramework


這是一個Delphi實現的插件框架,
我耗費了相當相當相當多的精力來設計她,雖然僅閃着點我微薄智慧的光芒,但我還是決定用Wisdom來命名她,
也因它是我絕無僅有的,在完成1年多后回頭來看仍能相當滿意的作品,
所以我補充了展示她特性的Demo和管理工具,決定將她開源發布給仍在堅持着的Delphi Fans。

 

我發現,人年齡越大,越害怕復雜的東西,越偏向喜歡清澈簡單明了的事物,因此,這個插件框架的設計我是費盡心思地往簡單上整,
務求掃上幾眼幾分鍾就大概懂了原理,就能上手用起來;務求使用中只需遵守最少的使用守則!
為此,我把OSGI和Eclipse的插件設計精華提取提取再提取,思考思考再思考,終於得償所願,最終匯成了她!

好了,吹牛吹過頭又吹過癮了,就還是回到正事,介紹下這個框架都具備什么特性,有什么好處來吸引你。
1、她是微內核的設計
   什么是微內核?就是核心實現小如原子,其它一切皆是插件,通過插件的相互構織構建出大千世界。
與此相對應的,那些構建了基本框架,給你一堆既定接口讓你完善細處的叫巨內核設計,我討厭學習一堆接口,因此堅決支持微內核設計,
微內核下整個實現的核心代碼可能就2000行內,對高手來說三刀兩斧就閱讀完了,代碼雖小,卻是靈活強大。
   用巨內核的叫水泥工,而在微內核外,那是你自由奔放的靈感創造,你就是世界的構築者。

2、面向接口,任意角落調用
   插件核心、插件服務全部以純接口方式暴露,任何插件在任何時候可以獲取任何其它插件所聲明提供的接口服務,不用關心怎么處理和
這些插件的關系,人人為我,我為人人嘛。

3、擴展點概念讓插件無限擴展
   每個插件實現自己夢想的同時,能力大的還可以留給別人實現夢想的空間,這個空間就是擴展點,每個插件都可以向別的插件聲明擴展空間,
任何其它插件都可以來實現這個擴展點,就如同一個插頭又預留有插頭口一樣,插頭和插頭間可以互插而互連形成樹狀獲得無限擴展能力,但
對於任何一個插件角度看去,任何其它插件又是平面化的,就像人與人一樣,你可以與任何一個人你見到的人打交道,而不需要一定有介紹人。
   擴展點概念是Eclipse的設計精髓之一,通過擴展點,能讓你的界面靈活得就像Eclipse一樣。

4、她只使用純DLL做插件(當然也可用BPL,我認為那只是打個鈎的事情)
    Delphi下的BPL確實很好,但你一定咬牙切齒要維護一個支持那時的BPL的編譯環境和控件,我也是這樣想的,因此堅決支持純正DLL。

5、她能支持除Delphi外的其它編譯器生成的DLL
   像VC++有這么多優秀的庫,不用甚是可惜,所以,支持它編譯的DLL!如果萬一還有支持不住的怎么辦?比如像易語言?比如在Linux下跑?
好得我也考慮到了,剛才我有把微內核比作原子,大家都知道,原子還能更細分到電子,所以,微內核里的東西還能細分出來更換呢!內核里我就有一個DLL加載器,你只要為特殊的DLL重定義一個加載器,就能跑起來了,看到這里,是不是有點躍躍欲試了哈。

6、她不需要重啟就能動態更新/更換新版本的DLL插件
   這功能在不能停的服務端那是相當有用對不對,聽起來也很高大上對不對,其實實現很簡單,你只需遵守一條規則就行,那就是她叫你釋放
某個接口時你要立馬無條件接受並立刻按她說的做,當然,一瞬間后她會立刻把你需要的服務接口送還給你。

7、插件懶加載,務求最少資源占用
   插件框架提供總是、按需、自動管理三種方式載入插件,不必要還沒有用起的插件就留着在磁盤上吧,保持她苗條秀麗的身材跑得快效率高。
在自動這種方式下,如果插件在一段時間發現沒人用,就把插件卸出內存,哇,這功能好啊!很遺憾,我沒有做,不是懶,因為我細想后,覺得
這件事情可划入由外部插件來插手的領域,不是原子性的范疇,以保證微內核是真的微哈。

8、手動式還是配置全由你
   提供全套API讓你可在程序中手動獲取、管理、卸載插件DLL,當然也提供xml配置的方式自動管理插件,要不,小小程序也要配一個xml就說不過去了。

9、可能可以在Linux下跑
   我只用到了D7的語言特性,因此,小改一點應可以用Lazarus跑起來,但我是Linux菜鳥,沒有發言權,所以只能說可能,求高手上斧。

感覺整個篇幅下來都是我吹噓之詞。。。唉,吹壯君子膽嘛,高手莫見笑。

 

然后再說下怎么使用,還是很簡單地:
1、解壓到目錄A后,在Delphi環境中,Tools-->Environment Options,打開Library標簽,在Browsing Path和Library Path中包含源碼中的Core目錄
2、新建項目,在Project-->View Source下的uses中,首先第一個打上”WisdomFramework“,在需要跑起的地方加一句TWisdomFramework.Run就可以了
3、在需要調用框架接口的地方,uses一下接口說明文件即可,其中”WisdomCoreInterfaceForD“是給Delphi用的,給C++用的頭文件在Demo的Cplus里哦
這里有一條規則:如果搞有DLL中的界面元素顯示到Host主窗口,那么在主窗口的OnClose或Destroy中,一定要調用一下TWisdomFramework.Stop

具體特性參看Demo演示。

 

最后,說一下這個框架的設計理念,這只需要一張圖就足夠了,如下:

 

 

在哪下載?我放到Delphi盒子上了,求大家留贈幾根火柴,可否,請大伙閱后批示!
地址為:http://bbs.2ccc.com/topic.asp?topicid=458999

感謝:
   感謝飛鴻,要不是他時不時問一下的督促,我估計至今還沒有完成這作品,要不是他提了好些建議,這可能還是一件粗糙遺憾的作品。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM