插件的技術原理

插件的本質在於不修改程序主體(平臺)的情況下對軟件功能進行擴展與加強,當插件的接口公開後,任何公司或個人都可以製作自己的插件來解決一些操作上的不便或增加新的功能,也就是實現真正意義上的 即插即用 軟件開發。平臺+插件軟件結構是將一個待開發的目標軟件分爲兩部分,一部分爲程序的主體或主框架,可定義爲平臺,另一部分爲功能擴展或補充模塊,可定義爲插件。

    在進行軟件開發之前,是否採用平臺+插件結構進行軟件開發,還要依據具體的軟件需求情況進行確定,但一般來講, 使用平臺+插件結構進行軟件設計會給所開發軟件增加新的生命力。當確定平臺+插件的軟件結構之後,就要分析哪些部分功能由主體完成,即平臺的基本功能,哪 些部分功能由插件完成,即需要擴展的插件功能。平臺所完成的功能應爲一個軟件系統的核心和基礎,這些基本功能即可爲用戶使用,也可爲插件使用,就是又可以 把平臺基本功能分爲兩個部分,內核功能和插件處理功能。 平臺的內核功能是整個軟件的重要功能,一個軟件的大部分功能因由內核功能完成。平臺的插件處理功能用於擴展平臺和管理插件,爲插件操縱平臺和與插件通信提供標準平臺擴展接口。 插件所完成的功能是對平臺功能的擴展與補充,一般插件完成系列化功能,例如:PHOTOSHOP的濾鏡插件完成對圖形的特殊效果處理,這些功能都有一些共性,可以進行集中管理,並且是可以定義出標準的插件接口。

 

    爲了實現平臺+插件結構的軟件設計需要定義兩個標準接口,一個爲由平臺所實現的平臺擴展接口,一個爲插件所實現的插件接口。這裏需要說明的是:平臺擴展接口完全由平臺實現,插件只是調用和使用,插件接口完全由插件實現,平臺也只是調用和使用。 平臺擴展接口實現插件向平臺方向的單向通信,插件通過平臺擴展接口可獲取主框架的各種資源和數據,可包括各種系統句柄,程序內部數據以及內存分配等。插件接口爲平臺向插件方向的單向通信,平臺通過插件接口調用插件所實現的功能,讀取插件處理數據等。

    平臺插件處理功能包括插件註冊、管理和調用,以及平臺擴展接口的功能實現。插件註冊爲按照某種機制首先在系統中搜索已安裝插件,之後將搜索到的插件註冊 到平臺上,並在平臺上生成相應的調用機制,這包括菜單選項、工具欄、內部調用等。插件管理完成插件與平臺的協調,爲各插件在平臺上生成管理信息以及進行插 件的狀態跟蹤。插件調用爲調用各插件所實現的功能。平臺插件處理功能實現的另一部分功能爲平臺擴展接口的具體實現。

插件軟件設計步驟包括:

1、 確定平臺基本功能和插件要完成系列化功能或擴展功能;

2、 定義平臺擴展接口和插件接口;

3、 完成平臺設計,主要是平臺插件處理功能;

4、 向插件開發者提供主平臺程序(執行代碼),公佈平臺擴展接口和插件要實現的接口,可能包括開發用的SDK;

5、 插件開發者按要求開發插件,實現插件接口,開發者可使用提供的主平臺程序測試插件;

6、 主平臺設計者繼續完成主平臺的內核功能,並可隨時公佈新增加主平臺擴展接口和插件接口;

7、 實現4-6步驟的良性循環,整個軟件系統不斷向前進化。

平臺+插件軟件設計的優點:

1、 實現真正意義上的軟件組件的 即插即用

2、 在二進制級上集成軟件,減少大量的軟件重新編譯與發佈麻煩與時間;

3、 能夠很好實現軟件模塊的分工開發,能夠大量吸取他人的優長;

4、 可較好實現代碼隱藏,保護知識產權。

插件接口的認識

    開發支持插件功能的應用程序必須解決一個問題:如何在主程序與插件間正確地互相通信。爲了在主程序與插件之間能正確地互相通信,應該先制定一套通信標準, 這套通信標準就是接口,主程序與插件只能通過制訂好的接口進行通信。軟件開發中,接口只是定義功能並規定調用功能的形式,而不包含功能的實現。接口實質上 是軟件模塊的調用規範。

    就開發支持插件功能的應用程序而言,一般來說由主程序的開發者來制訂接口,如果希望其他的開發人員能開發相關的插件,只要公開相關接口即可。接口功能一般 由插件方實現。因爲插件的實現也要調用主程序的功能,所以接口功能也可能由主程序來實現。也就是說,主程序與插件的信息流可能是雙向的。

  

    接口的調用規範與功能實現互相分離有一個很大的優點:儘管不同的插件開發者對同一個接口的具體實現不同,但是在主程序中對這些插件的調用方式是一樣的。如 果有主程序實現的接口,在不同的插件中也可以用相同的使用方式調用主程序的功能。這極大的提高了應用程序的靈活性。

程序結構及其運行機制

    主程序中,插件管理部分用於管理插件的安裝和刪除,並將所有安裝插件的信息保存到適合的地方,例如保存到註冊表或配置文件中。主程序啓動時,根據插件的配 置信息家在插件模塊,然後獲得插件的輸出函數或輸出類的指針並加以保存,如果需要的話,可以向主程序增加界面接口元素,如菜單、工具條按鈕等。在主程序中 當點擊與插件相關聯的接口元素時,就會觸發插件調用函數,在插件調用函數中使用主函數種所保存的插件信息調用插件中實現的功能。在調用插件輸出函數時也可 以把主程序中實現的接口傳遞給插件方。

 

插件 1

插件 2

插件 n

插件管理

插件調用函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章