zoukankan      html  css  js  c++  java
  • .Net应用程序域

    一、什么是应用程序域?

        应用程序域是一个逻辑容器,它允许多个程序集在同一个进程内进行,但会组织它们直接访问属于其他程序的内存,此外应用程序域还提供了错误隔离机制,这是因为未处理的异常不会影响到其他应用程序域。所以在其他应用程序域的应用程序可以不受干扰地继续运行!
     
    使用应用程序域有什么好处?
        1.应用程序域的优势在于,每个应用程序都可以分配一个不同的安全访问级别,(即使它和其他应用程序域都运行在一个进程中。)
        2.应用程序域比进程更高效,允许多个程序集运行在各自的独立应用程序域中,就省去了启动独立进程的开销!
    .net framework 运行时管理应用程序域,然而进程却是由操作系统来管理的。
     
    如何创建应用程序域?
        示例:
    1. AppDomain dm =AppDomain.CreateDomain("NewDomain");
    2. Console.WriteLine("Host domain:"+AppDomain.CurrentDomain.FriendlyName);
    3. Console.WriteLine("Child domain:"+ dm.FriendlyName);
    如何将程序集加载到应用程序域中?
    1. AppDomain dm =AppDomain.CreateDomain("NewDomain");
    2. dm.ExecuteAssembly("Assembly.exe");
       1.AppDomain.ExecuteAssembly的方法重载还允许传递命令行参数,除了提供程序集的完整路径之外,还可以添加该程序集的引用,然后使用AppDomain.ExecuteAssemblyByName方法并传递名称:
    1. AppDomain dm =AppDomain.CreateDomain("NewDomain");
    2. dm.ExecuteAssemblyByName("Assembly");
    如何卸载应用程序域?
    1. AppDomain dm =AppDomain.CreateDomain("NewDomain");
    2. AppDomain.Unload(dm);
    单独的程序集或类型不能被卸载!

    二、配置应用程序域。

        1.为程序集提供宿主机证据?
            证据是指由运行时聚集的关于一个程序集的信息,用来确定该程序集属于哪个代码组织,代码反过来又决定了程序集的特权。
        2.在应用程序域中控制分配给程序集权限最简单发方法就是使用System.Security.Policy.Zone对象
    1. object[] hostEvidence ={newSystem.Security.Policy.Zone(System.Security.SecurityZone.Internet)};
    2. System.Security.Policy.EvidenceInternetEvidence=newSystem.Security.Policy.Evidence(hostEvidence,null);
    3. AppDomain dom =AppDomain.CreateDomain("MyDomain");
    4. dom.ExecuteAssembly("SecondAssembly.exe",InternetEvidence);
     
        
     





  • 相关阅读:
    软件工程课后作业3:如何返回一个整数数组中最大子数组的和
    软件工程课后作业2:四则运算题目扩展:可指定题目数量并且支持真分数运算
    软件工程课后作业1:三十道四则运算题目
    团队作业3返回整数数组中最大子数组的和(多个数组)
    求一个二维数组所有子数组和的最大值(郭少周,陈泽)
    郭少周和陈泽两人合作课堂练习和课下作业
    学生成绩查询系统个人NABCD
    返回一个整数组的最大子数组和
    个人项目3
    返回一个二维整数组中最大子数组的和
  • 原文地址:https://www.cnblogs.com/BookCode/p/5949475.html
Copyright © 2011-2022 走看看