2011-08-25 57 views
2

我一直在研究有關MEF(託管的可擴展性框架)兩天。不過,我認爲MEF不能給我我所期望的。我們應該理解什麼,在談論MEF時

我想要一個軟件設計:將有核心應用程序,應用程序的所有模塊將作爲插件完成。例如,在電子商務應用程序訂單模塊,廣告系列模塊等全部應該添加爲插件。

問題是:我可以在Asp.NET webform上用MEF做這樣的設計嗎?

回答

6

我想一個軟件德興是:將有核心應用程序和應用程序的所有模塊都將作爲插件

這是正是場景,MEF允許的類型來完成。 MEF是圍繞構成未知類型的概念而設計的(MEF中的部分)。這些部分是你的模塊和插件。 MEF負責發現這些部件,並將所有部件連接起來。 MEF也不會將您限制爲一個模型。 MEF本身是可擴展的,這就是它的適應性。

當您將ASP.NET與MEF結合使用時,您必須考慮應用程序的生命週期是受其在IIS中的可用性控制的。您還必須考慮Web應用程序的運行時模型與桌面應用程序的運行時模型有很大不同。

我已經花了大量的時間與MEF和ASP.NET(特別ASP.NET MVC),這裏有幾個鏈接到我的文章:

  1. Modular ASP.NET MVC using the Managed Extensibility Framework (MEF), Part One
  2. Modular ASP.NET MVC using the Managed Extensibility Framework (MEF), Part Two
  3. Modular ASP.NET MVC using the Managed Extensibility Framework (MEF), Part Three
  4. MVC3 and MEF
  5. Plug and Play Services with MEF and WCF

我會說,實現一個很好的MEF + ASP.NET MVC集成可能比爲WebForms做同樣的事情要容易,因爲MVC的體系結構是模塊化的和可擴展的(特別是在MVC3中)。 WebForms您需要將頁面事件和生命週期考慮在內,以及如何將所有插件組合在一起。

網絡上有一些很棒的資源,如谷歌,一些可靠的例子,不錯的技巧等,如蒂姆羅伯特的文章標題爲Defining Web-scoped parts with MEF。 StackOverflow已經涵蓋了很多問題(包括答案​​),涵蓋了這個主題。

您也可以實現使用IoC容器類似的結果,如溫莎城堡,Ninject,Autofac等

+0

感謝漂亮的答案。 – mavera

相關問題