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

时间:2015-08-11 11:49:50

标签: c# .net process appdomain software-design

我目前正在进行多项处理。所有人都在做不同的任务。其中一些还托管WCF服务并与数据库交互。他们中的大多数是多线程进程做一些重任务。所有这些都需要一直向上(它们一起充当服务器)。某些进程还通过CLI与非托管代码进行交互。

最近,我遇到了#34;具有多个应用领域的单个流程"概念。我想知道我的情况有什么好处吗?这种多流程架构的局限性和优势是什么?

编辑:如果任何进程崩溃,则必须重新启动。目前有一个进程监视器。

1 个答案:

答案 0 :(得分:0)

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

在我看来,这主要取决于你是否运行纯.Net代码,或者你是否有本机依赖:进程隔离将防止本机崩溃时全局失败(这可能会导致整个过程失败) )。

非托管资源也是如此:如果某个地方有非托管资源泄漏,请重新启动流程"修复"泄漏。但是重新启动appdomain不会。

如果您仅仅使用托管代码(这似乎不是您的情况),那么具有多个appdomains的单个进程就可以了,并且具有消除进程创建开销的优势(创建新的AppDomain比创建过程轻?)