试图避免使用AppDomains

时间:2009-12-29 02:35:28

标签: c# dll plugins mono appdomain

我有一个在Linux / mono上运行的长时间运行的C#服务器应用程序,并且我已经添加了动态加载DLL程序集以扩展应用程序的功能。我发现在运行时更新这些DLL程序集不能使用AppDomains,这看起来会妨碍我已经完成的工作。当然会有解决方法,但那不是我真正想要的。

mono可以提供我可能错过的任何替代解决方案吗? C#4.0在这方面有什么新东西吗?

2 个答案:

答案 0 :(得分:1)

您是否考虑将应用程序分解为不同的组件,并通过Web服务或TCP / IP在它们之间进行通信,而不是加载到新的程序集中来修改行为?这样,您可以通过更改组件调用的位置来更改应用程序的行为(在运行时)。例如,您可以使用新的行为,例如webservice构建新组件,然后指示所有现有组件使用它。

使用单声道运行时,它还可以解决长时间运行的应用程序的一些内存问题。

答案 1 :(得分:0)

我使用了Mono.CSharp库。您可以动态编译c#代码,并将钩子放入主应用程序中以执行它。