NET基础

来源:百度文库 编辑:神马文学网 时间:2024/10/02 19:05:42

核心:CLRCommon Language Runtime

它是一种针对各种不同的编程语言所使用的运行时,CLR在运行时,对开发人员使用何种编程语言来完成源代码一无所知,我们可以选择一种我们能够最容易表达我们意图的编程语言,前提是使用的编译器能够编译面向CLR的代码。    

托管模块

不管何种编译器,最后生成的结果都是一个托管模块(managed module),托管模块是是一个需要CLR才能执行的标准Windows 可移植可执行文件(PE)。

IL是微软在咨询了一些商业和学术上的语言编译器作者之后开发的一种独立于CPU的机器语言。

CPU目前还不能直接执行IL指令,但将来CPU也许会有这种能力,就目前来说,要执行一个方法,它的IL代码还必须首先换成本地CPU指令,这属于CLR中的即时编译器的(JIT)工作

程序集

CLR实际并不和模块打交道,它直接打交道的对象是程序集(assembly)。程序集是一个抽象的概念,它是一个或者多个托管模块,以及一些资源文件的逻辑组合。

对于一个可重用、可部署、可实施版本的组件来说,程序集允许我们分离它的逻辑表示和物理表示。完全可以将一些很少使用的类型或者资源放在一些单独的程序集文件中,然后根据需要从Web上下载。另外,程序集还是自描述的,CLR知道执行一个CLR的所有内容,不必再到注册表或者其他地方找。

当生成一个exe程序集时,编译器会产生一些特殊的信息,当EXE文件调用时候,这些特殊的信息将导致C;R被加载并初始化。    

CTS

CLR中的所有类型都是围绕着类型展开的,类型为应用程序和组件提供了他们所需要的功能。类型也作为一种机制使得一种语言编写的代码可以和另一种语言编写的代码进行无缝地集成,由于类型是CLR的基础,MS专门为此制定了一个正式的规范,通用类型系统(Common Type SystemCTS)来描述类型的定义和行为

CTS还定义了诸多规则来管理类型继承,虚函数,对象生存期等事项,设计这些规则的目的是使得他们的语言可以用现代编程语言方便的表达出来,实际上,我们甚至不需要学习CTS规则,因为我们选择的语言已经提供了我们所熟悉的语言语法和类型规则,并且在生产托管模块时会将这些特定语言的语法映射为CLR“语言”。

通用语言规范(Common Language Specification,简称CLS

该规范为编译器厂商详细描述了面向CLR的编译器必须支持的一个最小特性集合。CLR/CTS支持的特性要远比CLS定义的子集丰富得多。