代码改变世界

C#编程概念系列(二):应用程序域

2013-05-10 00:55  Commander lang  阅读(590)  评论(0编辑  收藏  举报

系列文章索引目录:http://www.cnblogs.com/loner/archive/2013/05/09/3068211.html

定义:

    应用程序域:(Application Domain,简App Domain)一组程序集的一个逻辑容器,进程中的一个逻辑分区。通常由运行时宿主创建和操作。

AppDomain唯一的作用就是进行隔离。

 AppDomain的具体功能:

    1、隔离,一个AppDomain中的代码创建的对象不能由另一个AppDomain中的代码直接访问。达到隔离应用程序的效果。当然如果要访问别的AppDomain中的内容,可以使用“按引用封送”或者“按值封送”的语义。     2、AppDomain可以卸载

        不能卸载单独的程序集或类型,只能卸载整个应用程序域。从而卸载包含在该AppDomain中的所有程序集。
    3、AppDomain可以单独保护
        AppDomain在创建后,会应用一个权限集,它决定了向这个AppDomain中运行的程序集授予的最大权限。从而保护宿主加载的代码不被破坏。
    4、可以单独实施配置
        AppDomain在创建后,会关联一组配置设置。这些设置主要影响CLR在AppDomain中加载程序集的方式。这些设置涉及搜索路径、版本重定向、卷影复制以及加载器优化。
 

 创建和卸载AppDomain:

    
// 创建一个 Application Domain:
System.AppDomain newDomain = System.AppDomain.CreateDomain("NewApplicationDomain");

// 加载并执行一个程序集:
newDomain.ExecuteAssembly(@"c:\HelloWorld.exe");

// 卸载应用程序域:
System.AppDomain.Unload(newDomain);

 从一个AppDomain访问另外一个AppDomain中的对象: 

 
。。。
.
.
.
.
.未完待续...