CLR:公共语言运行库,一堆库类的集合。他可以运行C#,C++,vb.net。他是多语言开发的基础。
CTS:一种规范,能在CLR上面运行的语言规范
CLS:也是规范,能在CLR运行遵守的最小规范。
程序集:包含程序的所有原始文件与一个清单,该清单包括程序集版本号,语言,发布者,导入类。
应用程序域:规定了代码执行范围,多个应用程序域通信是困难的,所以它也能隔离错误。
应用程序域与进程的区别 :
- 在一个应用程序中出现的错误不会影响其他应用程序。因为类型安全的代码不会导致内存错误,所以使用应用程序域可以确保在一个域中运行的代码不会影响进程中的其他应用程序。
- 能够在不停止整个进程的情况下停止单个应用程序。使用应用程序域使您可以卸载在单个应用程序中运行的代码。
.net:运行机制:先编译为中间代码(IL),然后通过JIT编译为机器代码
JIT:先找缓存中可用的机器码直接加载,如果遇不可用机器码则查找可用中间代码编译
强签名:是一个带有公钥和数字签名的程序集,作用为保护程序集,需要公钥和私钥一起解密才可以修改,程序集必须强签名才可以放入GAC中。
GAC:全局程序缓存,它是一个目录结构,存放任何强签名的程序集引用,保证存放的引用都能被CLR找到加载。将程序集放入其中可以方便CLR调用,节省开销,同一程序集的不同版本可以共存,并且可以通过配置进行切换
延迟签名:应为强签名的程序集有防篡改的功能,开发测试不方便,延迟到真正发布的时候再加强签名就好。
受托管代码:一般我们写的都是受托管代码,由CLR操作内存与回收释放内存。