代码改变世界

.NET Framework常用术语解析

2014-04-18 15:56  hduhans  阅读(382)  评论(0编辑  收藏  举报

  .MET框架是一个多语言组成开发和执行环境,它提供了一个跨语言的统一编程环境。本文摘记了.NET框架下常见的一些标准和专业术语,方便查阅。--摘自张子阳的博客《.NET框架

1、CIL(Common Intermedia Language):公共中间语言。CIL是一种比C#稍低级的语言,基于堆栈,提供class、interface、继承、多态等面向对象的语言特性,是一种面向对象的语言,编译工具是IL ASM(IL汇编程序)。是.NET框架下各种语言编译后生成的一种中间语言,程序执行时由CLR将CIL翻译成本地机器语言并执行。

2、BCL(Base Class Library):基类库。BCL包含了最基本的类型,为CIL语言提供基础的变成支持。BCL会被自动引用进程序中,其程序集位置是:

C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll。

3、FCL(Framework Class Library):Framework框架类库。FCL中的核心子集就是BCL,FCL包含了众多的内容,从功能上可将FCL框架类库划分成以下几层:

  ①最内层,由BCL的大部分组成,主要作用是对.NET框架、.NET运行时及CIL语言本身进行支持,例如基元类型、集合类型、线程处理、应用程序域、运行时、安全性、互操作等。

  ②中间层:包含了对操作系统功能的封装,例如文件系统、网络连接、图形图像、XML操作等。

  ③最外层:包含各种类型的应用程序,例如Windows Forms、Asp.NET、WPF、WCF、WF等。

4、CTS(Common Type System):公共类型系统。给.NET框架下的高级语言定义的一套CIL的定义、规则或标准,这套规则规定了语言可以做什么,不可以做什么以及具有哪些特性。任何满足了CTS规则的语言就是面向.NET框架的语言,C#、VB.NET就是微软自己开发的符合CTS规则的.NET高级开发语言。值得注意的是,.NET下的C++是微软推出的符合CTS标准的语言,由于CTS规则不支持多继承,因此.NET框架下的C++也不支持多继承

5、CLS(Common Language Specification):公共语言规范。.NET下的各种高级开发语言生成的程序集,如果符合CLS规范,则可以被.NET下的其他语言调用,否则,只能被定义该程序集的语言本身所调用。例如用C#编写生成了一个程序集,如果

符合CLS规范,则可以被VB.NET语言所调用,否则,只能被C#语言调用。比如C#区分大小写,而VB.NET不区分大小写,如果在C#程序集内使用了以大小写区分的方法或字段,则不符合CLS规范,不可被VB.NET调用。可用.NET提供的特性CLSCompliant来检查程序集是否符合CLS规范

6、CLR(Common Language Runtime):公共语言运行时。CLR是.NET程序集的运行环境,类似于Java的虚拟机,支持将CIL中间语言转化成本地机器代码。

7、CLI(Common Language Infranstructure):公共语言基础。CLI是一个国际标准,它只是一个概念和汇总,FCL、CIL都是这个标准的一部分。CLI于.NET是标准和实现的关系,在CLI中并没有CLR的概念,只有VES,而CLR就是.NET框架中VES的具体实现。.NET框架是CLI在Windows平台上的具体实现,另一个CLI的实现是Mono Project,它的目标就是将.NET框架多平台化,使其可以运行在各种平台上,包括Mac OS,Linux等。

8、Assembly程序集:由编译器变异得到,供CLR进一步编译执行的中间产物。在Windows中,程序集一般以dll或exe格式结尾,它与普通的Win32可执行文件不同,程序集的运行必须依赖于CLR。程序集的结构如图1所示:

  

     图1 程序集结构

  各中头项目的含义:①PE/COFF头是Windows可移植可执行/通用对象文件格式,只有包含PE/COFF头的文件才是一个Windows可执行文件;②CLR头最重要的作用是告诉操作系统这是一个文件是一个.NET程序集,必须要依赖于CLR才可以执行,以此来区别于其他可执行文件;③清单(mainfest)是一个目录,描述了程序集本身的信息,如程序集标识(名称、版本、文化)、程序集包含的资源(Resources)、组成程序集的文件等;④元数据描述了程序集包含的内容,包括:程序集包含的模块、类型、类型的成员、类型和类型成员的可见性等;⑤CIL头包含了程序编译后的中间语言;⑥资源文件,如图片等。从图中可以看出,程序集是自解释型的,不再需要任何额外的东西就可以完整地知道程序集的一切信息。