基於外掛程式開發的架構研究

2022-02-19 15:03:06 字數 1710 閱讀 2917

最近關注架構問題,從很多方面了解到基於外掛程式開發的優點和方便性。其中乙個典型的例子就是eclipse,允許廣大程式設計師在eclipse的核心框架基礎上進行無限擴充套件。

那麼基於外掛程式開發具有哪些好處呢?

1)可以將各個功能交給外掛程式完成,那麼對於核心框架來說,其實只需要實現基本事件排程,資料快取,外掛程式管理等即可,而相應的業務邏輯可以交給外掛程式完成.如此一來,可以非常方便的對業務邏輯進行更新,而不會影響到主框架的內容。

2)非常靈活,新增,刪除功能都是非常方便和簡潔,僅僅只需對外掛程式進行控制即可實現各個功能模組的控制。

這裡本人才智有限,僅通過c++ dll的方式來實現基於外掛程式開發的簡單demo,請各位看客多多指點…

首先該框架的包括如下幾塊內容

外掛程式:開放介面,完成自定義功能

sdk:為外掛程式提供api支援,這裡只是簡單的幾個類的宣告和註冊dll函式原型

架構圖如下:

demo中未實現通過configmanager進行外掛程式的動態載入,而是直接呼叫某個dll進行載入.實際情況中可以將外掛程式的註冊通過配置檔案(.ini/.xml)的方式進行註冊,這裡不做綴述.

從上面的類圖我們可以看出該框架中主要使用的就是兩個介面:

如此該架構的實現過程基本如下:

在demo中因為採用的是使用dll動態載入方式,所以需要在dll中暴露相應的註冊函式

extern_c core_api iplugin**

);

class

public

:virtual

void

initlize()=0

;virtual

void

destory()=0

;virtual

void

displaydata(lpctstr pstrdata)=0

;};

iplugin介面

class

iplugin

};

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

->

updatedata();

}

此處的由cpluginmanager單件來管理外掛程式的註冊和反註冊

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...