最近關注架構問題,從很多方面了解到基於外掛程式開發的優點和方便性。其中乙個典型的例子就是eclipse,允許廣大程式設計師在eclipse的核心框架基礎上進行無限擴充套件。
那麼基於外掛程式開發具有哪些好處呢?
1)可以將各個功能交給外掛程式完成,那麼對於核心框架來說,其實只需要實現基本事件排程,資料快取,外掛程式管理等即可,而相應的業務邏輯可以交給外掛程式完成.如此一來,可以非常方便的對業務邏輯進行更新,而不會影響到主框架的內容。
2)非常靈活,新增,刪除功能都是非常方便和簡潔,僅僅只需對外掛程式進行控制即可實現各個功能模組的控制。
這裡本人才智有限,僅通過c++ dll的方式來實現基於外掛程式開發的簡單demo,請各位看客多多指點…
首先該框架的包括如下幾塊內容
外掛程式:開放介面,完成自定義功能
sdk:為外掛程式提供api支援,這裡只是簡單的幾個類的宣告和註冊dll函式原型
架構圖如下:
demo中未實現通過configmanager進行外掛程式的動態載入,而是直接呼叫某個dll進行載入.實際情況中可以將外掛程式的註冊通過配置檔案(.ini/.xml)的方式進行註冊,這裡不做綴述.
從上面的類圖我們可以看出該框架中主要使用的就是兩個介面:
如此該架構的實現過程基本如下:
在demo中因為採用的是使用dll動態載入方式,所以需要在dll中暴露相應的註冊函式
extern_c core_api iplugin**);
classiplugin介面public
:virtual
void
initlize()=0
;virtual
void
destory()=0
;virtual
void
displaydata(lpctstr pstrdata)=0
;};
classiplugin
};
void//register plugin's
hmodule hmodule
=loadlibrary(_t(
"plugin.dll
"));
if(hmodule
==invalid_handle_value)
prgisterfuc regfuc
=(prgisterfuc)getprocaddress(hmodule,
"registerplugin");
if(regfuc
!=null)
else
}}
void此處的由cpluginmanager單件來管理外掛程式的註冊和反註冊->
updatedata();
}
void如此基本上已經完成了乙個簡單的基於外掛程式的開發框架,當然本人才疏學淺,還有很多沒有理解透的地方,請各位看客指點迷津,大家攜手共同進步.cpluginmanager::updatedata()
}
基於jQuery 的外掛程式開發
談到jquery,對於開發人員是再熟悉不過了,從其誕生發展到到目前,一路走來,歷經風雨變化十幾載,依舊是開發人員使用最廣泛 最常用 也是最成熟的js庫。但其再成熟也不可能開發出所有的功能,於是乎就用了外掛程式這麼一說,用來拓展和補充jquery 的功能。外掛程式開發最常用的兩種方法 1.擴充套件 j...
基於AppDomain的 外掛程式式 開發
看了空逸雲的 基於的 外掛程式式 開發 後,在其基礎上,做優化修改。1.使用 在程式集找不到時,去 plugins 目錄中再次載入。這樣就可以直接載入外掛程式類名,方便多了。2.外掛程式的方法有限,直接寫上方法 去除了動態生成方法呼叫的效能損失。同時,系統還保證了外掛程式的 1.熱插拔 實現2.版本...
gorm 開發架構 寫外掛程式
目錄gorm使用可鏈結的api,gorm.db是鏈的橋梁,對於每個鏈api,它將建立乙個新的關係。db,err gorm.open postgres user gorm dbname gorm sslmode disable 建立新關係 db db.where name jinzhu 過濾更多 if...