浅谈.NET的3个C

谈到.net,不能不说一下大名鼎鼎的3个c,也就是3c,不是澄海3c,也不是xx3c,^^,而是CLR,CTS,CLS。

这3c每个的定义是这样的:CLR-公共语言运行时,CTS-公共类型系统,CLS-公共语言规范。

  .net在底层,可以理解为一个运行时环境+一个基础类库。所谓基础类库(BCL)封装了各种基本类型,还有一些例如线程,io,以及图形绘制和硬件的交互。比如一些类型是便于访问数据库,一些类型是便于xml文档的操作等等。还有一个是运行时环境也就是CLR。

  如果说CLR是.net的核心,那么CTS和CLS则是CLR的核心。CTS的作用是规定了一种类型规范,体现在.net跨语言编程,即共同使用VB,C++,c#等语言。这些语言必须要符合CTS规范才能被CLR承载。如果不符合,那么将被编译器编译为Native Code,而不是CIL(或者称为MSIL,公共中间语言,一种伪汇编语言,类似于java的字节码,被CLR加载)。简单说来,CTS为不同语言的类型之间的交互以及调用提供了一个便利环境,可以理解为整个.net类型系统的超级警察。CTS内建了一套明确的核心数据类型,尽管C#,vb等等有自己的类型定义,也可以说有不同的关键字,但是,所有语言的关键字,最终将被解析为CTS数据类型,以方便不同语言之间类型的交互。CLS是CTS的子集,即定义了一种不同语言之间所遵循的最小的规范。如果在一个组件中编写了符合CLS的代码,那么所有的支持CLS的变成语言可以无障碍的访问该组件。CLS在设计上足够大,包括开发者经常使用的语言构造,同时也足够小,以使得大多数语言可以支持它。CLS中涉及到的方面有命名,类型,方法,属性,接口,事件,泛型等。

    最后是CLR,CLR主要的职责有应用托管,线程管理,垃圾回收,内存管理,安全检查。不同的语言由不同语言的编译器编译成CIL(MSIL),然后由CLR装载,执行一种叫做JIT(Just-In-Time 即时编译)的过程,由CLR编译为Native Code。

 

转载于:https://www.cnblogs.com/craoy/archive/2012/05/28/2475363.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值