終於能夠發佈Delphi下收點OSGI精髓皮毛而設計的插件框架WisdomPluginFramework

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

 

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

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

二、面向接口,任意角落調用
   插件核心、插件服務所有以純接口方式暴露,任何插件在任什麼時候候能夠獲取任何其它插件所聲明提供的接口服務,不用關心怎麼處理和
這些插件的關係,人人爲我,我爲人人嘛。
dom

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

四、她只使用純DLL作插件(固然也可用BPL,我認爲那只是打個鉤的事情)
    Delphi下的BPL確實很好,但你必定咬牙切齒要維護一個支持那時的BPL的編譯環境和控件,我也是這樣想的,所以堅定支持純正DLL。
學習

五、她能支持除Delphi外的其它編譯器生成的DLL
   像VC++有這麼多優秀的庫,不用甚是惋惜,因此,支持它編譯的DLL!若是萬一還有支持不住的怎麼辦?好比像易語言?好比在Linux下跑?
好得我也考慮到了,剛纔我有把微內核比做原子,你們都知道,原子還能更細分到電子,因此,微內核裏的東西還能細分出來更換呢!內核裏我就有一個DLL加載器,你只要爲特殊的DLL重定義一個加載器,就能跑起來了,看到這裏,是否是有點躍躍欲試了哈。
spa

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

七、插件懶加載,務求最少資源佔用
   插件框架提供老是、按需、自動管理三種方式載入插件,沒必要要尚未用起的插件就留着在磁盤上吧,保持她苗條秀麗的身材跑得快效率高。
在自動這種方式下,若是插件在一段時間發現沒人用,就把插件卸出內存,哇,這功能好啊!很遺憾,我沒有作,不是懶,由於我細想後,以爲
這件事情可劃入由外部插件來插手的領域,不是原子性的範疇,以保證微內核是真的微哈。
設計

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

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

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

 

而後再說下怎麼使用,仍是很簡單地:
一、解壓到目錄A後,在Delphi環境中,Tools-->Environment Options,打開Library標籤,在Browsing Path和Library Path中包含源碼中的Core目錄
二、新建項目,在Project-->View Source下的uses中,首先第一個打上」WisdomFramework「,在須要跑起的地方加一句TWisdomFramework.Run就能夠了
三、在須要調用框架接口的地方,uses一下接口說明文件便可,其中」WisdomCoreInterfaceForD「是給Delphi用的,給C++用的頭文件在Demo的Cplus裏哦
這裏有一條規則:若是搞有DLL中的界面元素顯示到Host主窗口,那麼在主窗口的OnClose或Destroy中,必定要調用一下TWisdomFramework.Stop

具體特性參看Demo演示。

 

最後,說一下這個框架的設計理念,這隻須要一張圖就足夠了,以下:

 

 

在哪下載?我放到Delphi盒子上了,求你們留贈幾根火柴,能否,請大夥閱後批示!
地址爲:http://bbs.2ccc.com/topic.asp?topicid=458999

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

相關文章
相關標籤/搜索