.NET、.NET FrameWork与CLI

CLI✅

CLI

CLI不是某种代码库或者程序,它是一项国际性的标准,全名是公共语言基础结构(Common Language Infrastructure)。它是一系列规范的总称,上面说到的CIL和运行时就是其中之一。

  • CLI包含的规范

    虚拟执行系统(VES,运行时)

    公共中间语言(CIL)

    公共类型系统(Common Type System,CTS)

    公共语言规范(Common Language Specification,CLS)

    元数据(Metadata)

    框架(Framework)

    CLI不是特定为C#服务的,它这套标准可以应用于多种语言,开发者可以依据CLI的规范实现各种编译平台并应用于多种语言和多种操作系统中。

CLI的实现

  1. CLI有多种实现,各自都实现了一个C#编译器,其中比较出名的是.NET和Mono。

    微软的.NET C#编译器时业内最主要的编译器,但只能应用在Windows操作系统中运行。

    Mono Project是一个开源的实现,提供了CLI规范及C#编译器的Windows、Linux和UNIX兼容版本,Unity3D游戏引擎就是利用Mono实现了多平台移植。

值得注意的是,CLI没有规定标准具体如何实现,但它描述了一个CLI平台在符合标准的前提下应该具有什么行为,这给CLI的实现者足够的灵活性去开发,但也导致了每个CLI和C#编译器实现和规范相符程度是不一的,有的实现不能编译全新语法。

  1. .NET与.NET FrameWork的关系
    1. . net是微软很多年前开发的一套用于Windows平台的框架,他跳过了直接对Windows api的调用,实现Windows编程。后期Windows已经集成了. net。而这个. net的全称就叫. net framework
    2. 微软当初希望. net framework可以跨平台,但是因为. net framework高度依赖Windows api,所以最终没有达到微软的期望,于是重新开发了. net core,一个真正可以跨平台的框架。
    3. 从. net core 3版本开始,本来应该是要迭代到版本4的,但是微软改名部认为4不好听,并且和现在.net framework 4 简称.net 4, 由于名称近似,容易让人混淆,所以直接毙掉.net framework的开发,并且. net core也跳过版本4的命名,直接成为.net 5。并且宣布以后只有一个.net。
    4. 所以以后就只有. net,没有core也没有framework

在这里插入图片描述

CLI的作用

  1. 支持多种语言。CIL不只是C#的中间语言,还有可能是Java、C++等的中间语言,只是各由不同的编译器编译成CIL。这个特点实现了CLI支持多种语言在同一个应用程序内的交互,允许使用多种语言来编写同一个程序,并允许用一种语言写的代码访问另一种语言写的库。
  2. 托管机制。运行时将CIL转换成机器码并开始执行时,它还在继续管理代码,这样的代码称为托管代码,执行过程称为托管执行。在托管执行中,CLI平台可以对程序进行一些附加服务,比如垃圾回归、类型安全检查、代码安全检查等。
  3. 平台可移植性。由于C#的底层平台是运行时,而不是底层操作系统,所以针对不同的操作系统开发对应的运行时或者开发一个多系统通用的运行时,就可以达到一套C#代码在不同平台下运行,实现平台可移植性。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值