c#:具有多个应用程序域的单个进程 VS 多个进程
Posted
技术标签:
【中文标题】c#:具有多个应用程序域的单个进程 VS 多个进程【英文标题】:c# : single process with multiple app domain VS multiple process 【发布时间】:2015-08-11 11:49:49 【问题描述】:我目前有多个进程。他们都在做不同的任务。其中一些还托管 WCF 服务并与数据库交互。它们中的大多数都是多线程进程,执行一些繁重的任务。它们都需要一直启动(它们一起充当服务器)。一些进程还通过 CLI 与非托管代码交互。
最近我遇到了“具有多个应用程序域的单个进程”概念。我想知道这对我有什么好处吗?与多进程架构相比,这有什么限制和优势?
编辑:如果任何进程崩溃,则必须再次重新启动。目前有一个进程观察器。
【问题讨论】:
什么是某些进程崩溃? 他们必须重新启动。有一个进程观察器 我会把它作为单独的进程,你不希望一个进程能够删除其他进程。 【参考方案1】:tldr:您有本机依赖项。如果您需要稳健性,请继续使用单独的进程。
在我看来,这主要取决于您是在运行纯 .Net 代码,还是具有本机依赖项:进程隔离将防止在本机崩溃的情况下出现全局故障(这可能会导致整个进程停止运行)。
非托管资源也是如此:如果您在某处发生非托管资源泄漏,则重新启动进程“修复”泄漏。但重启一个 appdomain 不会。
如果您只使用托管代码(这似乎不是您的情况),具有多个 appdomains 的单个进程是可以的,并且具有摆脱进程创建开销的优势(创建一个新的 AppDomains 更轻而不是创建进程)
【讨论】:
以上是关于c#:具有多个应用程序域的单个进程 VS 多个进程的主要内容,如果未能解决你的问题,请参考以下文章