在.NET Core中使用MEF
題記:微軟的可托管擴展框架也移植到.NET Core上了。
可托管擴展框架(Managed Extensibility Framework,MEF)是微軟為大型應用程序(比如Visual Studio這樣的東西)提供的一個功能擴展框架,通過一個混合層提升了靈活性、維護性和可測試性。MEF既可以用于第三方插件支持擴展功能(我曾經開發的eBalance就是使用MEF實現插件功能),也能為常見的應用程序帶來松耦合插件架構的好處。MEF最早是作為一個開源的擴展庫發布,后來直接融合到.NET Framework中一起發布,所謂的命名空間(System.*.Composition)就是它了。
當然,由于歷史原因,MEF現存兩個版本:
一個是同.NET 4.0和Silverlight 4及其更高版本內置的,命名空間為System.ComponentModel.Composition。這個版本提供了標準的擴展模型,也是VS使用的。
另外一個是通過Nuget發布的輕量級的支持可移植的版本,針對靜態混合進行了優化,提供了更快的混合過程,你可以認為這是MEF2,命名空間是System.Compostion,可以被用于手機、商店應用、桌面和Web應用之中。
而現在移植到.NET Core的版本只是MEF2(這是理所當然的),沒有Catalog可用,源代碼在此:https://github.com/dotnet/corefx/tree/master/src。
要使用MEF也很簡單,直接通過Nuget添加就行:http://www.nuget.org/packages/Microsoft.Composition/
如果只是想自動加載Assembly的話,.NET Core雖然沒有再提供AppDomain還是提供了類似概念的東西,即AssemblyLoadContext。不過動態加載程序集在.NET Native下可能會有問題,因為并沒有JIT的存在。
如何在.NET Core中使用MEF的具體代碼,可以參考Ricardo Peres的博文:http://weblogs.asp.net/ricardoperes/using-mef-in-net-core
內容轉載自公眾號
dotNET每日精華文章 了解更多總結
以上是生活随笔為你收集整理的在.NET Core中使用MEF的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编程语言的发展趋势及未来方向(4):动态
- 下一篇: 在Linux和Windows的Docke