我一直在研究有關MEF(託管的可擴展性框架)兩天。不過,我認爲MEF不能給我我所期望的。我們應該理解什麼,在談論MEF時
我想要一個軟件設計:將有核心應用程序,應用程序的所有模塊將作爲插件完成。例如,在電子商務應用程序訂單模塊,廣告系列模塊等全部應該添加爲插件。
問題是:我可以在Asp.NET webform上用MEF做這樣的設計嗎?
我一直在研究有關MEF(託管的可擴展性框架)兩天。不過,我認爲MEF不能給我我所期望的。我們應該理解什麼,在談論MEF時
我想要一個軟件設計:將有核心應用程序,應用程序的所有模塊將作爲插件完成。例如,在電子商務應用程序訂單模塊,廣告系列模塊等全部應該添加爲插件。
問題是:我可以在Asp.NET webform上用MEF做這樣的設計嗎?
我想一個軟件德興是:將有核心應用程序和應用程序的所有模塊都將作爲插件
這是正是場景,MEF允許的類型來完成。 MEF是圍繞構成未知類型的概念而設計的(MEF中的部分)。這些部分是你的模塊和插件。 MEF負責發現這些部件,並將所有部件連接起來。 MEF也不會將您限制爲一個模型。 MEF本身是可擴展的,這就是它的適應性。
當您將ASP.NET與MEF結合使用時,您必須考慮應用程序的生命週期是受其在IIS中的可用性控制的。您還必須考慮Web應用程序的運行時模型與桌面應用程序的運行時模型有很大不同。
我已經花了大量的時間與MEF和ASP.NET(特別ASP.NET MVC),這裏有幾個鏈接到我的文章:
我會說,實現一個很好的MEF + ASP.NET MVC集成可能比爲WebForms做同樣的事情要容易,因爲MVC的體系結構是模塊化的和可擴展的(特別是在MVC3中)。 WebForms您需要將頁面事件和生命週期考慮在內,以及如何將所有插件組合在一起。
網絡上有一些很棒的資源,如谷歌,一些可靠的例子,不錯的技巧等,如蒂姆羅伯特的文章標題爲Defining Web-scoped parts with MEF。 StackOverflow已經涵蓋了很多問題(包括答案),涵蓋了這個主題。
您也可以實現使用IoC容器類似的結果,如溫莎城堡,Ninject,Autofac等
感謝漂亮的答案。 – mavera