日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

插件原理[转]

發布時間:2025/7/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 插件原理[转] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文轉自?http://450940118.blog.163.com/blog/static/430622032012128262337/

插件是一種遵循統一的預定義接口規范編寫出來的程序,應用程序在運行時通過接口規范對插件進行調用,以擴展應用程序的功能。插件在英文中通常稱為plug-in、plugin或者plug in。插件最典型的例子是Microsoft的ActiveX控件和COM(Component Object Model,部件對象模型)實際上ActiveX控件不過是一個更高繼承層次的COM而已。此外還有Photoshop的濾鏡(Filter)也是一種比較常見的插件。

??????插件最吸引人的地方當然就是其所實現“運行時(run-time)"功能擴展。這意味著軟件開發者可以通過公布插件的預定義接口規范,從而允許第三方的軟件開發者通過開發插件對軟件的功能進行擴展,而無需對整個程序代碼進行重新編譯。運行時(run-time)是相對于編譯時(assembly-time)而言的。一般來說,軟件開發者對軟件功能更新時,是在源代碼級別進行更新,然后對整個程序進行重新編譯,進而發布應用程序的新版本,這就是編譯時(assembly-time)的軟件更新。

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

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


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


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

????插件接口的認識

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

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

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

????程序結構及其運行機制

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

總結

以上是生活随笔為你收集整理的插件原理[转]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。