首页 > 代码库 > 【.NET Framework 基础】——CLR、BCL、DLL、Assembly

【.NET Framework 基础】——CLR、BCL、DLL、Assembly

    .NET FrameWork是用于Windows的新托管代码编程模型,它包含CLR(Common Language Runtime)以及BCL(Base CLass Library)构成。


   一、CLR


    1、CLR是什么?


    Common Language Runtime,公共语言运行时,和JVM(Java Virtual Machine,Java虚拟机实现了Java的与平台无关的特性,它屏蔽了平台的具体信息,只需生成在Java虚拟机上运行的目标代码就可以在任何平台上都可以运行。一次编译,到处运行)一样是运行环境。


    2、用来做什么?


    CLR主要负责资源管理,例如内存分配,垃圾收集处理,以及保证应用和底层操作系统之间必要的分离。

   

    3、如何对代码进行管理


   (1)选择编译器


   (2)将托管代码(在CLR监视下运行程序的代码)编译为MSIL(Microsoft Intermediate Language 微软中间语言)。在产生MSIL的同时产生元数据(Metadata,描述数据的数据,主要描述数据类型定义,代码引用等)共同包含在一个可移植可执行PE(Portable Executable)文件中。


   (3)用CLR自带的JIT编译器将MSIL编译成机器语言,JIT可以检测代码的安全性。


   (4)执行代码,只需首次调用编译。


    4、优点


    CLR的最重要的特性是:跨语言,也就是说用VB.NET写的类,可以被C#类继承。


   二、BCL


   1、是什么?


    Base Class Library,基底类别库,是公共编程框架,是CLI(Common Language Infrastructure公共语言基础结构)规范之一。


   2、有什么用?


   (1)提供开发各种解决方案所需物件,加速开发解决方案的速度;

   (2)将各种解决方案模型一致化;

   (3)在.NET平台中开发小组可以使用不同语言。


   3、组成


    BCL基底类别库,包含数据库类别(ADO.NET),Windows类别,XML类别,图形类别(GDI+)系统类别,以及ASP.NET类别等。


  三、DLL


   1、是什么?


    Dynamic Link Library,动态链接库,也称为元件,CLR与BCL都是由元件构成。当我们在.EXE应用程序的时候,相应的DLL文件就会被调用,一个应用程序被分割成独立的动态链接库,可以有多个DLL文件,一个DLL文件也可以被多个应用程序共享。


   2、DLL文件的作用


    如果所需的文件全部放在应用程序中,那样应用程序就会很大,所占用的磁盘空间也会很大,重建时还要重新编译所有代码。而有了DLL文件就不一样了,可以将程序模块创建独立的DLL文件,只有调用的时候,才会占用内存空间。


  四、Assembly


   1、是什么?


    Assembly程序集,由编译器得到,供CLR进一步编译执行中间产物MSIL,一般表现为.DLL,或者.EXE格式,必须依靠CLR才能顺利执行。它是一个或多个托管模块以及资源文件的组合,包含可执行应用程序.EXE以及动态链接库.DLL,是.NET Framework的组成部分。


   2、组成部分


   (1)程序集的自我描述:元数据以及程序集清单。

   (2)实现这些类型的MSIL代码

   (3)资源集(例如:位图)。


   3、静态程序集 VS 动态程序集


    静态程序集存储在可移植可执行PE文件中,动态程序集直接从内存运行,在执行前不存储到磁盘里。


  五、总结


    刚看了一集VB.NET视频,有一些看不懂的,就查啊查,查完了发现这些知识都连上了。Assembly包含.EXE和.DLL文件,.DLL又是CLR和BCL的组成部分。.NET也是由许多的.DLL组成的。对于.NET FrameWork的了解又多了一点点~




   

 

【.NET Framework 基础】——CLR、BCL、DLL、Assembly