【问题标题】:Achieving application reliability with System.AddIn and process isolation使用 System.AddIn 和进程隔离实现应用程序可靠性
【发布时间】:2011-04-30 21:35:08
【问题描述】:

我已经阅读了很多关于 System.AddIn(又名托管插件框架)的信息。它允许您以不同的隔离模式激活加载项,包括单独的 AppDomain 或单独的进程。

我发现的大多数文章都暗示了进程隔离可用于实现应用程序可靠性这一事实,其中插件可能会因未处理的异常而崩溃,但应用程序不会崩溃并且可以卸载有问题的插件-进入并继续前进。

我还没有找到一篇真正说明如何做到这一点的文章。我一直试图通过反复试验来弄清楚,但到目前为止,我尝试过的所有事情,如果加载项引发未处理的异常,主机应用程序就会崩溃。我让每个加载项都在自己的进程中运行,但似乎还有更多我不理解的难题。

是否可以使用 System.AddIn 来创建一个主机,使其能够在其加载项中的一个未处理异常中幸存下来?是否有代码示例或文章在某处说明了这一点?如果 System.AddIn 无法做到这一点,是否有其他架构可以在 .NET 应用程序中实现这一点?

【问题讨论】:

    标签: .net add-in system.addin


    【解决方案1】:

    你找到this的文章了吗?

    您让您的外接程序在不同的 AppDomain 中运行并侦听此域中引发的未捕获异常。

    【讨论】:

    • 是的,我确实读过了。那篇文章描述了一种记录哪个插件杀死了你的应用程序的方法,但它不允许你保存应用程序免于死亡。从 .NET 2.0 开始,进程内任何 AppDomain 中的任何未处理异常都将终止整个进程。 AFAIK,您必须使用单独的进程才能保护应用程序免受加载项崩溃。
    猜你喜欢
    • 2010-10-17
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    相关资源
    最近更新 更多