介绍

Microsoft .NET系统功能位于通用语言基础结构(CLI)的功能上。CLI基于虚拟机,旨在支持多种编程语言。语言和多平台实现的结合使CLI成为未来语言编译器的重要目标。虚拟机,中间语言和独立于语言的执行平台的思想使语言研究人员长期以来着迷。众所周知的示例包括UNCOL,UCSD P代码,ANDF,AS-400,诸如VMWare的硬件仿真器,Transmeta CrusoeTM,二进制翻译,JVM和最近的Microsoft 通用语言基础结构 (CLI)。

.NET Framework:

.NET框架是Windows组件,它支持Windows应用程序和XML Web服务的构建和运行。该组件的目的是为用户提供一致的面向对象的编程环境,无论代码是本地存储还是远程存储。
它旨在最大程度地减少软件部署和版本冲突,并促进安全执行代码,包括受信任的第三方执行的代码。它旨在消除脚本化或解释环境的性能问题。这样做的目的是使开发人员在各种应用程序和平台上的体验保持一致,并创建可帮助.NET Framework应用程序与所有其他基于Web的应用程序集成的通信标准。
.NET框架具有两个主要组件-通用运行时(CLR)和类库。在本文中,我将讨论公共语言运行时。

通用语言运行时(CLR)

Common Language Runtime是通用的多语言,反射执行引擎,在该引擎上可以运行最初以各种语言编写的代码。.NET Framework提供了一个运行时环境,该环境运行代码并提供使开发过程更容易的服务。.NET Framework中的此运行时环境称为公共语言运行时(CLR)。作为Microsoft .NET Framework的组件,公共语言运行时(CLR)是一种编程,用于管理以几种受支持的语言中的任何一种编写的程序的执行,从而使它们可以共享以任何一种语言编写的面向对象的通用类。
公共语言运行时在某种程度上可以与Sun Microsystems为运行从Java语言编译的程序而提供的Java虚拟机进行比较。Microsoft将其公共语言运行库称为“托管执行环境”。为CLR编译的程序不需要特定于语言的执行环境,并且可以轻松移动到运行Windows 2000或Windows XP的任何系统上并在其上运行
程序员使用任何.NET兼容语言(例如C#,Visual Basic,Visual C ++)编写代码进行开发。当.NET编译器将程序员的源代码转换为“字节码”时,该过程的第一部分称为“编译时间”,称为“通用中间语言(CIL)”或作为二进制汇编语言的中间语言(IL)。该过程的第二阶段称为“运行时”,这是CLR的即时(JIT)编译器将CIL二进制代码转换为适用于其要执行的主机操作系统的本机或机器语言代码。

托管和非托管代码

运行时在执行时管理代码,并提供所有核心服务,例如内存管理,线程管理和远程处理。它还强制执行严格的类型安全性,并确保代码准确性,以便为应用程序提供安全性和鲁棒性。这种在运行时管理代码的能力是CLR的独特功能。由CLR管理的所有代码称为“托管代码”,而其他代码称为“非托管代码”。
通用语言运行时(CLR) - 图1
公共语言运行时图

CLR的优点和功能

  • CLR管理内存,线程执行,代码执行,编译代码安全验证和其他系统服务。
  • 出于安全原因,将根据源为托管代码分配不同程度的信任。这阻止或允许受管组件即使在同一活动应用程序中也执行文件访问操作,注册表访问操作或其他敏感功能。
  • 基于程序集的部署消除了DLL Hell。
  • 可重用组件的并行版本控制。
  • 运行时通过实现称为通用类型系统(CTS)的严格类型和代码验证基础结构来增强代码健壮性。CTS确保所有托管代码都是自描述的,并且所有Microsoft或第三方语言编译器生成的代码均符合CTS。这使托管代码可以使用其他托管类型并强制执行严格的类型保真度和类型安全性。
  • CLR还可以提高开发人员的生产率。程序员可以自由选择应用程序的语言,而不必担心兼容性和集成性问题。他还能够利用.NET Framework的运行时和类库,还可以从其他开发人员以不同语言编写的其他应用程序中收获组件。这隐含地简化了迁移过程。
  • 服务器端应用程序可以托管运行时。诸如Microsoft SQL Server和Internet Information Services之类的高性能服务器可以托管此CLR,如此提供的基础结构可用于编写业务逻辑,同时享受企业服务器支持的最大好处。
  • 轻松使用其他语言开发的组件的能力

原文地址:https://prabirchoudhury.wordpress.com/2008/12/15/common-language-runtime-clr/