1.上下文的概念

应用程序域是进程中承载程序集的逻辑分区,在应用程序域当中,存在更细粒度的用于承载.NET对象的实体,那就.NET上下文Context。
所有的.NET对象都存在于上下文当中,每个AppDomain(应用程序域)当中至少存在一个默认上下文(context 0)。
一般不需要指定特定上下文的对象被称为上下文灵活对象(context-agile),建立此对象不需要特定的操作,只需要由CLR自行管理,一般这些对象都会被建立在默认上下文当中。

2 透明代理

在上下文的接口当中存在着一个消息接收器负责检测拦截和处理信息,当对象是MarshalByRefObject的子类的时候,CLR将会建立透明代理,实现对象与消息之间的转换。
应用程序域是CLR中资源的边界,一般情况下,应用程序域中的对象不能被外界的对象所访问。而MarshalByRefObject 的功能就是允许在支持远程处理的应用程序中跨应用程序域边界访问对象,在使用.NET Remoting远程对象开发时经常使用到的一个父类。一般类所建立的对象为上下文灵活对象(context-agile),它们都由CLR自动管理,可存在于任意的上下文当中。而 ContextBoundObject(MarshalByRefObject的子类) 的子类所建立的对象只能在建立它的对应上下文中正常运行,此状态被称为上下文绑定。其他对象想要访问ContextBoundObject 的子类对象时,都只能通过代透明理来操作。

3 上下文绑定

ContextBoundObject(MarshalByRefObject的子类) 的子类所建立的对象只能在建立它的对应上下文中正常运行,此状态被称为上下文绑定。

4.与上下文有关的两个类

ContextBoundObject类

任何一个需要应用上下文同步机制类的父类,继承自此类的子类实例称为上下文绑定对象,而通常的类实例称为上下文灵活对象。上下文绑定的对象永远在其上下文中执行。

ContextAttribute类

MSDN定义:ContextAttribute 类是所有上下文属性的根。简单 Context 类属性 (Property) 可以用 ContextAttribute 类中的上下文属性 (Attribute) 和上下文属性 (Property) 从该类中派生。对于更为专用或更复杂的需要,上下文属性 (Attribute) 可以从 ContextAttribute 派生,并且上下文属性 (Property) 可以拆分为一个独立的类。

5.在.NET 中,跨上下文的访问调用链

通常的情况是 客户端 ->透明代理 ->真实代理 ->客户端接收器 ->信道 ->服务器端接收器->堆栈构造 ->面向上下文对象。(上面的调用链并不完整!)

参考:

http://blog.csdn.net/shyc1922/article/details/6876412

http://blog.sina.com.cn/s/blog_9d24496a0101119c.html

转载于:https://www.cnblogs.com/Nokecy/archive/2012/10/19/2731605.html

.Net上下文Context  学习记录相关推荐

  1. seq2seq模型_Pytorch学习记录-Seq2Seq模型对比

    Pytorch学习记录-torchtext和Pytorch的实例4 0. PyTorch Seq2Seq项目介绍 在完成基本的torchtext之后,找到了这个教程,<基于Pytorch和tor ...

  2. Java设计模式学习记录-解释器模式

    前言 这次介绍另一个行为模式,解释器模式,都说解释器模式用的少,其实只是我们在日常的开发中用的少,但是一些开源框架中还是能见到它的影子,例如:spring的spEL表达式在解析时就用到了解释器模式,以 ...

  3. 链路追踪译文学习记录(Dapper!!!非原创!!!学习记录)

    #Dapper(阅读翻译论文的学习记录) ##摘要 环境:在复杂的大规模分布式系统中,一个系统多个模块,每个模块可能由不同的团队,语言,横跨多个数据中心的几千台服务器上. 这种环境要求一种可以帮助理解 ...

  4. Modbus学习记录(3)

    Modbus学习记录(3)--API详解 初始化相关API modbus_new_rtu() modbus_new_tcp() modbus_new_tcp_pi() 连接相关API modbus_c ...

  5. SELinux_Treble学习记录

    SELinux_Treble学习记录 参考文档:https://source.android.google.cn/security/selinux/images/SELinux_Treble.pdf ...

  6. springboot的学习记录

    微服务的介绍 源码链接 更多整合 微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元: 开始的helloworld: 1创建一个maven工程: 2添加依赖 <parent> ...

  7. Android Studio学习记录之简单的页面切换及宫格菜单

    Android Studio学习记录之简单的页面切换及宫格菜单 之前上课听老师讲的一些东西自己其实并没有消化,今天把不懂的都去网上搜了一下,有了一种恍然大悟的感觉,包括很多方方面面的东西.有些东西听说 ...

  8. Kotlin学习记录(三)—— 子线程获取数据,实现简单ListView

    接上篇:Kotlin的变量.属性.类.构造函数.继承.方法 上一篇简单介绍了Kotlin的一些基础构成,当然还有像对象声明.操作符等等都未涉及到,这些会在以后用到的过程中进行详细说明. 项目中List ...

  9. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)

    Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...

最新文章

  1. java ee有哪些工具_JavaEE开发中最常用到的技术和工具汇总
  2. 混淆矩阵(confusion matrix)是什么?以及能从混淆矩阵中衍生出来的指标FPR、TPR、FDR、ACC、PPV、NPV分别是什么?对应的概念及公式是什么?
  3. HTML5网页上播放mp4失败的原因
  4. BZOJ 3685: 普通van Emde Boas树( 线段树 )
  5. ansible(自动化运维上)——ansible部署,添加主机组,连通性测试
  6. 北京理工大学珠海学院专业计算机类,北京理工大学珠海学院计算机学院网络工程专业...
  7. OJ1073: 级数求和(C语言)
  8. Matlab图像处理相关
  9. 新书《Ext JS 4.2 实战》终于出炉了
  10. 颜色直方图的计算、显示、处理、对比及反向投影(How to Use Histogram? Calculate, Show, Process, Compare and BackProject)...
  11. 强化学习中的各类算法
  12. biztalk中架构验证、实例生成和验证
  13. LINUX下载编译libav
  14. C语言版数据结构计算顺序表中X的个数,设计算法。数据结构课后习题,定义顺序表,查找顺序表中X元素的个数。
  15. 零基础搭建外卖优惠券返利CPS小程序教程
  16. virmach VPS升级Ryzen锐龙主机后vps一直离线无法重置解决办法
  17. 单片机遥控车c语言程序,基于51单片机的无线遥控小车设计[附发射接收程序]
  18. denoiser降噪实例
  19. android支付安全机制,Android_指纹支付_安全问题_前后端交互逻辑
  20. 模拟量采集模块4-20ma0-10v0-5v转rs485modbus 2/4/8/16路电流电压输出输入

热门文章

  1. Spring boot 整合 Mybatis 实现增删改查(MyEclipse版)
  2. python入门(13)获取函数帮助和调用函数
  3. php循环语句for while do while的用法
  4. MySQL中的联合索引学习教程
  5. vs2010无法调试JS
  6. VC中读写ini文件
  7. 429 too many requests错误出现在wordpress后台更新及官网的5种解决方法
  8. Java并发编程原理与实战六:主线程等待子线程解决方案
  9. 解决数据库里表字段带下划线,实体类转小驼峰,Mapper的映射问题
  10. 欠拟合、过拟合及其解决方法