有关.NET框架、托管、C++/CLI、CLR等等

时间:2022-05-20 04:24:27
.NET Framework是微软(Microsoft)开发的软件开发平台,主要包含两个部分: 公共语言运行时(Common Language Runtime,CLR)和.NET Framework类库。

     .NET Framework有两大主要特征:跨平台、跨语言。

    .NET 框架广义上(此处并不指“.NET Framework”)是支持跨平台(不同OS,如Linux、Mac)的,目前已有跨平台的开源项目Mono。

而“.NET Framework”作为微软的一个产品只能运行于Windows系统上。当然,不同版本的Windows如果有.NET Framework环境也可以运行同样的.NET程序,这也算一种跨平台吧。.NET Framework其实跟Java虚拟机的原理差不多,只不过微软并没有开发用于Windows之外其他OS的.NET虚拟机(或者说运行环境),至于为什么就不用解释了吧。

    .NET Framework的另外一个特性是跨语言。公共语言规范(Common Language Specification,CLS)使得C++、C#、VB.NET、F#等等语言都可以作为.NETFramework的开发语言。

    关于托管:

托管代码(managed code):http://baike.baidu.com/view/159896.htm,就是交给公共语言运行时(CLR)所管理的代码。CLR实现了内存管理和垃圾回收等机制,因此托管代码一般来说被认为是安全的,而非托管代码是非安全的(unsafe)。

一般情况下用C#、VB.NET、F#这些.NET语言写的代码都是托管代码,因为这些语言的代码都由CLR管理,先编译成微软的中间语言(MSIL),程序运行时再由CLR即时编译(Just-in-time compilation,JIT)生成机器指令。【注意:C#用unsafe关键字也可以写非托管代码】

非托管代码典型的就是Native C++代码。它不受CLR管理,内存管理和垃圾回收需要手动操作。

   关于C++/CLI

C++/CLI:http://baike.baidu.com/view/459502.htm,是静态C++对象模型到CLI的动态组件对象编程模型的捆绑。简而言之,它就是你如何用C++在.NET中编程,而不是C#或Visual 。

CLI全称是Common Language Infrastructure,即公共语言基础结构。C++/CLI与标准C++的语法有不同之处。利用它可以编写托管的C++代码,从而成为非托管C++和托管代码的桥梁。

http://www.cnblogs.com/feisky/archive/2009/11/22/1607999.htmlhttp://hi.baidu.com/wakalolo/blog/item/589b46ee3ee9cbe5b2fb95cb.html