插件
插件(也稱為addin、add-in、addon、add-on或Plug-in)是應(yīng)用程序接口(API)按照一定的規(guī)范編寫的程序。開發(fā)者可以通過插件來擴(kuò)展產(chǎn)品功能。計(jì)算機(jī)軟件插件可分為類似命令的簡單插件、腳本語言插件、動態(tài)函數(shù)庫DLL插件、COM組件插件、現(xiàn)有程序環(huán)境插件等。早期的軟件很難定制和擴(kuò)展,于是開始實(shí)行模塊化方法的概念,插件就是一個功能獨(dú)立的功能模塊。20世紀(jì)70年代,插件首次用于文本編輯器,隨后“插件”一詞由Silicon Beach Company提出。90年代,插件被引入計(jì)算機(jī)軟件領(lǐng)域,大大提高了軟件開發(fā)的可操作性和可維護(hù)性。然后,很多流行的軟件開始支持插件,比如Adobe Photoshop,Netscape Navigator,Emacs等等。Web2.0興起后,Web服務(wù)和應(yīng)用編程接口的概念開始流行,Web2.0網(wǎng)站開始允許使用第三方開發(fā)者創(chuàng)建的應(yīng)用。
插件技術(shù)可以“即插即用”地?cái)U(kuò)展軟件功能,支持協(xié)同開發(fā),使軟件易于維護(hù)和擴(kuò)展。常用的開發(fā)平臺是微軟的。NET,IBM的Elipse平臺,RCP平臺,Android平臺。插件廣泛用于數(shù)字音頻、視頻和網(wǎng)頁瀏覽。但插件機(jī)制本身存在一些安全隱患,不法分子會利用惡意插件威脅用戶的財(cái)產(chǎn)和隱私。因此,在使用電腦時(shí),我們需要注意清除這些惡意插件,防止惡意插件帶來的危害。
定義意義
定義插件也可以稱為插件,是按照相應(yīng)規(guī)范的應(yīng)用程序接口(API)編寫的程序。應(yīng)用程序運(yùn)行時(shí),通過接口規(guī)范調(diào)用插件,擴(kuò)展應(yīng)用程序的功能。
它是基于面向?qū)ο蟮乃枷朐O(shè)計(jì)和實(shí)現(xiàn)的。通常插件以二進(jìn)制形式獨(dú)立存在,在主程序運(yùn)行時(shí)動態(tài)加載通道內(nèi)存空間。很多軟件都使用插件技術(shù),比如IE瀏覽器、Photoshop、媒體播放器、MS Office、MS Visual Studio等等。
插件的本質(zhì)是在不修改程序主體(平臺)的情況下,對軟件功能進(jìn)行擴(kuò)展和強(qiáng)化,可以用來解決一些操作上的不便或增加新的功能,提高計(jì)算機(jī)的運(yùn)行效率,進(jìn)一步擴(kuò)大軟件的擴(kuò)展空間,豐富軟件的功能。
研究意義
插件可以提高代碼的可重用性,使軟件并行開發(fā),提高開發(fā)效率,同時(shí)降低成本。而且插件的獨(dú)立性不影響主程序和其他插件在功能升級和異常調(diào)試時(shí)的運(yùn)行。用戶的系統(tǒng)可以通過更換插件自由跟隨用戶業(yè)務(wù)的變化,軟件的未來版本可以通過插件豐富自身的功能,無需重新開發(fā),提高了軟件的可測試性。
主要特性
插件在計(jì)算機(jī)軟件的運(yùn)行過程中起著重要的作用。插件主要有以下特點(diǎn)和優(yōu)勢:
低耦合:插件軟件解耦模塊,使程序更加清晰易懂。
復(fù)用率高:在軟件設(shè)計(jì)開發(fā)中,如果要調(diào)整或升級軟件原有的設(shè)計(jì)結(jié)構(gòu),就必須使用插件技術(shù)。
插件互不干擾:即使計(jì)算機(jī)軟件中不斷加入新類型的插件,也不會影響軟件的整體系統(tǒng)。
結(jié)構(gòu)靈活:插件的結(jié)構(gòu)簡單,刪除和添加插件的過程方便快捷,不會對計(jì)算機(jī)軟件的整體構(gòu)成產(chǎn)生不利影響。
可維護(hù)性強(qiáng):插件通過接口與主程序連接,與主程序解耦,插件是獨(dú)立的,所以插件的變化對主程序沒有影響。
開發(fā)周期短:在開發(fā)過程中,開發(fā)者可以先開發(fā)主框架和一些重要的功能插件,從而保證產(chǎn)品在第一時(shí)間投入市場,得到用戶的反饋。其他功能可以在產(chǎn)品上線后再添加。
專有技術(shù)
開發(fā)原理
插件開發(fā)就是把一個大軟件分成幾個更小的軟件,其中一個是主框架,也就是宿主程序。宿主程序的性能模式是可執(zhí)行文件,插件是駐留在內(nèi)存中的服務(wù)函數(shù)。當(dāng)宿主程序使用插件時(shí),它會將其加載到自己的內(nèi)存空間中。因?yàn)椴煌漠a(chǎn)品在插件的時(shí)候規(guī)定了不同的規(guī)則,所以需要對插件進(jìn)行管理。單個插件的功能單一,多個插件可以協(xié)同工作,完成更復(fù)雜的工作。插件和主機(jī)程序要遵循接口的規(guī)則來連接,插件的所有功能都是通過接口來配置的。
計(jì)算機(jī)軟件可以將插件設(shè)置為動態(tài)形式,并以動態(tài)形式實(shí)現(xiàn)插件的應(yīng)用。此外,插件還可以為計(jì)算機(jī)提供相應(yīng)的接口,促進(jìn)主程序調(diào)用行為的實(shí)現(xiàn),準(zhǔn)確識別主程序調(diào)用行為。主程序主要用于啟動計(jì)算機(jī)軟件。在計(jì)算機(jī)軟件的工作進(jìn)程中,插件可以輸入相關(guān)的進(jìn)程地址。可以通過主程序?qū)γ總€插件進(jìn)行有效管理,保證每個插件的有效應(yīng)用。
工作流程
插件通過連接到宿主應(yīng)用程序的現(xiàn)有代碼庫來工作,并通過應(yīng)用程序編程接口(API)或核心程序提供的其他集成點(diǎn)連接到主軟件。插件構(gòu)建在應(yīng)用程序上,集成點(diǎn)由API提供。其他軟件組件可以通過API將它們的代碼合并到宿主軟件中,而無需修改它們的核心功能。
發(fā)展重點(diǎn)
使用插件的軟件系統(tǒng)通常由一個主程序和許多完成子功能的插件組成。在設(shè)計(jì)系統(tǒng)時(shí),需要解決主程序?qū)Σ寮淖R別、加載、卸載、調(diào)用等問題。其開發(fā)要點(diǎn)如下:
定義軟件插件的標(biāo)準(zhǔn)接口:包括定義主程序接口和插件接口,寫明主程序可以被插件調(diào)用哪些資源,成為系統(tǒng)可以識別的插件的條件。
制定插件管理機(jī)制:確定主程序獲取插件存儲位置的方式,以方便插件的加載、卸載或更新。
加載和調(diào)用插件:決定主程序如何動態(tài)加載插件和調(diào)用插件。
主要技術(shù)
插件技術(shù)主要是根據(jù)預(yù)定義的接口編寫標(biāo)準(zhǔn)化的程序,并將程序應(yīng)用于計(jì)算機(jī)軟件的運(yùn)行。插件運(yùn)行時(shí),應(yīng)保證計(jì)算機(jī)應(yīng)用功能的擴(kuò)展、主程序與插件組件的協(xié)調(diào)、軟件運(yùn)行協(xié)議規(guī)則的審批,保證程序處于正常狀態(tài)。
插件編程技術(shù):根據(jù)系統(tǒng)需求劃分目標(biāo),分離軟件的功能組件。之后定義各個環(huán)節(jié)的接口技術(shù),分別開發(fā)各個功能組件,最后集成軟件。在軟件集成過程中,確保每個功能組件都在標(biāo)準(zhǔn)程序下執(zhí)行。一般來說,為了保證集成效率,不采用傳統(tǒng)的鏈接庫或源代碼集成方式,可以使用合適的集成軟件。
動態(tài)鏈接技術(shù):動態(tài)鏈接技術(shù)需要在動態(tài)鏈接庫的基礎(chǔ)上實(shí)現(xiàn),動態(tài)鏈接庫本身不能獨(dú)立運(yùn)行,需要在函數(shù)調(diào)用的基礎(chǔ)上對主程序中的程序集進(jìn)行函數(shù)調(diào)用。
組件對象模型的構(gòu)建技術(shù):組件對象模型可以促進(jìn)計(jì)算機(jī)軟件之間的通信。在對象模型中,組件是基本單元。組件對象模型在保證組件間通信和交互的基礎(chǔ)上,可以規(guī)范同類型插件接口,強(qiáng)化插件的功能。
插件架構(gòu)
在計(jì)算機(jī)軟件中使用插件技術(shù)時(shí),需要有接口和動態(tài)鏈接庫的支持。
插件管理器:負(fù)責(zé)為插件分配資源,創(chuàng)建運(yùn)行環(huán)境,根據(jù)用戶需求調(diào)用插件。為了保證這個過程的順利進(jìn)行,需要定義一套如何調(diào)用插件、如何交換數(shù)據(jù)的規(guī)則,讓插件系統(tǒng)在這些規(guī)則的指導(dǎo)下正常運(yùn)行。插件只能通過擴(kuò)展點(diǎn)插入。一般來說,插件的開發(fā)平臺會提供插件需要的擴(kuò)展點(diǎn)。
插件接口:接口是插件不可缺少的一部分,它具有在主程序和插件之間傳遞信息和數(shù)據(jù)的功能,以保證計(jì)算機(jī)軟件應(yīng)用的穩(wěn)定性和可靠性。接口的主要目的是實(shí)現(xiàn)軟件功能調(diào)用,開發(fā)者可以根據(jù)軟件的接口規(guī)范開發(fā)相關(guān)插件。在插件功能程序開發(fā)過程中,需要建立插件與主程序之間的正確通信。為了保證接口的適用性,要盡可能滿足用戶對插件的多樣化需求,設(shè)計(jì)一個覆蓋所有類型插件的信息數(shù)據(jù)處理結(jié)構(gòu)。
動態(tài)鏈接庫:動態(tài)鏈接庫可以復(fù)用組件,在熟悉插件相關(guān)編程和調(diào)用規(guī)則的前提下,可以集中調(diào)用插件。動態(tài)鏈接庫方案適用范圍廣,可行性高。在插件的集成管理中,只要系統(tǒng)掌握了與插件相關(guān)的調(diào)用規(guī)則和編程規(guī)則,就可以優(yōu)化插件的功能。動態(tài)鏈接有兩種調(diào)用方式:靜態(tài)和動態(tài)。靜態(tài)調(diào)用是通過編譯系統(tǒng),加載DLL來實(shí)現(xiàn)的,需要的代碼少,相對簡單,但是缺乏靈活性。如果DLL中有錯誤,并且沒有DLL,DLL將在相應(yīng)的地址停止。動態(tài)調(diào)用的應(yīng)用復(fù)雜而靈活,當(dāng)DLL出現(xiàn)錯誤時(shí),程序也能正常運(yùn)行。
插件資源文件:插件資源文件,也稱為清單文件,通常包含將插件集成到框架中所需的關(guān)鍵信息。第一次創(chuàng)建插件時(shí),默認(rèn)情況下,開發(fā)平臺會在清單編輯器區(qū)域打開文件,然后開發(fā)者可以選擇關(guān)于插件的不同組信息。
插入式通信:插件之間的通信允許它們協(xié)作和交互來實(shí)現(xiàn)所需的功能。插件通信的方法包括共享數(shù)據(jù)和狀態(tài)、事件和通知、進(jìn)程間通信和端點(diǎn)。其中,事件和通知包括事件總線和觀察者模型。事件總線允許插件訂閱和發(fā)布事件總線或消息傳遞系統(tǒng),插件可以在必要時(shí)做出相應(yīng)的響應(yīng)。使用觀察者模式,插件可以注冊為特定事件或狀態(tài)變化的觀察者或監(jiān)聽器。當(dāng)觀察到的事件發(fā)生時(shí),注冊的插件會得到通知。
插件容器:插件容器是一種類似于observer的設(shè)計(jì)模式,但更側(cè)重于數(shù)據(jù)處理、狀態(tài)改變和可取消操作。負(fù)責(zé)運(yùn)行Adobe eFlash、Java、Silverlight等插件,防止插件崩潰時(shí)瀏覽器崩潰。
主要應(yīng)用
插件程序目前應(yīng)用廣泛,特別是在大型軟件開發(fā)中,可以提高群體的開發(fā)效率,縮短開發(fā)周期,降低設(shè)計(jì)難度。在實(shí)際應(yīng)用中,插件不僅可以執(zhí)行代碼,還可以處理圖像、聲音、動畫等。
網(wǎng)頁瀏覽器:瀏覽器中廣泛使用插件,網(wǎng)頁瀏覽器的插件也稱為擴(kuò)展,如Adobe Flash Player、Grammarly、廣告攔截器等。VPN使瀏覽器具有額外的功能,這些功能包括啟用內(nèi)容過濾和廣告攔截,提供另一層安全,限制用戶被允許在指定網(wǎng)站上花費(fèi)的時(shí)間,允許用戶突出顯示網(wǎng)頁并通過社交媒體和電子郵件共享它們,以及翻譯網(wǎng)頁。
內(nèi)容管理系統(tǒng):預(yù)先創(chuàng)建的插件和模板可以應(yīng)用于內(nèi)容管理系統(tǒng)(CMS)。CMS是一個工具,可以通過一個易于使用的界面構(gòu)建網(wǎng)站的所有內(nèi)容,從文本到照片到小部件。使用CMS可以快速有效地建立一個網(wǎng)站,而無需編寫自己的代碼。流行的CMS工具,如WordPress,提供了多種功能,從添加社交媒體集成到增強(qiáng)網(wǎng)站的SEO(搜索引擎優(yōu)化)等等。
媒體播放機(jī):多媒體軟件配有各種功能的模塊,包括插件管理模塊、產(chǎn)品功能模塊、人機(jī)界面模塊、通信模塊和界面管理模塊等。插件可以擴(kuò)展可播放媒體的格式,保證音頻的高質(zhì)量,糾正多媒體中音頻和視頻的同步。調(diào)整照明設(shè)置,允許媒體編碼等。例如,插件Winamp DSP允許用戶定制帶有效果和可視化的音頻回放。
裝幀設(shè)計(jì)藝術(shù):平面設(shè)計(jì)軟件中有很多插件,可以進(jìn)行色彩校正、提高圖像質(zhì)量、創(chuàng)建數(shù)字背景、快速自動蒙版綠屏攝影、創(chuàng)建紋理和邊框、添加光照等功能,可以滿足數(shù)碼攝影師、平面美工和網(wǎng)頁設(shè)計(jì)師的各種需求。Adobe Phototshop這款軟件工具,包含了多種插件和擴(kuò)展,比如——Noiseware這款獲獎插件,可以單獨(dú)使用,消除照片的噪點(diǎn)。
項(xiàng)目開發(fā):開發(fā)工具插件可用于幫助構(gòu)建模式項(xiàng)目,包括軟件組件、腳本包、模式類型和插件,并為這些項(xiàng)目提供創(chuàng)建、配置、打包、部署和調(diào)試功能。比如華為的HMS Toolkit,一個IDE工具插件,提供了一套包括應(yīng)用創(chuàng)建、編碼和轉(zhuǎn)換、調(diào)試、測試和發(fā)布的開發(fā)工具,還可以將現(xiàn)有代碼轉(zhuǎn)換成集成HMS核心服務(wù)的代碼。
電子商務(wù)平臺:插件有一些獨(dú)立的功能,可以通過調(diào)用整合形成一個成熟的電商平臺,比如ECwid電商購物車。通過與各大承運(yùn)商集成,可以自動計(jì)算運(yùn)費(fèi),包括美國和加拿大的稅率自動計(jì)算和歐盟增值稅,與TaxJar集成,可以自動申報(bào)和申報(bào)美國的銷售稅。另一個名為Easy Digital Downloads的插件可以查看和管理所有客戶的詳細(xì)記錄及其購買歷史,并跟蹤商店的收入、退款和銷售情況。