2011-03-09 28 views
4

我真的很喜歡WinForms中的插件架構。我想在Asp.net中使用插件架構。但我搜索插件弧。在asp.net中,我創建了asp.net MVC示例。堅果我不想使用微軟mvc存儲​​庫。我想使用經典的asp.net項目。但我沒有找到足夠的結果....如何在ASP.NET中使用插件架構?

+0

本身沒有標準的插件架構。 MEF(如Jan Remunda指出的)是一種選擇,但在某些情況下它可能是一種矯枉過正。你希望能夠做到什麼。 – 2011-03-09 07:26:12

+1

因爲在WINFORMS中沒有插入式曲面,Especialyl。你在說什麼? – TomTom 2011-03-09 07:33:53

+0

我想在沒有asp.net的情況下使用ASP.NET插件架構mvc 1-2-3 – programmerist 2011-03-09 07:44:19

回答

14

你可以滾你自己。

一個插件架構需要一些不那麼複雜的零件:

  • 的一種方式,以確定哪些插件DLL位於
  • 一個接口或基類的定義,所有的插件都必須堅持。這是最重要的一個。它決定了你的插件可以暴露什麼功能,以及它可以與你的應用程序集成的深度。
  • 插件被加載並執行的地方(時間)。 (即:不插件執行每個網頁請求呢,還是匹配一定的名字要求?抑或是頁手動調用插件嗎?)

一旦你這個想通了,實例化一個插件的實例簡單。無論你在一個Web應用程序或客戶端上運行它的工作原理是相同的:

System.Reflection.Assembly a = System.Reflection.Assembly.LoadFrom(plugin_path); 
t = a.GetType("IPlugin"); 
IPlugin plugin = (IPlugin)Activator.CreateInstance(t); 

然後,你可以使用plugin.DoSomething()實際上從插件調用功能。 (無論是渲染html的一部分還是保存到數據庫或其他東西)

+0

你可以給一些有用的示例鏈接在asp.net – programmerist 2011-03-09 07:47:35

+0

+1 - 如何理論上把這個好的輪廓 – 2011-03-09 09:05:46

+0

爲什麼重新發明輪子和寫樣板代碼就像那樣,當有這麼多完美功能的圖書館呢? – MattDavey 2011-03-09 09:05:52

3
+0

沒有MEF我可以這樣做嗎?我正在使用VS 2008 – programmerist 2011-03-09 07:21:18

+0

http://stackoverflow.com/questions/740438/something-like-mef-managed-extensibility-framework-for-net-framework-2-0 – 2011-03-09 07:40:29

+0

是的,與反思(如HS寫),但你必須編寫自己的邏輯。如果您的許多組件都具有更大的適應性,MEF則是更好的解決方案。 – 2011-03-09 07:57:57