公共语言运行库(CLR),也叫.NET运行库 CLR(公共语言运行库)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。 为了提高平台的可靠性,以及为了达到面向事务的电子商务应用所要求的稳定性级别,CLR还要负责其他一些任务,比如监视程序的运行。按照.NET的说法,在CLR监视之下运行的程序属于“受管理的”(managed)代码,而不在CLR之下、直接在裸机上运行的应用或者组件属于“非受管理的”(unmanaged)的代码。 CLR将监视形形色色的常见编程错误,许多年来这些错误一直是软件故障的主要根源,其中包括:访问数组元素越界,访问未分配的内存空间,由于数据体积过大而导致的内存溢出,等等。 然而,这种对受管理代码的运行监视是有代价的。虽然当前还不可能精确地得到监视程序运行所需要的开销,但从当前Beta测试版的性能表现来看,正如Microsoft所承认的那样,我们可以预料由它导致的性能降低程度至少达到10%。当然,如果监视程序运行能够将稳定性和可用性提高到一个新的档次,我们可以怀疑10%的性能降低是否还可以称为一件坏事…… 在处理器性能改善方面,摩尔定律已经一再被证明是正确的。既然如此,我们要得到一台性能增加了10%的服务器要等待多长时间呢 另有:CLR 公用语言运行时 Common Language Runtime .NET提供了一个运行时环境,叫做公用语言运行时(Common Language Runtime),是一种多语言执行环境,支持众多的数据类型和语言特性。他管理着代码的执行,并使开发过程变得更加简单。这是一种可操控的执行环境,其功能通过编译器与其他工具共同展现。 Microsoft中间语言(MSIL) MSIL是一个它所支持的语言的扩展集,这样保证了语言的无关性,即.NET语言不能执行MSIL不能执行的操作。 关于MSIL语言: 1.面向对象设计(OOD) 2.类的单一实现继承 3.支持接口 4.以分离方式严格处理数据类型(值类型放在堆栈上,引用类型则存储在堆上) 5.强类型系统(处理转换数据类型) 通用类型系统(CTS) CTS是一个所有.NET语言都支持的数据类型的集合,确保这些语言可以相互传送数据,体现了.NET语言的互操作性。 通用类型系统定义了如何在运行库中声明、使用和管理类型,同时也是运行库支持跨语言集成的一个重要组成部分。通用类型系统执行以下功能: 1.建立一个支持跨语言集成、类型安全和高性能代码执行的框架。 2.提供一个支持完整实现多种编程语言的面向对象的模型。 3.定义各语言必须遵守的规则,有助于确保用不同语言编写的对象能够交互作用。
CLR内部的每一种数据都是一个对象,象.NET Framework中的所有其他对象一样,均由System.Object派生而来。 System.Object类有四种所有类型都可以使用的方法(常被重载)。 1.Equals() 允许对象之间进行比较 2.GethashCode() 为对象返回散列代码,即对象的唯一身份 3.GetType() 成为反射 4.ToString() 返回一个类型的字符串表示法 公共语言规范(CLS) CLS是一组定义了一种语言的边界的标准,或者说是一种语言(与CLS兼容的)必须支持或遵循的一系列语言功能,从而使得其可以与其他的.NET语言互操作。 因此只要一种语言支持CLS,那么它只能支持MSIL和CTS语言功能的一个子集。如图 语言的互操作性 上面所述,只要代码是CTS许可的,就可以与其他语言的代码交互。这意味着以下的操作都可以完成: 1.一种类型可以由使用另一种语言编写的另一种类型派生而来 2.可以将一个对象传送到一个方法,该方法属于由另一种语言编写的另一个类型 3.一旦产生一个异常,可以将这个异常在使用一种不同语言编写的代码中传递 4.一个调试器可以在代码的不同方法之间调试,并且显示源代码,即使在多种语言之间进行调试也可以的 |