c#:带有多个应用域的单进程VS多进程



我目前有多个进程。他们都在做不同的任务。其中一些还承载WCF服务并与数据库交互。它们中的大多数都是执行一些繁重任务的多线程进程。所有这些都需要随时启动(它们一起充当服务器)。有些进程还通过CLI与非托管代码交互。

最近我遇到了"单进程多应用域"的概念。我想知道这对我的情况有用吗?与多进程架构相比,它的局限性和优势是什么?

编辑:如果任何进程崩溃,那么它必须重新启动。

tldr:您有本机依赖项。如果您需要健壮性,请继续使用单独的进程。

在我看来,这主要取决于你是在运行纯。net代码,还是你有本地依赖:进程隔离将防止在本地崩溃(这可能会使整个进程崩溃)的情况下全局失败。

对于非托管资源也是如此:如果您在某个地方有非托管资源泄漏,则重新启动进程"修复"泄漏。但是重新启动appdomain不需要。

如果您只使用托管代码(这似乎不是您的情况),则可以使用多个appdomain的单个进程,并且具有摆脱进程创建开销的优点(创建新的appdomain比创建进程更轻)

最新更新