2009-09-01 61 views
9

簡介: 現在我知道這個問題可能是非常廣泛的,它會太硬,沒有我,詢問一些具體的事情來回答。所以我所要求的僅僅是一些方向,或者一個簡短的高層次設計解釋,或者已經有一些框架可以幫助我開始......我不確定..我從來沒有設計過一個插件架構之前,所以也許有一些資源/例子,你可以指向我的網絡,這將有助於我學習,以便我可以拿出我自己的解決方案。我的問題的如何設計一個插件架構,ASP.NET MVC與Web應用程序

詳情: 我的目的是我想創建一個插件架構,我在構建ASP.NET MVC一隻新的寵物項目。

我想要設計它,以便它對所有或至少大部分應用程序組件具有某種插件功能。

我想這樣做的原因是,我可以在停機時間接近零的情況下進行部署。這個想法是,當我想部署最新版本時,我會將新的DLL放入特定的文件夾中,並且應用程序會加載新的插件,就是這樣。

對於exapmle,可以說我爲我的Web應用程序添加了一個新的「聯繫人」功能,用戶可以在其中搜索,添加和刪除聯繫人。我希望能夠通過插件進行部署。

對於Web應用程序甚至可能這樣嗎?還是我只是在做夢?

+0

我一直在想同樣的事情,並有幾個想法。通過spurious.thought [at] gmail直接與我聯繫 – 2009-09-02 18:48:16

回答

3

這絕對有可能。

您將需要定義一個非常全面的界面,它代表您的插件必須做的所有事情。您應該通過區分什麼是「核心」到您的應用程序以及可擴展點的位置來處理它。例如,哪些插件可以訪問?他們會在頁面上標籤,還是在側邊欄中鏈接?爲了適應插件容器,每個插件需要具有哪些屬性?

通常,通過查找實現插件接口的程序集,通過反射來枚舉插件。

僅僅爲了鼓勵,我們用一個企業產品做了這個工作,該產品爲網站的「管理」界面提供了一個通用框架。開發人員只需要放入一個構建特定屬性頁面的插件DLL,並且它們出現在管理界面菜單中,所有的導航都照顧到了,他們的dll只需要擔心自己的域邏輯。

1

總是有定義插件所遵循的一些接口的dll方式。

但是對於web應用程序,特別是ASP.NET MVC,你需要一個控制器,視圖等等。可能這些可以包含在使用準備好的控制器工廠來處理的dll文件中,但是很難開發這些插件。 一些靈感代碼(或DB)嵌入的內容:Haacked about that

ASP.NET MVC 2版將支持的地區,在那裏你可以把應用程序的某些部分到應用程序中的不同的文件夾。這樣你就可以上傳一些文件,應用程序將識別這些新文件。在那裏閱讀更多Haacked blog