图文讲解.NET CLR是什么

发表于:2010-9-15 10:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  文章主要介绍了.NET CLR是什么。两个图例可以让你清晰的知道C#和.NET CLR的区别,CLR为开发者提供了哪些服务,让你深入了解其中的奥秘。

  大家首先要清楚的是,.NET平台与C#不是一回事.这点大家一定要明白,对开发人员来讲他有两个概念。第一,它是C#,VB.net等程序运行的平台。第二,它因为为这些语言提供了丰富的类库(称之为基类库),.NET CLR是什么我们现在来一起看看吧。

  NET CLR是什么

  对于一个将要面向.NET平台进行开发的人来说,了解一下.NET平台的整个构成是非常有必要的,如图1所示即说明了.NET平台的整体结构:

  这个图就是著名的.NET平台结构图,从这个图上可以看到,.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 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可以看到,C#所具有的许多特点都是由CLR提供的,如类型安全(Type Checker)、垃圾回收(Garbage Collector)、异常处理(Exception Manager)、向下兼容(COM Marshaler)等,具体的说,.NET上的CLR为开发者提供如下的服务:

  ◆平台无关:CLR实际上是提供了一项使用了虚拟机技术的产品,他构架在操作系统之上,并不要求程序的运行平台是 Windows系统,只要是能够支持它的运行库的系统,都可以在上面运行.NET应用。所以,一个完全由托管代码组成的应用程序,只要编译一次,就可以在任何支持.NET的平台上运行。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号