?? 1174.txt
字號:
日月光華 -- Internet精華區(qū)文章閱讀
--------------------------------------------------------------------------------
發(fā)信人: srcap (垃圾), 信區(qū): Internet
標(biāo) 題: 《 軟件中的插件技術(shù) 》
發(fā)信站: 日月光華站 (Fri Apr 30 11:59:30 1999) , 轉(zhuǎn)信
插件概述
插件的本質(zhì)是在不修改程序主體的情況下對軟件功能進(jìn)行加強(qiáng),當(dāng)插件的接口
被公開時(shí),任何公司或個(gè)人都可以自己制作插件來解決一些操作上的不便或增加一
些功能。比如我手頭正在寫的最新版本ENCounter,允許其他的軟件接駁進(jìn)來,駐
留的程序可以只是ENCounter一個(gè),但是當(dāng)聯(lián)網(wǎng)成功時(shí),ENCounter可以除了記費(fèi)
外,還能呼叫其他的插件模塊來執(zhí)行諸如檢查郵件等操作,這樣比駐留一個(gè)
ENCounter郵件檢查軟件更有效。
使用插件的軟件中最成功的莫過于PhotoShop了。使用過PhotoShop的人對濾
鏡一定不陌生。即使是初涉圖形制作的生手,只要去獲取一些好的濾鏡,也能夠輕
易地作出特殊效果。另一套著名的使用插件機(jī)制的軟件是WinAmp,WinAmp早期的
成功雖然在于其快速的解碼引擎,但在MP3播放器中能夠保持長久的霸主地位,也
正是由于內(nèi)置了健全的Skin和PlugIn(插件)。細(xì)心的朋友一定注意到了,后期的
WinAmp中增加的MIDI、MOD、WAVE等音樂格式的播放功能完全是靠插件實(shí)現(xiàn)的。
插件還可以支持多人合作開發(fā),只要有一個(gè)好的插件機(jī)制,不同的功能可以由
不同的人來完成,而且由于不同插件之間互不影響,方便程序的調(diào)試和糾錯(cuò)。
插件類型
從廣義的范圍來看,插件有以下三種類型:
1. 類似批命令的簡單插件。事實(shí)上這種插件的自由度非常低。使用這種方法
的軟件有Win Hacker等,運(yùn)行這種插件后,會(huì)一步步要求用戶進(jìn)行選擇/輸入,最
后根據(jù)用戶的輸入來執(zhí)行一系列事先定義好的操作。這種插件一般是文本文件。功
能比較單一,可擴(kuò)展性極小。優(yōu)點(diǎn)是插件做起來非常方便,即使是對程序設(shè)計(jì)了解
不多的人也可以制作。如WinAmp的Skin。
2. 使用一種特殊的腳本語言來實(shí)現(xiàn)的插件(暫時(shí)稱為腳本插件)。這種插件比
較難寫,需要軟件開發(fā)者自己制作一個(gè)程序解釋內(nèi)核。比如微軟惹了很多麻煩的宏
就是這種類型的。有一套著名的Office輔助工具就是完全用Office內(nèi)置的
VBScript寫成的。這種方法的優(yōu)點(diǎn)在于無需使用其它工具來制作插件,軟件本身
就可以實(shí)現(xiàn),普遍出現(xiàn)于各種辦公自動(dòng)化軟件中。
3. 利用已有的程序開發(fā)環(huán)境來制作插件。例如PhotoShop等軟件使用的方法。
使用這種方法的軟件在程序主體中建立了多個(gè)自定義的接口,使插件能夠自由訪問
程序中的各種資源。這種插件的優(yōu)勢在于自由度極大,可以無限發(fā)揮插件開發(fā)者的
創(chuàng)意,這種插件是狹義范圍的插件,也是真正意義上的插件。而這種插件機(jī)制的編
寫相對復(fù)雜,對于插件接口之間的協(xié)調(diào)比較困難,插件的開發(fā)也需要專業(yè)的程序員
才能進(jìn)行。
插件實(shí)例
網(wǎng)頁作坊(HTML SHOP)是我國第一個(gè)使用插件機(jī)制的共享軟件。
以下我們將以HTML SHOP為例子,來深入了解插件機(jī)制的開發(fā):
在軟件中添加插件機(jī)制,首先需要進(jìn)行詳細(xì)的應(yīng)用分析,確定應(yīng)該提供哪些資
源給插件開發(fā)者使用。HTML SHOP作為一個(gè)網(wǎng)頁編輯器,對網(wǎng)頁的編輯是建立在“計(jì)
劃”的基礎(chǔ)上的,因此,我們必須提供給插件開發(fā)者訪問當(dāng)前打開計(jì)劃信息的能力,
能夠自由地讀取和寫入的能力。
為了讓插件提供的功能能夠被用戶方便調(diào)用,必須將主菜單的控制權(quán)與插件開
發(fā)者共享,而網(wǎng)頁作坊的程序界面模仿了經(jīng)典軟件開發(fā)環(huán)境Delphi 3.0,因此我
們同時(shí)將工具條中的標(biāo)簽頁組的權(quán)利提供給插件開發(fā)者。這個(gè)應(yīng)用分析部分是插件
機(jī)制開發(fā)的重頭,是最難把握的部分,如果提供出來的權(quán)利太大,寫得拙劣的插件
發(fā)生錯(cuò)誤時(shí)可能威脅到主程序,如果提供出來的權(quán)利太小,又限制了插件開發(fā)者的
想象力。
在編程方面包括了兩個(gè)部分,一部分是主體程序的插件處理機(jī)制,用來進(jìn)行初
始化每個(gè)插件的過程,并且管理好每個(gè)插件接口,在插件訪問時(shí)能夠做出正確的反
饋。另一部分是插件的接口函數(shù)定義,將所有的插件接口函數(shù)進(jìn)行封裝,以便開發(fā)
者自由調(diào)用。在HTML SHOP中,這部分的封裝文件是HBPlugin.pas,當(dāng)開發(fā)者在
程序中引用了該文件時(shí),就可以直接調(diào)用其中的TOOLHOST對象,使用封裝于該對
象的插件接口函數(shù)。
而最重要的部分當(dāng)然是插件和主程序之間的通訊了。在網(wǎng)頁作坊中的插件其實(shí)
是一個(gè)遵循了某些特定規(guī)則的DLL,而主程序?qū)⑺胁寮涌谠趦?nèi)存中的地址傳遞
給插件,插件則根據(jù)這些地址來呼叫插件接口完成所需功能、獲取所需資源等。
--
I love:
games programming
and that others consider me as a pile of garbage
※ 來源:·日月光華站 bbs.fudan.edu.cn·[FROM: 10.13.21.21]
--------------------------------------------------------------------------------
[返回上一頁] [本討論區(qū)]
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -