陸偉霞
(湖南交通工程學院,湖南 衡陽 421009)
當今信息技術的快速發展,一方面是計算機、手機等信息設備性能不斷提升,芯片處理能力不斷加強,設備普及率越來越高,另一方面是應用軟件更新發展迅速,與社會生活需求緊密貼合。插件技術作為計算機平臺下的一個重要技術,也得到了長足發展,應用場景和使用頻率不斷提升。計算機通過使用不同的插件,擴展了計算機的應用范圍,能幫助專業軟件提高信息安全,降低軟件故障的概率,提升人們的使用感,基于這些優點,插件技術在近幾十年間,得到了廣泛應用和發展。
計算機使用的插件技術,本質上來說其實是程序的一種類型,是在相應計算機程序接口的標準下,幫助計算機應用軟件實現應用功能。一般情況下,計算機的應用軟件程序,通過規范標準的接口,與插件進行對接并處理信息,這也是計算機應用軟件擴展的形式[1]。插件技術的出現,最早可以追溯到20世紀70年代,當時插件只是一個編輯器上運行的一個程序,幫助編輯室進行緩沖,使得編輯器能夠在緩沖區內,進行文本的編輯。人們為了提高應用軟件的擴展性,使得軟件更加專業化和標準化,形成完整的系列,開始將插件技術融入其中,這樣既可以利用插件的可擴展性提高軟件維護效率,也有利于后期軟件的更新,延長軟件的使用壽命,還可以根據用戶的特殊需求,進行針對性的發展和擴展,提高用戶使用便捷性。例如普通大眾在使用計算機應用程序時,時常會遇到提示“XXX.DLL文件丟失”的提示,這就說明計算機的系統文件中,某個插件缺失了,軟件無法正常使用。
插件的接口是實現應用軟件功能不可缺少的重要部分,系統通過接口實現將外部數據進行抽象化處理,達到內部系統與外部信息進行有效溝通的保障[2]。一般情況下,插件的接口主要承擔外部信息與內部處理語言直接的轉換、翻譯作用,這是一種間接性的處理手段,這樣的方式與直連溝通方式相比,會給系統產生額外的運行和處理負擔。插件的接口根據應用的不同分為兩種,一種是計算機內部硬件之間連接的硬件接口,另一種是計算機系統中,軟件組件之間的軟接口。
插件的動態鏈接庫主要是由代碼組成,其中包含的代碼和數據庫,提供給一個或多個計算機程序使用,這并不需要執行系統文件。這樣一種方式,可以讓應用軟件快速地調取不屬于自身的代碼函數[3]。例如,在Linux系統中,采用動態鏈接庫的異步事件驅動模型,讓更多的業務內容,按照動態鏈接庫的形式進行加載,可以讓應用程序擴展更加方便,兼容性更好,并且確保系統主程序的邏輯不改變,使用非常方便。動態鏈接庫根據使用方式不同分為動態庫和靜態庫,靜態庫是指在每個程序進行鏈接的時候,將鏈接庫在目標程序中進行一次拷貝,當目標程序生成的時候,程序可以脫離鏈接庫文件單獨運行,因為生成的程序中已經包含了該庫的內容,動態庫則正好相反。
計算機插件的類型有多種,有應用在瀏覽器上的插件、應用在圖像上的插件、應用在多媒體上的插件、應用在源代碼上的插件等。插件已經廣泛運用到各種應用環境當中,普通電腦用戶經常接觸到的插件有IE插件、Photoshop插件、Flash插件、MediaPlayer插件等。通常,插件可分為3類。
在計算機應用軟件開發中,使用最為廣泛的就是類似命令插件。類似命令插件與其他插件的不同在于,這個插件的自由度相對比較低,導致這型插件的在實際使用過程中,會導致應用軟件的運行速度和效率,出現一定程度的下降,并且使用起來并不方便[4]。雖然類似命令插件存在這樣的弊病,但是它也存在一個優勢,就是這型插件使用十分方便,對程序人員的使用要求較低,特別適合一些剛剛接觸軟件制作的人員使用,能夠有效降低應用軟件程序的開發時間。類似命令插件的運行,主要是依靠程序員按照要求,輸入相應的命令數據,使得插件根據輸入命令的意義來進行執行相應的操作。例如,使用Go語言編寫的lazygit插件,運用gocui庫,利用Git命令行,在圖形界面上進行操作。
腳本語言(Scripting language)屬于計算機編程語言,目的是將我們人類所要表達的信息,轉換為計算機系統能夠識別的命令程序,將復雜的事物信息,轉換為簡單的字符信息方式。所以,腳本語言會比一般接觸到的其他系統編程語言要相對簡單,如C語言、C++語言、Java等。除此之外,腳本語言還有一些特殊的特種,比如交班語言的語法結構相對比較簡單,人們學習和使用的門檻較低,在程序開發上執行效能較高。腳本語言的種類有工作控制語言和shell、GUI腳本(有時也稱“宏語言”)、應用程序定制的腳本語言、Web編程腳本、可嵌入式腳本等等。人們為了消除使用類似命令插件會帶來的問題和不足,就采用腳本語言來進行插件編輯,通過這樣的方式,首先要對使用的腳本語言進行一些特殊的編制,這個過程相對比較專業和復雜,插件的內核部分,需要專業的軟件開發商進行操作。腳本語言插件的優點有不少,主要的優點是這型插件的制作,除了內核程序外,不再需要其他工具,只要插件本身就能夠實現所需要的功能。所以,現在大家普遍使用的辦公軟件,大多是采用這種腳本語言插件技術。
例如Skript,這款插件是由Njol開發的一種,僅適用于Minecraft(Java)服務器的編程語言。服務器管理人員在使用這款插件時能夠不使用Java語言的前提下,簡單的對Minecraft進行管理,這主要是依靠觸發器、條件和效果3個部分,當觸發器觸發,所有條件均滿足,效果就會被觸發。Skript也可以用來做自定義命令,將觸發器改寫成有特殊意義的執行命令。
在當今應用軟件開發中,使用最為廣泛的插件是程序環境插件,這型插件的主要有點是技術自由度高,軟件開發者利用這型插件,能夠充分發揮開發者的自我想法,開發出功能強大的軟件,程序環境插件相比與命令插件和腳本插件,技術更為復雜,各種接口之間的協調性要求更高,一般這樣的插件很難由個人獨立完成[5]。在程序環境插件的使用中,程序員必須在應用程序中,建立多個自定義的接口,插件通過這些接口與外部程序鏈接,相互獲取并處理信息。這種程序環境插件就是我們常說的計算機應用軟件上面的插件。
聚合式插件的在程序設計和程序編寫方面的工作比較復雜,對程序員的計算機知識和專業知識水平要求較高,這個和腳本式插件相類似,所以這型插件的開發,通常是由計算機轉專業編程人員負責編寫程序。采用聚合式插件的主要目的是為了優化鏈接端口,使計算機能夠靈活、高效地使用插件接口,提高應用軟件使用效率。
在計算機系統中使用插件技術,能夠使計算機的主程序通過插件接口快速地接收數據,并進行數據處理,處理結果再由插件接口反饋給使用程序。由于各個插件之間,都能獨立滿足計算機系統提出的需要,并依靠插件程序自身的處理能力,幫助計算機系統和應用程序提高運行效率,快速反饋用戶信息,提高用戶感知率。
要讓計算機系統上安裝的應用軟件充分發揮功能,使用合理的插件必不可少,因為通過插件與應用軟件相結合,能夠在系統不同的層面下,充分發揮功能,并且確保相互不會干擾,保障計算機系統和應用程序提高運行效率,使用戶在應用層面感知良好,并且能夠幫助應用軟件實現更專業、更高效的目標,這是未來計算機系統的發展趨勢。由于計算機系統是持續開發并不斷進行迭代更新的,所以使用的插件也要保持持續的更新,來滿足新程序及功能的要求。
由于插件主要作為計算機系統的輔助應用,劃分出計算機主系統與子系統,提供計算機系統的管理效率和信息處理效率。在計算機系統運行過程中,插件通過獨立運行的接口,與插件外面系統進行交互,通過調整接口處理流程,能夠擴大計算機的信息處理能力,滿足用戶日益提高的信息處理需求。
一般在計算機系統中,對插件技術的調用過程通常分為多個步驟,首先在計算機系統開機后,插件系統會接收到調用命令,此時所有插件會逐一開始試運行,而系統自帶插件模塊搜索功能,可以快速搜索相應的插件并獲取相應的匹配信息、文本資料。如果系統內的插件系統在搜索過程中未能找到相應的數據信息,通常會將這些數據以非法數據進行有效處理,確保能夠加強對計算機系統的保護功能,而對于那些已經通過驗證且合法的數據信息,在插件系統管理平臺上可以正常運行,此時用戶可以結合自身需求選擇適宜的插件,將其安裝于計算機系統中,有利于形成完整的插件體系。用戶在人機交互界面中選擇相應的插件、運行插件時,插件管理系統會自動定位插件,及時加載插件數據信息,在軟件啟動、應用中調用相應的插件。由此可見,在計算機系統中,對于插件的添加、刪除均要在插件管理系統的幫助下完成插件技術調用過程。為了提高對計算機系統的安全保護效果,通常需要將插件管理系統安裝在系統適宜的位置中,比如安裝在配置文件以及注冊表中,如此一來在計算機系統運行當中,通過插件管理系統的應用,在加載、運行插件數據時進行控制,記錄檢測相應的數據信息。計算機程度在啟動過程中有可能會出現插件自啟動現象,這種現象出現的主要原因在于計算機系統觸及插件接口元素,此時可以直接調用主函數信息,從而發揮插件所具備的各種功能。
插件在實際使用中,與普通用戶接觸最多的有兩種,一個是動態鏈接庫“DLL”,另一種是組件對象模型“COM”。
目前,計算機系統普遍使用的是微軟的Windows操作系統,在這個操作系統中就有著許多個動態鏈接庫DLL,這些插件為系統中的各種程序提供支撐,有些程序還包括多個不同功能的模塊,而這些模塊也在相應的動態鏈接庫DLL中并發及分發。Windows操作系統使用DLL,有助于代碼實現模塊化,提高內存的使用效率,減少占用磁盤空間,讓操作系統和應用程序運行速度更快。例如,控制日歷信息,就是Windows系統文件中的ActiveX控件(.ocx)文件;系統中控制面板里的每個操作項目,是由Windows系統文件中的控制面板(.cpl)文件負責;負責控制硬件設備的驅動程序,就是設備驅動程序(.drv)文件負責。
由于組件對象模型COM提供了相對統一的接口,可以幫助不同軟件使用同一個交互方式,便于各組件之間相互交流。所以,COM是Windows開發中的基礎技術,程序開發者可以使用不同的編程語言(如C++和.NETFramework中的編程語言)來創建COM庫。COM接口主要源自IUnknown接口,這種接口由3種函數成員組成,即QueryInterface,AddRef和Release。例如,當用戶點擊屏幕上的按鍵之后,按鍵會將客戶端的接收器對象調用IButtonSink::OnClick,Button控件定義輸出接口。對于處理信息的客戶端,需要有一個信息輸出的接口,將這個接口連接到控制鍵上。之后,點擊這個控制鍵時,控制鍵會將信息轉給需要的客戶端進行處理。同時,COM還有一些特殊用途的接口,就像IAdviseSink可能由對象用來通知客戶端數據,并查看對象中的更改。
計算機系統內的插件,作為一個特殊的系統組織,有著多種優勢特點,對計算機應用程序的開發、擴展、更新、使用等方面,都有著重要的意義。應用軟件開發商基于插件技術,可以開發出更加專業、更加標準、更加體系化的產品,通過不同類型、不同系列插件之間的相互組合使用,可以快速地開發出原型系統,以此來滿足不同用戶的使用需求,這樣既延長了應用軟件的使用壽命,又擴展了應用軟件的使用范圍,節省了資金成本和時間成本,有效減少了資源浪費。所以,現代電腦工作者必須加強對插件技術的研發和創新,以保證其在計算機軟件中的作用,從而促進我國電腦產業的平穩、可持續發展。