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

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

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 TOM 在 SSAS 表格中创建分区

在 Git for Visual Studio 2012 中恢复到以前的提交

如何将 Javascript 日期时间转换为 C# 日期时间?

.NET 应用程序的链接器状态(又名请先生,我可以有一个链接器2009 年版)

每第 N 个字符/数字拆分一个字符串/数字?

使用返回随机结果的函数进行单元测试

在 WPF 窗口中获取当前聚焦的元素/控件

为什么 .NET 中没有可序列化 XML 的字典?

如何在 .NET 中将字符串转换为字节数组?

将跟踪输出重定向到控制台

在 JavaScript 中使用 String.Format?

DBNull 的意义何在?

C# 属性实际上是方法吗?

从 Windows 窗体打开 URL

如何制作通用类型转换函数

从 OpenFileDialog 路径/文件名中提取路径

ReaderWriterLockSlim 什么时候比简单的锁更好?

获取磁盘上文件的大小

确定使用 ContextMenuStrip 的控件

序列化一个可为空的 int