在C#中更改运行时的.dll文件,并在两个.dll之间进行通信

时间:2016-02-01 13:37:31

标签: c# dll

我想构建一个服务器应用程序,其运行时间几乎达到100%。 该应用程序将使用C#构建,并将使用具有其中功能的模块(.dll文件)。

如果我在某一点确定在模块中添加某些功能或修复错误,我希望关闭应用程序,覆盖.dll文件然后重新启动应用。 如果我可以停止模块,更新它并恢复 - 那就太棒了!

我正在寻找的是C#的组件/服务配置器设计模式。 它的工作原理如下图所示:

enter image description here

ComponentRepository可以注册Component,使用init()将其加载到应用中,使用suspend()暂停,使用fini()卸载,然后恢复他们与resume()

应用程序将加载模块,运行它直到我有模块更新,暂停和挂起模块,覆盖现有模块,并加载新模块。

Microsoft Prism可以加载模块,但正如他们在一个小方框中所述:

  

加载并初始化模块后,无法卸载模块组件。

mentioned here

  

如果不卸载所有组件,则无法卸载单个组件   包含它的应用程序域。

因此,Microsoft提出的选项是application creates an AppDomain并使用它,稍后将其卸载。

问题

如果我为我使用的每个模块创建了一个单独的AppDomain,我该如何在它们之间进行通信? MVVM Light's MessengerPrism's EventAggregator会有效吗?

0 个答案:

没有答案