我一直在从 Windows 窗体迁移到 WPF,并试图利用 Prism 来满足应用程序面向插件的要求。
我的问题是似乎没有支持它。我还听说在某些情况下它非常泄漏。由于我正在开发企业应用程序,这是不可接受的。
如果是这种情况,并且开始使用 Prism 是一个坏主意,是否有任何替代方案来制作复合应用程序?仅使用 MEF 是我能想到的。
使用 Prism,您可以选择使用 Unity 和/或 MEF 作为 IoC/DI 框架……它还具有很强的可扩展性……因此您可以根据需要插入不同的 IoC 容器。
泄漏的一些问题通常可以归结为不以某种方式使用 WPF,例如需要使用弱委托/弱事件模式等。
您可以使用 MEF 推出自己的插件框架,但您可能需要重新发明一些 Prism 已经为您做的事情,例如 EventAggregator 等。
你可以选择一个替代框架,它们都有自己的长处和短处。
还有另一种 Microsoft 技术旨在支持插件,即 System.AddIn/Managed Add-in Framework (MAF)....但是您必须添加更多的脚手架。
有人提出了一个在这里使用 MEF 的框架:
如果您想查看具有自己非常可插入/模块化架构的企业级项目,请查看 SharpDevelop 以获得灵感。
....如果你真的想要,结合几个框架中最好的部分并不是超出可能性的范围。