.net context(上下文)

以前看到context只知道是一个上下文,具体的作用:当时的大概理解就是表面意思,就是一种关联关系,再具体点就说不清楚了

今天详细的看了下,话不多说上图:

进程(Process)、线程(Thread)、应用程序域(AppDomain)、上下文(Context)的关系如图,一个进程内可以包括多个应用程序域,也有包括多个线程,线程也可以穿梭于多个应用程序域当中。但在同一个时刻,线程只会处于一个应用程序域内。线程也能穿梭于多个上下文当中,进行对象的调用。

 

搜了很多博客,看到很多较学术上的解释并没有适用于我这种小白的,下面我把网络上搜到的放在下面

使用.NET建立的可执行程序 *.exe,并没有直接承载在进程当中,而是承载到应用程序域(AppDomain)当中。应用程序域是.NET引入的一个新概念,它比进程所占用的资源要少,可以被看作是一个轻量级的进程。
http://www.uml.org.cn/net/201210264.asp(很好的一篇文章)(见附件)
当一个程序集同时被多个应用程序域调用时,会出现两种情况
第一种情况:CLR分别为不同的应用程序域加载此程序集。
第二种情况:CLR把此程序集加载到所有的应用程序域之外,并实现程序集共享,此情况比较特殊,被称作为Domain Neutral。

上下文指的是 进程间占有的资源空间
当一个进程时间片到了或者资缺的时候就会让出cpu 当另一个进程开始始用CPU之前,系统要保存即将退出进程的执行状态,以便轮到时间片或有资源的时候现场恢复.这就所谓的上下文切换.
安全上下文,调用上下文,同步上下文其实本质都一样.进程切换

应用程序域是进程中承载程序集的逻辑分区,在应用程序域当中,存在更细粒度的用于承载.NET对象的实体,那就.NET上下文Context。
所有的.NET对象都存在于上下文当中,每个AppDomain当中至少在于一个默认上下文(context 0)。
一般类所建立的对象为上下文灵活对象(context-agile),它们都由CLR自动管理,可存在于任意的上下文当中。而 ContextBoundObject 的子类所建立的对象只能在建立它的对应上下文中正常运行,此状态被称为上下文绑定。其他对象想要访问ContextBoundObject 的子类对象时,都只能通过代透明理来操作
在应用程序域之间的数据是相对独立的,当需要在其他AppDomain当中执行当前AppDomain中的程序集代码时,可以使用CrossAppDomainDelegate委托。把CrossAppDomainDelegate委托绑定方法以后,通过AppDomain的DoCallBack方法调用执行委托。
线程存在于进程当中,它在不同的时刻可以运行于多个不同的AppDomain当中。它是进程中的基本执行单元 ,在进程入口执行的第一个线程被视为这个进程的主线程。在.Net应用程序中,都是以Main()方法作为入口的,当调用此方法时,系统就会自动创建一个主线程。线程主要是由CPU寄存器、调用栈和线程本地存储器(TLS)组成的。CPU寄存器主要记录当前所执行线程的状态,调用栈主要用于维护线程所调用到的内存与数据,TLS主要用于存放线程的状态信息。
上下文是有着一套约束并且负责管理在其中的所有对象的访问的这么一个逻辑的存在
上下文最大的好处是让我们可以使用上下文拦截技术,为被宿主在上下文的组件(类)提供自定义的服务

 

 

很懵逼。。。。。。。。。。。。。

算了,还是看看官方的解释吧:

context:Defines an environment for the objects that are resident inside it and for which a policy can be enforced.

DbContext:A DbContext instance represents a combination of the Unit Of Work and Repository
      patterns such that it can be used to query from a database and group together
      changes that will then be written back to the store as a unit. DbContext is conceptually
      similar to ObjectContext.

 

再结合这篇博客:https://stackoverflow.com/questions/4915534/what-does-context-mean

 

所以综上,这个解释是目前我认为最合理的:

上下文指的是 进程间占有的资源空间当一个进程时间片到了或者资缺的时候就会让出cpu 当另一个进程开始始用CPU之前,系统要保存即将退出进程的执行状态,以便轮到时间片或有资源的时候现场恢复(操作系统这本书里面有这个知识点).这就所谓的上下文切换.安全上下文,调用上下文,同步上下文其实本质都一样.进程切换

 

总结:上下文是个数据处理环境,每个相互独立。当操作到达一个时间片终点时,进行状态保存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值