.NET CLR简要介绍

      在讲.NET CLR之前我们先了解一下.NET平台,它是C#,VB.net等程序运行的平台,它为这些语言提供了丰富的类库(称之为基类库)

    .NET平台的整体结构:

                        .NET CLR简要介绍_第1张图片

         从这个图上可以看到,.NET Framework是在Microsoft.NET平台上开发的基础,ASP.NET、Windows Forms 和VS.NET都不过是.NET平台开发的一部分,他的用于.NET应用程序的开发及展示。.NET平台的核心技术为:公共语言运行时(CLR:Common Language Runtiome)、基类库(BCL:Base Class Library)、.NET语言及Visual Studio.NET .

                                                              

           在.NET平台结构图中,CLR的上面是.NET的基类库,这组基类库包括从基本输入输出到数据访问等各方面,提供了一个统一的面向对象的,层次化的,可扩展的编程接口。从.NET平台结构图中也可以看到,基类库可以被各种语言调用和扩展,也就是说不管是 C#,VB.NET还是VC++.NET,都可以自由的调用。


        从这个图上还可以看出,.NET Framework是架构在Windows平台上的一个虚拟的运行平台,而CLR是公共语言运行库(Common Language Runtime)是一个运行时环境,它同Java虚拟机有相似的地方。它主要负责资源管理(内存分配和垃圾收集等),并保证应用和底层操作系统之间必要的分离。
       CLR结构: 

                                         .NET CLR简要介绍_第2张图片  

    程序语言的编译和执行:

                 .NET CLR简要介绍_第3张图片                             

      例如,C#是一种可以跨平台的语言,C#编写的程序代码也是先通过C#编译器编译为一种特殊的字节代码——中间语言(Microsoft Intermediate Language,MSIL,微软),运行时再经由特定的编译器(JIT编译器,Just In tIME,  JITer)编译为机器代码,以供操作系统执行.  
    不仅是C#语言,所有.NET语言(将会包括我们常用的几十种现代的编码语言)都可以编写面向CLR的程序代码,这种代码在.NET中被称为托管代码(Managed Code)——如果某种语言的编译器是以运行时为目标的,那么利用该语言开发生成的代码在.NET中被称为托管代码,因为这样的代码是直接运行在CLR上的,所有的Managed Code都直接运行在CLR上,所以具有与平台无关的特点。

                                               .NET CLR简要介绍_第4张图片

            解释性的语言很安全,并且可以通过他的运行平台为其赋予更多的功能,例如自动内存管理,异常处理等,事实上,C#语言的许多特点都是由CLR提供的, 从第三张图可以看到,C#所具有的许多特点都是由CLR提供的,如类型安全(Type Checker)、垃圾回收(Garbage Collector)、异常处理(Exception Manager)、向下兼容(COM Marshaler)等,具体的说,.NET上的CLR为开发者提供如下的服务: 
 
        解释性的语言很安全,并且可以通过他的运行平台为其赋予更多的功能,例如自动内存管理,异常处理等,事实上,C#语言的许多特点都是由CLR提供的, 从第三张图可以看到,C#所具有的许多特点都是由CLR提供的,如类型安全(Type Checker)、垃圾回收(Garbage Collector)、异常处理(Exception Manager)、向下兼容(COM Marshaler)等,具体的说,.NET上的CLR为开发者提供如下的服务: 
 
◆平台无关:CLR实际上是提供了一项使用了虚拟机技术的产品,他构架在操作系统之上,并不要求程序的运行平台是 Windows系统,只要是能够支持它的运行库的系统,都可以在上面运行.NET应用。所以,一个完全由托管代码组成的应用程序,只要编译一次,就可以在任何支持.NET的平台上运行.  
◆跨语言集成:CLR语序开发这以任何语言进行开发,用这些语言开发的代码,可以在CLR环境下紧密无缝的进行交叉调用,例如,可以用VB声明一个基类对象,然后在C#代码中直接创建次基类的派生类。 
◆自动内存管理:CLR提供了拉架收集机制,可以自动管理内存。当对象或变量的生命周期结速后,CLR会自动释放他们所占用的内存. 
◆跨语言异处理 
◆版本控制 
◆.NET安全  
◆简单的组件互操作性。  
◆自描述组件:自描述组件是指将所有数据和代码都放在一个文件中的执行文件。自描诉组件可以大大简化系统的开发和配置,并且改进系统的可靠性。公共语言运行时(CommonLanguageRuntiome,CLR)最早被称为下一代Windows服务运行时(NGWS Runtime).它是直接建立在操作系统上的一个虚拟环境,主要的任务是管理代码的运行。CLR现在支持几十种现代的编程语言为它编写代码,然后以一种中间语言(Intermediate Langeoage,IL)代码的形成被执行。并且,CLR还提供了许多功能以简化代码的开发和应用配置,同时也改善了应用程序的可靠性。


  总结:有了公共语言运行时,开发人员就可以很容易地设计出对象能够跨语言交互的组件和应用程序。也就是说,用不同语言编写的对象可以互相通信,并且它们的行为可以紧密集成。

你可能感兴趣的:(Net专区,********@net知识)