特别是,在两个不同的应用程序域中运行代码意味着什么?
数据通常如何跨应用程序域边界传递?这与跨流程边界传递数据相同吗?我很想知道更多关于这个抽象概念以及它的用途.
EDIT: Good existing coverage of the AppDomain class in general at I don't understand Application Domains
特别是,在两个不同的应用程序域中运行代码意味着什么?
数据通常如何跨应用程序域边界传递?这与跨流程边界传递数据相同吗?我很想知道更多关于这个抽象概念以及它的用途.
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的描述中还有更多细节.