本文主要是介绍什么是.NET平台,啥是CLR,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
什么是.NET平台,啥是CLR
首先要清楚的是,.NET平台与C#不是一回事.对开发人员来讲他有俩个概念:首先,它是C#,VB.net等程序运行的平台;其次,它因为为这些语言提供了丰富的类库(称之为基类库)
对于一个将要面向.NET平台进行开发的人来说,了解一下.NET平台的整个构成是非常有必要的,如图1所示即说明了.NET平台的整体结构:
从这个图上可以看出,.NET Framework是架构在Windows平台上的一个虚拟的运行平台,你可以想象将最下层Windows换做其他的操作系统,例如说Linux,一样可以实现使用符合CLS(Common Language Specification,通用语言规范)的.NET语言,(VB.NET、C#、JScript.NET等),来创建ASP.NET或Windows Form(可能会叫Linux Forms)应用程序的功能,这其实就是Mono计划要实现的功能。所以可以这么认为,理论上,C#是一种可以跨平台的语言,这很象Java。C#另一个比较象Java的地方是,它也是一种(特殊意义上的)语言,同Java一样,C#编写的程序代码也是先通过C#编译器编译为一种特殊的字节代码,(Microsoft Intermediate Language,MSIL,微软)中间语言,运行时再经由特定的编译器(JIT编译器,Just In tIME, JITer)编译为机器代码,以供操作系统执行.
不仅是C#语言,所有.NET语言(将会包括我们常用的几十种现代的编码语言)都可以编写面向CLR的程序代码,这种代码在.NET中被称为托管代码(Managed Code),所有的Managed Code都直接运行在CLR上,具有与平台无关的特性。
解释性的语言很安全,并且可以通过他的运行平台为其赋予更多的功能,例如自动内存管理,异常处理等,事实上,C#语言的许多特点都是由CLR提供的,如图2所示的CLR结构图说明了这一点。
图2
通用语言运行时(CommonLanguageRuntiome,CLR)最早被称为下一代Windows服务运行时(NGWS Runtime).它是直接建立在操作系统上的一个虚拟环境,主要的任务是管理代码的运行。CLR现在支持几十种现代的编程语言为它编写代码,然后以一种中间语言(Intermediate Langeoage,IL)代码的形成被执行。并且,CLR还提供了许多功能以简化代码的开发和应用配置,同时也改善了应用程序的可靠性。如你所知,如果某种语言的编译器是以运行时为目标的,那么利用该语言开发生成的代码在.NET中被称为托管代码,因为这样的代码是直接运行在CLR上的,所以具有与平台无关的特点。
从图2可以看到,C#所具有的许多特点都是由CLR提供的,如类型安全(Type Checker)、垃圾回收(Garbage Collector)、异常处理(Exception Manager)、向下兼容(COM Marshaler)等,具体的说,.NET上的CLR为开发者提供如下的服务:
*平台无关:CLR实际上是提供了一项使用了虚拟机技术的产品,他构架在操作系统之上,并不要求程序的运行平台是Windows系统,只要是能够支持它的运行库的系统,都可以在上面运行.NET应用。所以,一个完全由托管代码组成的应用程序,只要编译一次,就可以在任何支持.NET的平台上运行.
*跨语言集成:CLR语序开发这以任何语言进行开发,用这些语言开发的代码,可以在CLR环境下紧密无缝的进行交叉调用,例如,可以用VB声明一个基类对象,然后在C#代码中直接创建次基类的派生类。
*自动内存管理:CLR提供了拉架收集机制,可以自动管理内存。当对象或变量的生命周期结速后,CLR会自动释放他们所占用的内存.
*跨语言异处理
*版本控制
*.NET安全
*简单的组件互操作性。
*自描述组件:自描述组件是指将所有数据和代码都放在一个文件中的执行文件。自描诉组件可以大大简化系统的开发和配置,并且改进系统的可靠性。
在.NET平台结构图中,CLR的上面是.NET的基类库,这组基类库包括从基本输入输出到数据访问等各方面,提供了一个统一的
这篇关于什么是.NET平台,啥是CLR的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!