Appdomain
appdomain:应用程序域,是CLR中实现代码隔离的基本机制,只在.net中存在
1.一个进程中可以有多个Appdomain,一个Appdomain只能属于一个进程
2.AppDomain是个静态概念,只是限定了对象的边界;线程是个动态概念,它可以运行在不同的AppDomain
一个AppDomain内可以创建多个线程,但是不能限定这些线程只能在本AppDomain内执行代码
3.Assembly是.Net程序的基本部署单元,它可以为CLR提供用于识别类型的元数据等等。Assembly不能单独执行,它必须被加载到 AppDomain中,然后由AppDomain创建程序集中的对象一个Assembly可以被多个AppDomain加载,一个AppDomain可以加载多个Assembly
4.任何对象只能属于一个AppDomain。AppDomain用来隔离对象,不同AppDomain之间的对象必须通过Proxy(reference type)或者 Clone(value type)通信
.net 中的一个程序要运行,os首先会创建一个进程,然后在进程中加载CLR,加载CLR时会默认创建一个AppDomain,它是CLR的运行单元,程序的main方法就是在这里执行的,appdomain是不能被卸载的,只有进程消灭时,Appdomain才会随之消失
我们的Assambly是不能单独执行的,必须被加载到某个 Appdomain,要想卸载assambly,就只能卸载Appdomain
具体代码实现请参照: