欢迎来到天天文库
浏览记录
ID:62053288
大小:76.72 KB
页数:3页
时间:2021-04-16
《图文讲解CLR是什么.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、图文讲解.NETCLR是什么2009-10-2216:08佚名cnblogs 我要评论(1) 字号:T
2、 T文章主要介绍了.NETCLR是什么。两个图例可以让你清晰的知道C#和.NETCLR的区别,CLR为开发者提供了哪些服务,让你深入了解其中的奥秘。AD:大家首先要清楚的是,.NET平台与C#不是一回事.这点大家一定要明白,对开发人员来讲他有两个概念。第一,它是C#,VB.net等程序运行的平台。第二,它因为为这些语言提供了丰富的类库(称之为基类库),.NETCLR是什么我们现在来一起看看吧。NETCLR是什么对于一个将要面向.NET平台进行开发的人来说,了解一下.NET平台的整个构
3、成是非常有必要的,如图1所示即说明了.NET平台的整体结构:这个图就是著名的.NET平台结构图,从这个图上可以看到,.NETFramework是在Microsoft.NET平台上开发的基础,ASP.NET、WindowsForms和VS.NET都不过是.NET平台开发的一部分,他的用于.NET应用程序的开发及展示。.NET平台的核心技术为:通用语言运行时(CLR:CommonLanguageRuntiome)、基类库(BCL:BaseClassLibrary)、.NET语言及VisualStudio.NET从这个图上可以看出,.NETFramework是架构在Windows平台上的一个虚
4、拟的运行平台,你可以想象将最下层Windows换做其他的操作系统,例如说Linux,一样可以实现使用符合CLS(CommonLanguageSpecification,通用语言规范)的.NET语言,(VB.NET、C#、JScript.NET等),来创建ASP.NET或WindowsForm(可能会叫LinuxForms)应用程序的功能,这其实就是Mono计划要实现的功能。所以可以这么认为,理论上,C#是一种可以跨平台的语言,这很象Java。C#另一个比较象Java的地方是,它也是一种(特殊意义上的)语言,同Java一样,C#编写的程序代码也是先通过C#编译器编译为一种特殊的字节代码,(
5、MicrosoftIntermediateLanguage,MSIL,微软)中间语言,运行时再经由特定的编译器(JIT编译器,JustIntIME, JITer)编译为机器代码,以供操作系统执行.不仅是C#语言,所有.NET语言(将会包括我们常用的几十种现代的编码语言)都可以编写面向CLR的程序代码,这种代码在.NET中被称为托管代码(ManagedCode),所有的ManagedCode都直接运行在CLR上,具有与平台无关的特性。解释性的语言很安全,并且可以通过他的运行平台为其赋予更多的功能,例如自动内存管理,异常处理等,事实上,C#语言的许多特点都是由CLR提供的,如图2所示的CLR
6、结构图说明了这一点。从图2可以看到,C#所具有的许多特点都是由CLR提供的,如类型安全(TypeChecker)、垃圾回收(GarbageCollector)、异常处理(ExceptionManager)、向下兼容(COMMarshaler)等,具体的说,.NET上的CLR为开发者提供如下的服务:◆平台无关:CLR实际上是提供了一项使用了虚拟机技术的产品,他构架在操作系统之上,并不要求程序的运行平台是Windows系统,只要是能够支持它的运行库的系统,都可以在上面运行.NET应用。所以,一个完全由托管代码组成的应用程序,只要编译一次,就可以在任何支持.NET的平台上运行.◆跨语言集成:C
7、LR语序开发这以任何语言进行开发,用这些语言开发的代码,可以在CLR环境下紧密无缝的进行交叉调用,例如,可以用VB声明一个基类对象,然后在C#代码中直接创建次基类的派生类。◆自动内存管理:CLR提供了拉架收集机制,可以自动管理内存。当对象或变量的生命周期结速后,CLR会自动释放他们所占用的内存.◆跨语言异处理◆版本控制◆.NET安全◆简单的组件互操作性。◆自描述组件:自描述组件是指将所有数据和代码都放在一个文件中的执行文件。自描诉组件可以大大简化系统的开发和配置,并且改进系统的可靠性。通用语言运行时(CommonLanguageRuntiome,CLR)最早被称为下一代Windows服务
8、运行时(NGWSRuntime).它是直接建立在操作系统上的一个虚拟环境,主要的任务是管理代码的运行。CLR现在支持几十种现代的编程语言为它编写代码,然后以一种中间语言(IntermediateLangeoage,IL)代码的形成被执行。并且,CLR还提供了许多功能以简化代码的开发和应用配置,同时也改善了应用程序的可靠性。如你所知,如果某种语言的编译器是以运行时为目标的,那么利用该语言开发生成的代码在.NET中被称为托管代码,因为这
此文档下载收益归作者所有