.net - 什么是 .NET 应用程序域?

标签 .net appdomain

特别是,在两个不同的应用程序域中运行代码有何影响?

数据通常如何跨应用程序域边界传递?它与跨进程边界传递数据相同吗?我很想更多地了解这个抽象及其用途。

编辑: AppDomain 类的现有覆盖范围一般在 I don't understand Application Domains

最佳答案

AppDomain基本上提供了一个隔离区域,其中代码在进程内部运行。

一种简单的方式来思考它几乎就像是主进程中的一个轻量级进程。每个 AppDomain 都完全隔离地存在于一个进程中,这使您可以安全地运行代码(如果需要,可以在不拆除整个进程的情况下卸载代码),并具有单独的安全性等。

至于您的具体情况 - 如果您在一个进程内的 2 个不同的 AppDomain 中运行代码,则该代码将独立运行。 AppDomain 之间的任何通信都将通过 MarshallByRefObject 进行序列化或处理。在这方面,它的行为非常类似于使用远程处理。这提供了巨大的安全性 - 您可以运行您不信任的代码,并且如果它出错,也不会影响您。

MSDN 对 Application Domains 的描述中有更多详细信息。 .

关于.net - 什么是 .NET 应用程序域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1094478/

相关文章:

c# - LoaderOptimizationAttribute 的作用

.net - 内存缓存还是并发字典?

c# - 应用程序域级模拟

c# - 从另一个 AppDomain 接收程序集引用时出现异常

c# - Linq-to-SQL 无法反射(reflect)一个存储过程中的更改

asp.net-web-api - 不同应用程序域中的 Web API Controller

c# - 我可以通过哪些方式从应用程序域中的插件发送数据,从而触发 C# 中主应用程序中的事件?

c# - 无限期地在任务上调用 .ContinueWith 是模拟队列和循环线程的有效方法吗?

c# - Unity3D - 我可以使用 .NET 4.5 程序集作为外部库吗?

c# - 如何在 C#/.NET 中声明常量?