特别是,在两个不同的应用程序域中运行代码意味着什么?

数据通常如何跨应用程序域边界传递?这与跨流程边界传递数据相同吗?我很想知道更多关于这个抽象概念以及它的用途.

EDIT: Good existing coverage of the AppDomain class in general at I don't understand Application Domains

推荐答案

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

一种简单的方式认为,它几乎就像一个位于主进程内部的轻量级进程.每个AppDomain都以完全隔离的方式存在于一个进程中,这允许您安全地运行代码(如果需要,可以在不拆卸整个进程的情况下卸载它),具有单独的安全性等.

至于您的具体要求--如果您在一个进程内的两个不同的AppDomain中运行代码,那么代码将独立运行.AppDomain之间的任何通信都将被序列化或通过MarshallByRefObject处理.在这方面,它的行为非常类似于使用远程处理.这提供了巨大的安全性-您可以运行您不信任的代码,即使它做错了什么,也不会影响您.

MSDN对Application Domains的描述中还有更多细节.

.net相关问答推荐

使用PowerShell在Windows容器内安装exe

向从 .NET 序列化的对象添加 Xml 属性

即时窗口中的动态导致Microsoft.CSharp.RuntimeBinder.Binder未定义或导入错误

是否有任何为 C# 编写的模糊搜索或字符串相似函数库?

Owin Twitter登录-根据验证程序远程证书无效

AutoMapper 的替代品

发布版本中的 Debug.WriteLine

抛出 ArgumentNullException

获取类型的默认构造函数的最有效方法

将双精度转换为带有 N 个小数的字符串,点作为小数分隔符,并且没有千位分隔符

您可以在 C# 代码中捕获本机异常吗?

将 C# 编译为本机?

在 .NET 中填充整数列表

互锁且易变

C#中的T是什么意思?

如何在 C# 中以编程方式安装 Windows 服务?

.NET 的黄瓜替代品

静态方法继承的正确替代方法是什么?

获取系统中已安装的应用程序

无法将目标平台更改为任何 CPU