【问题标题】:c# : single process with multiple app domain VS multiple processc#:具有多个应用程序域的单个进程 VS 多个进程
【发布时间】:2015-08-11 11:49:49
【问题描述】:

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

最近我遇到了“具有多个应用程序域的单个进程”概念。我想知道这对我有什么好处吗?与多进程架构相比,这有什么限制和优势?

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

【问题讨论】:

  • 什么是某些进程崩溃?
  • 他们必须重新启动。有一个进程观察器
  • 我会把它作为单独的进程,你不希望一个进程能够删除其他进程。

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


【解决方案1】:

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

在我看来,这主要取决于您是在运行纯 .Net 代码,还是具有本机依赖项:进程隔离将防止在本机崩溃的情况下出现全局故障(这可能会导致整个进程停止运行)。

非托管资源也是如此:如果您在某处发生非托管资源泄漏,则重新启动进程“修复”泄漏。但重启一个 appdomain 不会。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多