A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

什么是应用程序域啊?那个东西怎么用啊?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

2 个回复

正序浏览
赵潮江 来自手机 中级黑马 2012-4-10 13:34:50
藤椅
开发人员经常需要运行外部的程序集.然而运行外部程序集很容易导致低效的资源利用以及降低系统 安全性.规避这类风险最好的方法就是创建应用程序域,在受保护的环境下调用程序集.
一. 概述 程序集是一个逻辑容器,允许在一个进程中运行多个程序集并提供有效的隔离

应用程序域具有以下的优点:

在一个应用程序中出现的错误不会影响其他应用程序.因为类型安全的代码不会导致内存错误,所 以使用应用程序域可以确保在一个域中运行的代码不会影响进程中的其他应用程序. 能够在不停止整个进程的情况下停止单个应用程序.使用应用程序域使您可以卸载在单个应用程序 中运行的代码. 注意 不能卸载单个程序集或类型.只能卸载整个域.

在一个应用程序中运行的代码不能直接访问其他应用程序中的代码或资源.为了强制实施此隔离, 公共语言运行库禁止在不同应用程序域中的对象之间进行直接调用.要在各域之间传递对象,可以复 制这些对象,或通过代理访问这些对象.如果复制对象,那么对该对象的调用为本地调用.也就是说, 调用方和被引用的对象位于同一应用程序域中.如果通过代理访问对象,那么对该对象的调用为远程 调用.在此情况下,调用方和被引用的对象位于不同的应用程序域中.域间调用所采用的远程调用基 础结构与两个进程间的调用或两台计算机间的调用的基础结构相同.因此,被引用的对象的元数据必 须对于两个应用程序域均可用,以便用 JIT 正确编译该方法调用.如果调用域对被调用对象的元数 据没有访问权,则编译可能失败,并引发类型为 System.IO.FileNotFound 的异常.

代码行为的作用范围由它所在的应用程序决定.换言之,应用程序域将提供应用程序版本策略等配 置设置,它所访问的任意远程程序集的位置,以及加载到该域中的程序集的位置信息. 向代码授予的权限可以由代码运行所在的应用程序域来控制.

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
它是一个用于隔离应用程序的虚拟边界。为了禁止不应交互的代码进行交互,这种隔离是必要的。.Net的应用程序在域层次上进行隔离,一个域中的应用程序不能直接访问另一个域中的代码和数据。这种隔离使得在一个应用程序范围内创建的所有对象都在一个域内创建,确保在同一进程中一个域内运行的代码不会影响其他域内的应用程序,大大提高了运行的安全。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马