C++實現外掛程式構架 之 入門篇

來源:互聯網
上載者:User
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的時序圖:

[下載範例程式碼]

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.