插件(Plug-in,又稱addin、add-in、addon、add-on或外掛),是一種遵循一定規范的應用程序接口 (API) 編寫出來的程序。開發者可通過插件擴展產品功能。計算機軟件插件可根據使用的語言和環境,分為類似命令的簡單插件、腳本語言插件、動態函數據庫DLL插件、COM組件插件、已有程序環境插件等。
早期軟件的定制和擴展較為困難,所以模塊化方法的概念開始實行,而插件就是具有獨立功能的一個功能模塊。插件于1970年代首次用于文本編輯器中,后來由硅 Beach公司提出“插件”一詞。20世紀90年代,插件化開始引入計算機軟件領域,大大提高了軟件開發的可運行性和可維護性等。而后,許多流行的軟件開始支持插件,如Adobe Photoshop、Netscape Navigator、Emacs等。Web2.0興起后,Web服務和應用程序編程接口的概念變得流行,Web2.0網站開始允許使用第三方開發人員創建的應用程序。
插件技術可以“PnP”地擴展軟件功能,支持合作開發,使軟件具有易維護、可擴展等特性。常用的開發平臺有微軟的.NET、IBM公司的Elipse平臺和RCP平臺、Android平臺等。插件廣泛用于數字音頻、視頻和Web瀏覽。但插件機制本身存在著一些安全隱患,不法分子通過利用惡意插件會對用戶的財產和隱私安全帶來威脅。所以,在使用計算機時,需要重視這些惡意插件的清除,防止惡意插件帶來的危害。
概述
插件也可以稱之為外掛,是根據相應規范應用程序接口(API)進行編寫的程序,應用程序在運行時通過接口規范對插件進行調用,以擴展應用程序的功能。
它是基于面向對象的思想設計和實現的。通常,插件以二進制的形式獨立存在,在主程序運行時動態加載道內存空間。許多軟件都使用了插件技術,如IE瀏覽器、Photoshop、媒體播放器、MS Office、MS Visual Studio等。
插件的本質在于不修改程序主體(平臺)的情況下對軟件功能進行擴展與加強,可以用來解決一些操作上的不便或增加新的功能,能夠提高計算機的運行效率,將軟件的拓展空間進一步放大,使軟件的功能更加豐富。
研究意義
插件化可以提高代碼的復用性,能夠使軟件并行開發,提高開發效率的同時降低了成本。且插件所具有的獨立性,在進行功能升級和異常調試的時候,不影響主程序與其他插件的運行,用戶的系統可以通過更換插件的方式自如的跟隨用戶業務的變化而變化,軟件的未來版本還可以通過插件豐富自身功能,而無需重新開發,提高了軟件的測試性。
特性
插件在計算機軟件的運行過程中,發揮著重要作用。插件主要有以下幾方面的特點和優勢:
發展歷史
早期軟件的定制和擴展主要依賴于源代碼的修改進行編程,這種方法對開發人員的要求較高,對于大規模的復雜問題難以理解和調試,所以模塊化方法的概念開始實行,把軟件系統劃分成獨立命名和可獨立訪問的模塊。插件就是具有獨立功能的一個功能模塊。插件化(或模塊化)設計模式最先應用于制造業,1962年,西蒙(H.Simon)提出了模塊(Module)的概念。他認為,模塊是復雜系統在進化過程中產生的一種特殊結構,模塊化的概念也在制造業領域取得了成功,例如船舶大型鉆井平臺等設備的制造。
這種設計模式也被應用在了計算機硬件系統的設計中。硬插件通過接口連接到總線上,總線負責插件的通信管理與控制。接口負責插件的數據傳遞、開關等工作。計算機系統投入運行后,還可以根據用戶的需求添加新的功能插件。
插件于1970年代首次用于文本編輯器中,后來Silicon Beach使用插件來擴展圖形程序的功能,如Digital Darkroom和SuperPaint,該公司還因創造了“插件”一詞而受到贊譽。隨著軟件和微處理器變得更加強大,插件在20世紀90年代首次流行起來,插件化開始引入計算機軟件領域,尤其是在PC端。計算機工程師烏爾里克(UIrich)和馬奧尼(Mahoney)提出:軟件可以理解為由一個或多個具有特定功能的部分組成,所以一個軟件系統可以拆分成多個獨立的功能模塊,系統的功能由這些模塊相互協作而成。
而后許多流行的軟件開始支持插件,尤其是內容創作工具(如Adobe Photoshop)、Web瀏覽器(如Netscape Navigator)和文本編輯器(如Emacs)。插件允許用戶在不改變核心代碼庫的情況下,添加新功能或改進現有功能。
插件式體系結構把應用程序的功能拆解開來,從而將一個大應用拆解為由各個功能組成的數個小應用,這樣就有效減小了單個程序安裝包的體積。插件是被單獨開發出來的,系統根據用戶的需求實時的將插件加載到系統內。由于模塊脫離主體,各個模塊可以由不同的開發組同時開發,因此可以大大提高軟件的開發速度,降低耦合性,也方便了設計,在可運行性、可測試性和可維護性等方面也有大大的提高。如 Eclipse、Photoshop、firefox 等很多 PC 端的軟件應用,都是采用了模塊化的設計與開發方法。
Web2.0時代的到來和興起,參與式社交網絡開始出現,Web服務和應用程序編程接口 (API) 的概念變得流行,使不同的Web應用程序能夠無縫通信和共享數據,Web 2.0的網站使用API進行自動化使用,能夠更深入地使用由第三方開發人員創建的應用程序。
技術原理
開發原理
插件化開發是把一個很大的軟件分成多個比較小的軟件,其中有一個軟件為主體框架,也就是宿主程序。宿主程序的表現模式是可執行文件,插件則是常駐于內存中的服務性功能。宿主程序在使用插件的時候,會將其加載至自己的內存空間。由于不同產品在插件化時所指定的規則不同,因此需要對插件進行管理。單個插件的功能較單一,多個插件協同工作,就可以完成比較復雜的工作。插件與宿主程序都要遵循接口的規則去連接,插件的所有功能都是通過接口進行配置的。
計算機軟件可以將插件設置為動態形式,以動態形式實現插件的應用。另外,插件也可以為計算機提供相應接口,推動主程序調用行為的實現,精準識別主程序調用行為。主程序主要用于啟動計算機軟件。在計算機軟件的工作過程中,插件可以進入相關進程地址。各個插件可以通過主程序實現有效管理,確保各插件的有效應用。
工作流程
插件通過連接到主機應用程序的現有代碼庫來工作,由應用程序編程接口(API)或核心程序提供的其他集成點連接到主軟件,應用程序上構建了插件,通過API(應用程序編程接口)提供集成點,其他軟件組件可以通過API將其代碼合并到主機軟件中,而無需修改其核心功能。
開發要點
一個使用插件的軟件系統,通常由一個主程序和許多完成子功能的插件組成。在進行系統設計時,需要解決主程序對插件的識別、加載、卸載以及調用等問題,其開發要點如下:
主要技術
插件技術主要是根據預定義接口,進行標準化程序的編寫,并將程序運用到計算機軟件的運行中。插件在運行時應該保證計算機應用程序功能的拓展、主程序與插件組件相互協調,以及對軟件運行的協議規則進行審定,保障程序處于正常狀態。
插件架構
在計算機軟件中運用插件技術時,需要通過接口和動態的鏈接庫等來支持實現。
插件管理程序
負責為插件分配資源,創建運行環境,按照用戶的要求對插件進行調用。為了保證這個過程順利進行,需要為如何調用插件,如何交換數據定義一套規則,使得插件系統在這些規則的指導下可以正常運行。插件需要通過擴展點才可以進行插入,一般情況下,插件的開發平臺會提供插件所需要的擴展點。
插件接口
接口是插件必不可少的一部分,具有在主程序與插件之間傳輸信息數據的功能,保障計算機軟件應用的穩定性和可靠性。接口的主要目的是實現軟件功能調用,開發人員可以根據軟件的接口規范,來開發相關的插件。在進行插件功能程序開發的過程中,要建立插件和主程序之間的正確通信。為了確保接口的適用性,應盡可能滿足用戶對插件的多元化需求,并設計覆蓋所有類型插件的信息數據處理結構。
動態鏈接庫
動態鏈接庫能夠對組件進行重用,在熟悉插件相關編程和調用規則的前提下,能夠對插件進行集中化的調用。動態鏈接庫方案的適用范圍比較廣泛,其可行性比較高。在插件的集成化管理中,只要系統掌握了與插件相關的調用規則和編程規則,就能夠對插件的功能進行優化。動態鏈接主要有靜態和動態兩種調用方式。靜態調用是通過編譯系統,利用DLL加載實現,其需要的代碼少,較為簡單,但是缺乏靈活性。如果DLL出現錯誤,沒有DLL的話,DLL就會停在相應的地址中。動態調用的應用比較復雜,靈活性較高,在DLL出現錯誤時,程序也能正常運行。
插件資源文件
插件資源文件也叫清單文件,一般包含了將插件集成到框架所需要的關鍵信息。第一次創建插件時,在缺省的情況下,開發平臺會在清單編輯器區域中打開該文件,之后開發人員可以選擇關于插件的不同信息集合。
插件通信
插件之間的通信允許它們協作和交互以實現所需的功能,插件通信的方法包括共享數據和狀態、事件和通知、進程間通信和端點。其中事件和通知包括事件總線和觀察者模型,事件總線允許插件訂閱和發布事件的事件總線或消息傳遞系統,插件可以在必要時做出相應的反應;使用觀察者模式,插件可以注冊為特定事件或狀態變化的觀察者或偵聽器。當觀察到的事件發生時,注冊的插件會收到通知。
插件容器
插件容器是一種類似于觀察者的設計模式,但更側重于數據處理、狀態更改和可取消操作,負責運行 Adob??e Flash、Java和Silverlight等插件,并防止插件崩潰時瀏覽器崩潰。
分類
插件提供了一種靈活的方式來增強程序的功能,使得軟件能夠適應不同用戶的需求或適應新的技術發展。根據使用的語言和環境,計算機插件可以分為以下幾類:
相關平臺
知名產品
兼容性
插件的兼容性是指按新的接口開發的插件,能夠提供對舊接口開發的插件管理程序的支持,或者按照新接口開發的插件管理程序,也能夠插入按照舊接口開發的插件。兼容性可以提高軟件的可復用性,增長插件應用系統的生命周期。
插件的兼容性要求插件具備智能識別、自動化調用和通信過程順利:
智能識別:插件系統中可能會插入很多插件,其中的一部分可能是第三方開發的,其功能和需要的資源都不能夠事先預判。接口必須在插件插入到系統中的時候,對插件進行識別,包括獲取插件信息、判斷它是否與當前接口吻合等,以決定是否將它插入到系統中。之后,還要從獲得信息中獲取插件所需要的資源,并為它創建運行環境,以確保插件的正常運行。
自動化調用:對插件的調用分為事件激活和自動調用兩種方式。事件激活指將某種特定的事件消息傳遞給插件,插件調用相應的事件處理程序。自動調用是指系統可以根據自身的需要,或者用戶的需要,對插件提供的服務進行調用。
通信過程順利:插件管理程序與插件之間的通信過程是否順利,對多個插件的并行調用有很大影響。
安全性
插件機制的引入,給應用軟件的功能擴展帶來了便利,但同時,插件機制本身存在著一些安全隱患,容易被不法分子利用,可能對用戶的財產和隱私安全帶來威脅。
一旦用戶的計算機系統在安裝軟件過程中捆綁了惡意插件,黑客便會通過這些惡意插件來對用戶的計算機系統進行監聽,會影響到計算機系統的運行速度,甚至會對用戶的計算機系統進行攻擊和數據篡改。在計算機網絡安全防范技術研究中,需要重視這些惡意插件的清除,防止黑客利用惡意插件開展網絡攻擊。
應用
插件式程序在當前有著廣泛的應用,特別是在大規模的軟件開發當中,可以提高群體的開發效率,縮短開發周期以及降低設計難度等。插件在實際應用中,除了可執行代碼外,還可以處理圖像、聲音、動畫等。
Web瀏覽器
插件在瀏覽器的應用類型較為廣泛,網絡瀏覽器的插件又被稱為擴展,例如Adobe Flash Player、Grammarly 和廣告攔截器,VPN使瀏覽器具有附加功能,這些附加功能包括啟用內容過濾和廣告攔截、提供另一層安全性、限制允許用戶在指定網站上花費的時間、允許用戶突出顯示網頁文本并通過社交媒體、電子郵件等分享、進行網頁翻譯等。
內容管理系統
預先創建好的插件和模板能夠應用到內容管理系統(CMS)中,CMS是一種工具,可以通過易于使用的界面構建網站的所有內容,從文本到照片再到小部件,使用CMS無需編寫自己的代碼,能夠快速有效地構建網站。比較流行的CMS工具例如WordPress,它提供了多種功能,從添加社交媒體集成到增強網站的SEO(搜索引擎優化)等等。
媒體播放器
多媒體軟件設置附帶各種功能的模塊,包括插件管理模塊、產品功能模塊、人機交互模塊、通訊模塊以及界面管理模塊等,插件在多媒體中能夠實現可播放媒體格式的擴展、保證音頻的高品質、校正音頻和視頻的同步。調整燈光設置、允許媒體編碼等等,如插件Winamp DSP允許用戶自定義帶有效果和可視化的音頻播放。
圖形設計
在圖形設計軟件中有許多的增效工具插件,能夠進行顏色校正、提高圖像的質量、創建數字背景、綠屏攝影的快速自動蒙版、創建紋理和邊框、添加光照等一系列的功能,可以滿足數碼攝影師、圖形藝術家和 Web 設計師的各種需求。軟件工具奧多比 Phototshop中就包含了多種增效工具和擴展,如一款獲獎的增效工具——Noiseware,可單獨用于消除照片雜色。
項目開發
開發工具插件可以用來幫助構建模式項目,這些項目包括軟件組件、腳本包、模式類型和插件,為這些項目提供創建、配置、打包、部署和調試功能。例如華為的HMS Toolkit,一個IDE工具插件,提供一套含應用創建、編碼和轉換、調測、測試和發布的開發工具,還能夠將現有代碼轉換為集成HMS Core服務的代碼等。
電子商務平臺
插件帶有一些獨立的功能,通過調用整合,能夠形成一個成熟的電子商務平臺,比如ECwid電子商務購物車(Ecwid Ecommerce Shopping Cart),通過與主要承運人集成,自動計算運費,包括美國和加拿大的自動稅率計算以及歐盟增值稅,與TaxJar集成,可在美國自動進行銷售稅報告和申報;另有一款名為Easy Digital Downloads的插件,該插件可以查看和管理所有客戶及其購買歷史記錄的詳細記錄,對店鋪的收入、退款、銷售等進行追蹤。
參考資料 >
Web 1.0 Web 2.0 and Web 3.0.linkedin.2024-03-05
軟件開發方法發展回顧與展望.軟件學報.2024-03-04
What is a plug-in and what is it used for?.ionos.2024-03-04
Adobe Photoshop 的增效工具和擴展.AdobeSupport.2024-03-04
Netscape Navigator.mozilla.2024-03-04
What is Emacs?.Red Hat.2024-03-04
web 2.0 an introduction.medium.2024-03-05
plug-in.britannica.2024-03-04
插件機制實現的原理.medium.2024-03-04
What Are Plugins? Meaning, Working, Importance, and Best Practices.spiceworks.2024-03-04
what are plugins and how do they work.geeksforgeeks.2024-03-04
Discovering Plug in Play architecture.DEV.2024-03-05
plugin-container.cancerberosgx.2024-03-05
Plugin-container.exe: What It Is & Should I Remove It?.malwaretips.2024-03-05
Firefox 瀏覽器附加組件.Firefox附件組件.2024-02-22
marketplace.eclipse.2024-02-22
assetstore.unity.2024-02-22
You are shopping Microsoft Store in: {0}.microsoft.2024-02-22
更好用的微信編輯器,但不止于此.壹伴.2024-02-22
Dark Reader.Dark Reader.2024-02-22
Tampermonkey.Tampermonkey.2024-02-22
Adblock Plus for Safari.Adblock Plus.2024-02-22
百度翻譯.百度翻譯.2024-02-22
browser extension.techtarget.2024-03-04
content management system.hoteltechrepor.2024-03-04
Linux 中的十大開源視頻播放器.linux.2024-03-04
Winamp plugins.winampheritage.2024-03-04
IBM Documentation.IBM.2024-03-04
開發工具-HMS Toolkit-Android Studio插件-華為開發者聯盟.華為.2024-03-04
Top 14 eCommerce Plugins to Power Your eCommerce Site in 2024.influencer Marketinghub.2024-03-04