试图避免 AppDomains

Posted

技术标签:

【中文标题】试图避免 AppDomains【英文标题】:Trying to avoid AppDomains 【发布时间】:2009-12-29 02:35:27 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

所有的消息管道,以及带来的开销是我试图避免的。我的应用使用单声道运行很长时间没有任何问题。【参考方案2】:

我使用了 Mono.CSharp 库。您可以即时编译 c# 代码,然后在主应用程序中放置挂钩以执行它。

【讨论】:

以上是关于试图避免 AppDomains的主要内容,如果未能解决你的问题,请参考以下文章

为啥浏览器允许设置一些没有 CORS 的标头,但不允许设置其他标头?试图避免预检

当作者试图进入写锁时如何避免阻塞 ReaderWriterLockSlim 读者

当试图最小化包含不同整数形状的矩形的矩形空间时,是不是可以避免回溯?

是否有任何国际地址验证提供商?试图避免谷歌地图api [关闭]

useEffect exhaustive-deps 警告:这试图避免哪些可能的问题?

避免Android在方向更改时自动重新添加我的片段