欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置: 首页 »  .NET本质论第一卷:公共语言运行库教程 » 正文

热门教程

  • DXperience控件使用教程
  • JQuery EasyUI 1.3.6官方API文档中文版
  • 关系数据库基础教程
  • AspxGridView使用教程
  • C#从入门到精通
  • (X)HTML初级教程
  • ASP.NET2.0入门经典(第4版)
  • .NET本质论第一卷:公共语言运行库教程
  • EasyUI开发经验汇总
  • Oracle数据库应用教程
本教程章节列表
  • 1: NET本质论第一卷:公共语言运行库译者序
  • 2: .NET本质论第一卷:公共语言运行库教程目录
  • 3: 第一章:CLR是一个更好的COM
  • 4: 公共语言运行库
  • 5: 编程模型的演进
  • 6: 第二章:组件-模块定义
  • 7: 程序集的定义
  • 8: .net本质论-程序集名字
  • 9: .net本质论-公钥和程序集
  • 10: CLR加载器
  • 11: 将名字解析成位置
  • 12: 版本化的问题
  • 13: 第三章 类型基础
  • 14: 类型和初始化
  • 15: 类型和接口
  • 16: 类型和基类型
  • 17: 第四章:用类型编程-运行时的类型(1)
  • 18: 用类型编程-运行时的类型(2)
  • 19: 用类型编程-运行时的类型(3)
  • 20: .net本质论-用元数编程(1)
  • 21: .net本质论-用元数编程(2)
  • 22: .net本质论-用元数编程(3)
  • 23: 物殊的方法-属性(1)
  • 24: 物殊的方法-属性(2)
  • 25: 元数据和可扩展性
  • 26: .net本质论-元数据与可扩展性(2)
  • 27: .net本质论-元数据与可扩展性(3)
  • 28: .net本质论第五章:实例
  • 29: .net本质论-System.ValueType类型与System.Enum类型
  • 30: 变量、参数和字段
  • 31: C#中值变量与引用变量的区别
  • 32: C#中相等性与同一性的区别
  • 33: 值类型的比较与排序
  • 34: 克隆-浅表副本与深层副本
  • 35: 装箱-将值类型转为引用类型
  • 36: .net本质论-数组的定义与使用
  • 37: 一维数组、多维数组、矩形数组与交错数组
  • 38: 数组的详细使用示例
  • 39: .net的对象生命周期原理
  • 40: 对象生命周期与垃圾回收
  • 41: 程序的终结-Finalize方法与IDisposable接口
  • 42: 资源的自动释放-C#中using的使用
  • 43: .net本质论-第六章:方法
  • 44: .net本质论-方法(二)
  • 45: 方法调用和类型
  • 46: 元数据特性和虚方法virtual,newslot,abstract,final等的应用
  • 47: 接口、虚方法和抽象方法
  • 48: 接口,虚方法和抽象方法(二)
  • 49: 接口方法声明形式
  • 50: .net本质论第六章-显式方法调用
  • 51: .net本质论第六章-显式方法调用(二)
  • 52: 间接方法调用和委托
  • 53: 委托的重载与使用方法
  • 54: 委托的使用方法和示例
  • 55: 异步方法的调用
  • 56: net本质论-异步方法调用(二)
  • 57: CLR锁的使用与监视器
  • 58: 方法的终止与异常处理
  • 59: .net本质论-第七章:高级方法
  • 60: .net本质论-方法的调用与消息
  • 61: 堆栈和消息转化
  • 62: .net本质论-代理的类型
  • 63: .net本质论-代理的类型(二)
  • 64: 消息过程(回顾一)
  • 65: 消息过程(回顾二)
  • 66: 对象和上下文(一)
  • 67: 对象和上下文(二)
  • 68: .net本质论-上下文和截获(一)
  • 69: 消息接收器区域-信使接收器(envoy sink)
  • 70: .net本质论-第八章:域
  • 71: 第八章:域-用AppDomain编程
  • 72: AppDomain事件
  • 73: AppDomain和程序集解析器
  • 74: AppDomain和代码管理
  • 75: AppDomain和对象(回顾)
  • 76: NET本质论第九章-安全性
  • 77: Net本质论第九章-安全性(二)
  • 78: Net本质论第九章-安全性(三)
  • 79: Net本质论安全性-策略
  • 80: .net安全性-安全策略(二)
  • 81: .net安全性-安全策略(三)
  • 82: .net安全性-权限策略(一)
  • 83: .net安全性-合并的权限集
  • 84: .net中安全策略的实施(一)
  • 85: .net中安全策略的实施(二)
  • 86: .net中安全策略的实施(三)
  • 87: .net本质论第10章:基于CLR的程序与其周围环境是如何联系的
  • 88: 类型的布局:auto、sequential和explicit
  • 89: CLR外部环境-类型的布局(二)
  • 90: CLR执行模式:托管执行和非托管执行
  • 91: .net本质论第十章:非托管模块
  • 92: 非托管模块-P/Invoke和参数副本
  • 93: MarshalAs特性、RCW与CCW架构
  • 94: MarshalAs特性、RCW与CCW架构(二)
  • 95: CLR加载的机制与选择
  • 96: CLR加载的机制与选择(二)
  • 97: 作为COM组件的CLR
  • 98: CLR对象模型与探测器
  • 99: .net专业词汇汇总(一)
  • 100: .net专业词汇汇总(二)
最新评论
  • 4515465515
  • 21321
  • 2222
  • 非常棒
  • asdfwerwe

    ewrt
    wert
    wert
    ew
    t
    ew
    rtew
    rt
    w
    et
    we
    r
    t
    wer'> 啊委任为 asdfwerwe ewrt wert wert ew t ew rtew rt w e
  • 1111
  • 涨姿势了
  • onEndEdit 1.3.5 想用
  • 很好的列子
  • 有没有添加easyui 的js
  • 你这代码有问题,效果出来不了
  • 这样开发简单吧,基本上不学编程也可以开发了
  • 这个没有下载地址,可QQ联系我:879621940
  • 这样开发程序还是第一次见到
  • 下载下载下载,那里有下载地址。

.net本质论-第八章:域

创建时间:2013年03月19日 23:25  阅读次数:(4645)
分享到:
上一节 下一节
对于执行代码的作用域和资源所有权的范围,许多编程技术和环境都定义了各自不同的模型。对于操作系统而言,作用域模型是基于进程的;对Java虚拟机而言,作用域模型是基于类装载器的;对于Tnternet信息服务(IIS)和活动服务器页面(ASP)而言,作用域模型是基于虚拟目录的:对于CLR来说,基本的作用域则是AppDomain,这也是本章讨论的重点。

执行范围和CLR


AppDomain(应用程序域),与操作系统的进程扮演相同的角色。像进程一样,AppDomain规定了代码的执行范围,提供了错误隔离的程度,提供了一个安全隔离度,并且拥有自己的资源。一般情况下,你所知道的操作系统进程的大部分情形都可能适用于AppDomain。

AppDomain与进程十分相似,但终究是两个不同的东西。进程是由操作系统创建的,而AppDomain是由CLR创建的。一个给定的AppDomain必须驻留在一个os进程中,而一个给定的进程可以寄宿多个AppDomain图8.1展示了这种关系。
对象AppDomain和进程

创建AppDomain的开销要低于创建os进程的开销.同样,跨AppDomain边界的开销也比跨操作系统os边界的要低一些.然而,与os进程一样,在AppDomain之间共享数据十分困难(甚至是不可能的)。共享数据难度大的原因之一在于对象与AppDomain的关联。

一个对象正好存放在一个AppDomnin中,值也一样。并且,一个AppDomain中的对象引用必须是引用同-个AppDomain中的对象。在这个方面,AppDomain的行为就好像拥有自己私有的地址空间。然而,这种行为只不过是一种假象而已,因为所有这一切都是由一个无法验证(nonverifiable)的方法操作整个内存实现的,这无疑戳穿了这个假象。如果只有验证过的代码执行,那么,这个假象实际上是一个 规则,无法验证的代码戳穿了CLR AppDomain的假象,这与同样戳穿OS进程假象的内核代码如出一辙。

像对象一样,类型明确地驻留在某个AppDomain中。如果两个AppDomain需要使用一个类型,那么,必须为每个AppDomain分别初始化和分配一次类型。此外,必须为各个用到类型的AppDomain分别加载和初始化一次类型的方法和程序集。田于进程中的各个AppDomain要维护类型的不同拷贝,因此,对于类型的静态字段,每个AppDomain都有其自己的私有副本。图8.2展示了AppDomain、对象和类型之间的关系。
类型和静态成员的作用范围为AppDomain

像进程一样,AppDomain是一个所有权(ownership)的单元。AppDomain的资源包括被加载的模块、程序集和类型。只要AppDomain被加载,这些资源就一直在内存中。卸载AppDomain是唯一卸载模块或者程序集的途径。卸载AppDomain也是回收类型静态字段所占内存的唯一方式。

我们在讨论进程时,线程是比较难说清楚的主题。CLR对执行代码模式有着自己的抽象,概念上与线程相似。CLR定义了一个类型System.Threading.Thread。在AppDomain中表示为可调度的(schedulable)实体。System.Threading.Thread线程对象有时被引用为数线程(soff thread)。原因是它的构造无法为底层操作系统所识别。相比之下,OS线程被引用为硬线程(hard thread),因为它们是由OS处理的。

硬线程和CLR软线程对象之间并不存在一对一的关系。然而,不管是基于编程模型,还是根据对现有CLR实现的经验分析,这种关系实际上都是存在的。其一,一个CLR软线程对象驻留在一个确定的AppDomain中。这是AppDomain的工作方式及其含义的副产品(byproduct),并且,无论CLR实现如何变化,都会是这样。其二,一个给定的AppDomain可能有多个软线程对象.在这个当前的实现中  当两个或者两个以上硬线程在单个AppDomain中执行代码时,这种情形就会发生。所有关于硬线程与软线程之间关系的其他假定,都是与实现相关的,那些反例,也有一些值得关注的考察记录。

在CLR的当前实现中,对于给定的AppDomain,硬线程至多有一个软线程对象属于它。并且,如果一个硬线程运行在多个AppDomain中,那么,每个AppDomain都会有一个明显的软线程对象属于该线程。小过,如果硬线程没有进入给定的AppDomain,那么,该AppDomain就不会有软线程表示它。图8.3说明了这种看法。
AppDomain和线程

最后,每次当给定硬线程进入AppDomain后,它就会得到同样的软线程对象。这里需要重申的是:这些看法只是通过观测当前的CLR实现得出的结论。特别是CLR寄宿在弹性不好(fiber-based)的环境时(例如,SQL Server),这些假定中就会有一些不成立的部分。这时,一个硬线程对每个AppDomain而言,可能最多只对应一个软线程。

CLR维护硬线程的线程本地存储区(thread local storage,TLS)中的一些信息。特别是,你会发现硬线程的TLS引用当前AppDomain和软线程对象。当硬线程越过一个AppDomain到另一个AppDomain时,CLR将自动调整这些引用,使其指向新的“当前”AppDomain和软线程。CLR的当前实现维护每AppDomain的线程表,确保给定硬线程只属于每AppDomain的一个软线程对象。

软线程对象具有自已私有的TLS没有什么价值。事实上,你可以通过Thread.GetData和Thread.SetData方法对它进行访问。因为这个TLS与软线程对象进行绑定,当硬线程在先前的AppDomain中执行时,就会保存这个较线程的TLS:一旦越过硬线程AppDomain的边界时,就不能看到它了。|邁tXTb€(u7b N菓諷>f_剉L?N  N饛臽b_闠*N_N NO裇u0<
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

上一节 下一节

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 4+23=? 的结果(结果是:27)
结  果:

聚圣源杨志后面起一个名字沃野布吉岛公司起名五行属土的吉祥汉字蛇年女宝宝起名大全明起什么名字好范伟电影怎么五行起名杨姓儿子起名起名那位大师好www.sogou.com打字兼职你是我的荣耀电视剧免费观看27山河令免费全集电视剧fux.com林生斌要栽在一张发票上?2018狗年小孩子起名大全微拍福利广场公司起名影视公司cfan94西部荒野2明子字辈起名预包装食品起名网络测速软件一百个好听男孩起名野玫瑰蜜血族第一季三字女孩起名大全韩姓儿子起名中国人民银行电话宝宝怎么样起名字淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化