Posted on 2005-01-21 01:21
Ray Chang 阅读(923)
评论(3) 编辑 收藏 所属分类:
.NET基础
自接触.NET以来,一直对这二个概念很模糊,曾还一度以为二者是一个东西呢,
下面是二者的全称:
CLR = Common Language Runtime
CLI = Common Language Infrastructure
在<>(强烈推荐这本书)
这本书中提到: CLI is a standardised specification for a virtual execution
environment. 所以说CLI是一种用于虚拟执行环境的规范标准。它是由Microsoft创建的,但是我们也可以说是
ECMA的CLI,ECMA 是指European Computer Manufactures Association,
(欧洲计算机制造商协会),他们通过了CLI做为一种规范标准,而且ECMA和ISO有着很大的联系,CLI已经通过过ISO认可,做为ISO/IEC
23271:2003的标准。(C#也被ISO认可为国际标准,ISO/IEC 23270:2003)
我们可以这样说:
ECMA 是 Shared Source CLI的基础,而Shared Source CLI却是商业.NET Frameworks的基础。
关于CLR,在网上有这样的定义:
- The Common Language Runtime (CLR) provides a solid foundation for developers to build various types of applications.
- The CLR is a multi-language execution environment.
我想上面提到的multi-language execution environment,就是指的VS .NET中所包括的各种语言吧,像C#, VB, VC++, ASP等等,因此,CLR也执行了ECMA的标准。这一点于CLI相同。
而CLR与CLI不同点在哪里呢?老师给的notes上是这样写的:
- JIT and garbage collector replaced with more portable, more approachable, implementations.
- Many Windows-specific features not included: Com interop, WinForms, "It Just Works!," and other integration
- Commercial features not included, such as ADO.NET, enterprise services, NGEN (JIT -ahead), and ASP.NET.
翻译如下:(小弟英语不是很好,错了别扔鸡蛋
)
- 将JIT (JIT stand for Just In Time) 和 垃圾回收 替换为更方便的和更接近的执行。
- 放弃了许多Windows的特点:例如Com interop,窗体,"It Just Works!"等。
- 一些商业性质的特性没有包括:例如ADO.NET, 企业服务,NGEN和ASP.NET
这是我目前对CLI和CLR的一个大概的认识,如果有哪些朋友有更好的理解,请一定要告诉我呀。