plug-in is everywhere
——plug-in是一種理念
在乙個典型的應用開發過程中,我們必須在設計開發階段滿足所有既定的需求。然而軟體開發並非一勞永逸之事,客戶對功能的需求永無休止,他們會提出各種各樣稀奇古怪的需求,這就迫使軟體設計者在體系架構上下功夫。目前,plug-in(外掛程式)體系架構被認為是避免重複勞動、縮短發布週期、提高可擴充套件性、吸引使用者的良方。使用plug-in技術允許第三方開發者擴充其功能的例子比比皆是,就連鼎鼎大名的microsoft也在office、visual studio等產品中加入了add-in功能。成功的開源專案無一例外地採用了plug-in架構,如eclipse、firefox。
什麼是plug-in架構呢?簡單地講,它是乙個框架(framework),允許乙個程式在啟動時搜尋擴充套件的功能,然後允許plug-in與自己協作。
怎樣才能讓plug-in為我所用?乙個非常簡單的方法就是利用dlls。當程式啟動時,搜尋指定路徑下的任何dlls,然後查詢這些dlls是否滿足給定的介面,如果滿足就說明dll是這個程式的外掛程式。
關鍵:明確定義介面!
請記住:pci-express決不可能直接插agp顯示卡!
下面是乙個簡單的plug-in應用的初始化流程:
1、程式啟動;
2、init函式在指定的目錄下搜尋所有的dlls;
3、程式試著在每乙個找到的dll中獲取load函式,如果失敗,說明這個dll不是符合規範的外掛程式;
4、如果load函式呼叫成功,程式會快取每個有效dll對應的模組控制代碼,為後面使用外掛程式功能做準備;
5、在程式執行期間,使用者選擇乙個選單項,於是對應的功能被呼叫;
6、在程式結束時,unload函式被呼叫以便釋放load函式載入的資源。
下圖為整個framework的時序圖:
C語言入門篇
目錄 1 字面意思是啥就是啥,看其表示就可以知道其值和類www.cppcns.com型。2 有值無名,一用來初始化變數,與一種字元相關聯。www.cppcns.com include int main 1 常變數 c語言中,把用const修飾的變數稱為常變數。2 常變數具有常量屬性,不可被直接修改 ...
C語言入門篇
目錄 加 減 乘 除 取模 除法運算分母不可為零,否則程式會中斷報錯,所以要在程式中檢驗分母是否為零。取模即取餘數。右移 左移 1.移位運算是站在二進位制角度移位的 eg include int main 2.左移右移,原始變數值不發生變化除非給原始變數賦值 3.整數移位運算不能整除時,只保留整數部...
C語言入門篇
目錄 ststic修飾區域性變數,會改變區域性變數的生命週期,不改變作用域 生命週期 和全域性變數一樣具有全域性性,但在記憶體中的位置沒有改變,還在在靜態儲存區中。作用域 作用域不改變。注意 靜態區域性變數的初始化在整個變數定義時只會進行一次。1 不加static include show int ...