WPF模块/插件在自己的AppDomain-框架支持



我需要编写一个可以加载插件的应用程序。我阅读了PRISM 4文档,我喜欢该框架的"区域"概念。但所有模块都加载在第一个AppDomain中,但我需要构建一个第三方插件可以崩溃而不会崩溃整个应用程序的应用程序(所以我认为多个应用程序域是最好的解决方案?)

有人对这个话题有经验吗?我应该自己在MVVM灯光之上构建它吗?PRISM 4是我要找的工具吗?

感谢并致以最良好的问候

据我所知,没有一个流行的MVVM框架(Prism、Caliburn、Calcium等)支持跨应用程序域模块生命周期,同样重要的是,还支持开箱即用的跨应用程序领域消息传递。也就是说,定制它们中的任何一个都不是不可能的:

  • 允许在不同的应用程序域中加载模块,可能基于关于某些配置选项
  • 为他们的消息组件(例如Prism中的事件聚合器)创建一个远程处理代理,以便将消息序列化到不同的应用程序域中

首先,Prism 4在其引导程序、模块目录和服务定位器组件上允许多个扩展点,因此在不同的应用程序域上加载DLL并初始化其入口点并不太难。创建事件聚合器的远程处理代理有点复杂。

我个人曾尝试创建一个不同的消息代理,它可以跨流程工作,也可以在同一个应用程序域内工作,但我不得不从头开始编写。

最新更新