应用程序域隔离

时间:2012-10-08 06:05:00

标签: c# .net clr

“应用程序域提供的隔离具有以下好处:

一个应用程序中的故障不会影响其他应用程序。由于类型安全代码不会导致内存故障,因此使用应用程序域可确保在一个域中运行的代码不会影响该进程中的其他应用程序。“## http://msdn.microsoft.com/en-us/library/2bh4z9hs.aspx

上述词汇来自MSDN,

我的问题是,

  

1,句子中的“错误”是指异常还是别的什么?

     

2,什么是“一个应用程序中的故障不能影响其他应用程序”是什么意思?   这是否意味着如果在一个应用程序域中抛出异常,该异常不会导致其他应用程序域崩溃,对吧?   你能举个例子吗?

1 个答案:

答案 0 :(得分:0)

文章讨论了内存隔离问题。托管代码不能随意修改内存(没有unsafe),这与C / C ++不同,因此在一个AppDomain中运行的托管代码不会破坏其他AppDomain中的内存。即托管运行时阻止缓冲区溢出类错误,而在C / C ++中很容易实现,如int arr[4]; arr[-1]=2;

异常不限于AppDomain(或者说与/不具有AppDomain的行为相似) - 大多数异常只会影响调用抛出异常的方法的代码,默认情况下某些(即StackOverflow)会终止进程。如果未处理正常异常,则通常会导致进程终止。如果堆栈上的代码与多个AppDomain相关,则异常可以自由跨越AppDomain边界。