2008-10-07 15 views
21

什麼是允許和實現插件系統爲您的應用程序的標準方法是什麼?在您的應用程序中實現插件的設計模式?

我在去年的應用程序,我做了一個簡單的界面,他們必須實現所有插件。然後我加載apps目錄中的所有程序集,拋出所有不實現該接口的程序集。

一個在接口中的方法是週期性地被調用的所有加載的程序集來執行的插件可以具有任何動作的DoWork()方法。

什麼是「正確」的方式做一個插件系統?你只是爲插件創建一個接口?您是否應該定期在所有插件中調用特定的方法?有更復雜的方法嗎?


編輯:

謝謝馬特漢密爾頓的參考System.Addin命名空間。這很可能是我實現我的插件的方式。不過,我仍然好奇一般的插件架構,並不會介意他們應該設計的最佳方式的一些背景,implmemented ..你應該如何與他們聯繫一次加載等

回答

9

退房系統。按照this response添加命名空間到類似的問題。

5

格倫座和布拉德·艾布拉姆斯在微軟最近發佈了託管擴展框架,它提供一個處理你正在談論的內容的框架。

的文檔和下載都可以here

Glenn'sBrad's博客也是MEF巨大的資源。

4

從嚴格的設計模式的角度來看,你可能想看看OSGi(這是高度面向Java,但被認爲是一個非常,非常好的插件/模塊系統)。可能是矯枉過正爲您所要實現的目標,但有一個的真正的好東西很多中有關於如何處理動態加載和卸載模塊在運行中間,等...