1.3 公共语言运行时
公共语言运行时(CLR)主要负责管理.NET应用程序的编译、运行以及其他基础服务,它为.NET应用程序提供了一个虚拟的运行环境——实际上是VES(虚拟执行系统)。CLR还负责为应用程序提供内存分配、线程管理、安全以及垃圾回收等服务,以及负责对代码实施严格的类型安全检查,以保证代码安全、正确地运行。
公共语言运行时的功能通过编译器和工具公开,可以编写利用此托管执行环境的代码。使用基于公共语言运行时的语言编译器开发的代码称为托管代码。托管代码具有许多优点,例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试和分析服务等。
公共语言运行时自动处理对象布局并管理对象引用,当不再使用对象时释放它们。按这种方式实现生存期管理的对象称为托管对象。垃圾回收消除了内存泄漏以及其他一些常见的编程错误。
.NET Framework应用程序建立在公共语言运行时的服务之上,并利用了.NET Framework类库。在.NET Framework 4中,一种新运行时环境——动态语言运行时(DLR),将一组适用于动态语言的服务添加到了CLR中。借助于DLR,可以更轻松地开发要在.NET Framework上运行的动态语言,而且向静态类型化语言添加动态功能也会更容易。
总之,公共语言运行时提供了如下优点和特性:
❑基于公共语言运行时开发的应用程序性能得到了改进。
❑允许使用用其他语言开发的组件。
❑.NET类库提供可扩展类型。
❑具有语言功能,如面向对象编程的继承、接口和重载特性。
❑允许创建多线程的可伸缩应用程序,具有显式的自由线程处理支持。
❑结构化的异常处理支持。
❑自定义特性(Attribute)支持,特性是一种用户自定义的元数据。
❑垃圾回收特性。
❑使用委托取代函数指针,从而增强了类型安全和安全性。