.NET FrameWork是用于Windows的新托管代码编程模型,它包含CLR(Common Language Runtime)以及BCL(Base CLass Library)构成。
Common Language Runtime,公共语言运行时,和JVM(Java Virtual Machine,Java虚拟机实现了Java的与平台无关的特性,它屏蔽了平台的具体信息,只需生成在Java虚拟机上运行的目标代码就可以在任何平台上都可以运行。一次编译,到处运行)一样是运行环境。
CLR主要负责资源管理,例如内存分配,垃圾收集处理,以及保证应用和底层操作系统之间必要的分离。
(1)选择编译器
(2)将托管代码(在CLR监视下运行程序的代码)编译为MSIL(Microsoft Intermediate Language 微软中间语言)。在产生MSIL的同时产生元数据(Metadata,描述数据的数据,主要描述数据类型定义,代码引用等)共同包含在一个可移植可执行PE(Portable Executable)文件中。
(3)用CLR自带的JIT编译器将MSIL编译成机器语言,JIT可以检测代码的安全性。
(4)执行代码,只需首次调用编译。
CLR的最重要的特性是:跨语言,也就是说用VB.NET写的类,可以被C#类继承。
Base Class Library,基底类别库,是公共编程框架,是CLI(Common Language Infrastructure公共语言基础结构)规范之一。
(1)提供开发各种解决方案所需物件,加速开发解决方案的速度;
(2)将各种解决方案模型一致化;
(3)在.NET平台中开发小组可以使用不同语言。
BCL基底类别库,包含数据库类别(ADO.NET),Windows类别,XML类别,图形类别(GDI+)系统类别,以及ASP.NET类别等。
Dynamic Link Library,动态链接库,也称为元件,CLR与BCL都是由元件构成。当我们在.EXE应用程序的时候,相应的DLL文件就会被调用,一个应用程序被分割成独立的动态链接库,可以有多个DLL文件,一个DLL文件也可以被多个应用程序共享。
如果所需的文件全部放在应用程序中,那样应用程序就会很大,所占用的磁盘空间也会很大,重建时还要重新编译所有代码。而有了DLL文件就不一样了,可以将程序模块创建独立的DLL文件,只有调用的时候,才会占用内存空间。
Assembly程序集,由编译器得到,供CLR进一步编译执行中间产物MSIL,一般表现为.DLL,或者.EXE格式,必须依靠CLR才能顺利执行。它是一个或多个托管模块以及资源文件的组合,包含可执行应用程序.EXE以及动态链接库.DLL,是.NET Framework的组成部分。
(1)程序集的自我描述:元数据以及程序集清单。
(2)实现这些类型的MSIL代码
(3)资源集(例如:位图)。
静态程序集存储在可移植可执行PE文件中,动态程序集直接从内存运行,在执行前不存储到磁盘里。
刚看了一集VB.NET视频,有一些看不懂的,就查啊查,查完了发现这些知识都连上了。Assembly包含.EXE和.DLL文件,.DLL又是CLR和BCL的组成部分。.NET也是由许多的.DLL组成的。对于.NET FrameWork的了解又多了一点点~