深圳.net培训
达内深圳罗湖中心

138-2888-3675

热门课程

【深圳.NET培训】CLR与.NET基类库

  • 时间:2015-11-23
  • 发布:深圳达内
  • 来源:深圳达内

深圳.NET培训】CLR与.NET基类库

CLR与.NET基类库

"公共语言运行时(Common Language Runtime,CLR)"是.NET Framework的核心与基石。所有可以在.NET平台上运行的程序其实都处于CLR的管理之下。

从开发.NET应用程序角度,我们可以把CLR看成一台专用于运行.NET应用程序的"虚拟计算机(Virtual Machine,VM)"。

提示

【深圳.NET培训】CLR与.NET基类库

本书在后面多处地方会使用到CLR这一术语指代 .NET虚拟机。

CLR这台虚拟计算机所配备的"CPU"可以执行一种专有的指令--"IL(Intermediate Language,中间语言)指令",这种指令相当地"高级",拥有许多面向对象的特性,比如它的".ctor"指令可以直接调用特定类型的构造函数,因此,我们不妨将其视为一种"面向对象的汇编语言"。

交叉链接

本书附录有一个《IL精简教程》,在本书许多章节中读者都可以看到IL代码的踪影。因此建议读者事先看一看这个教程。

有趣的是,这台虚拟计算机的体系结构相当简单,除了"CPU"之外,只有一个"计算堆栈(Evaluation Stack)"和相应的"内存",数据就在这两个地方来回传送。

CLR可以看成是一台"基于堆栈"的虚拟计算机,它提供了即时编译、垃圾收集、类型管理、异常捕获等功能,为所有.NET应用程序提供一个运行环境。

尽管CLR的内部机理相当复杂,但如果希望能成为一名优秀的.NET软件工程师,还是需要对CLR的基本运行原理有一定的了解,为此,本书在介绍各种具体的.NET面向对象编程知识的同时,穿插介绍CLR技术内幕,期望这些内容能帮助读者不断地加深对CLR的了解,在.NET开发领域中游刃有余。

扩充阅读

.NET 4.0的"In-Process Side-by-Side Execution"特性

微软一开始设计.NET时就考虑到了版本问题,允许在同一台计算机上安装多个.NET版本,彼此互不干涉。但后来在实际开发中出现了新情况。比如使用.NET为某个应用程序开发了插件,而这些插件由于开发的时间不一样,有的运行于老版本的CLR之上,有的运行于新版本的CLR之上,这就给使用插件的宿主应用程序出了难题:是启动新版本的CLR还是启动老版本的CLR?不管启动哪个版本的CLR,原先不在这个版本上开发的插件都可能运行不正常。

为了解决这个问题,.NET 4.0引入了一个称为"In-Process Side-by-Side Execution(进程内的'肩并肩'执行)"特性,允许在一个进程内同时启动不同版本的CLR。这样一来,插件宿主程序就可以为每个插件提供一个最合适的运行环境了。

一个典型的实例是安装.NET 4.0之后,IIS可以同时支持ASP.NET 2.0和4.0网站(见图1-4)。

需要指出的是,"In-Process Side-by-Side Execution"特性是.NET 4.0才提供的(当然以后的.NET 5.0或更新版本肯定会有),因此当前只能让.NET 4.0和其他老版本的CLR在同一个进程内"和平共处",并不支持.NET 4.0之前的各版本CLR运行于同一进程之内,比如某插件宿主程序不能在同一个进程内同时启动.NET 2.0和.NET 3.5。

正如C语言有C标准库一样,.NET为所有运行在CLR之上的应用程序提供了一个功能强大的公用代码库,完全按照面向对象的思想进行设计,几乎封装了操作系统的所有对外编程接口,而且这种类库是针对.NET平台而非特定的编程语言的,这就使得使用Visual Basic .NET、C#和C++等.NET编程语言的程序员能以一致的方式编程,大大方便了不同语言所编写代码之间的集成。

.NET Framework类库是.NET各项技术的"载体",我们的.NET技术探索之旅,就体现为对.NET Framework类库中各个组件的了解、剖析和应用之上。

更多内容请点击【深圳.NET培训

上一篇:【深圳.NET培训】.NET Framework与Windows操作系统
下一篇:【深圳.NET培训】手工开发.NET程序(1)

【达内】少儿培训产品将要上线啦!快呼叫你的小伙伴吧!

选择城市和中心
贵州省

广西省

海南省