.NET8专题(一)
.NET 发展路线梳理
-
.NET 8.0 正式版(LTS长支持版本 3年)==> .NET 9.0(STS标准支持 1.8版本)
- .NET Framework V4.8 2016.12 ~ 2019.5 最后一版本
- .NET Core 1.0~3.1 2016.6
- .NET 大统一 .NET 5
-
偶数版本 LTS长支持版本
-
开源
-
.NET 基金会 ==> 2014
-
软件许可协议:
-
GPL:限制最为严格,具有极高传染性
- LGPL
- Apache:鼓励使用者尊重原作者,httpd,宽松,只需要注明原作者
- BSD:宽松,使用者可以随意修改源代码,但不允许打着原作者旗号做事
- MIT:.NET,保留原作者版权信息即可,随意使用,最宽松
-
-
.NET重要核心组件:
-
CoreCLR:最核心,公共语言运行时(C++实现)
- 中间代码解析,.NET程序(中间代码)与原生代码有很大区别,CLR在运行期间,将.NET代码解析成目标平台的机器码
- 生成各种元数据,类型信息(支持反射,类型安全等)、异常信息(支持异常处理)
- JIT:中间代码 到 机器码 (just in Time 即时编译器)
- String =》 Object,传到其他地方,其他地方转换时,会保存类型信息,会根据类型信息判断转换是否合法,以保证类型安全
- 线程管理:托管线程(由CLR管理的线程 虚假的线程), CLR将托管线程转换成对应平台的真正的线程,以实现操作线程
- GC垃圾回收,一直关注内存的变化,自动回收垃圾,对内存中无效的对象进行销毁操作,只能回收通过CLR分配的托管对象;打开一个文件,必须经过系统API,并会返回一个文件路径(文件句柄),打开文件之后,GC只能销毁文件对象,并不能销毁文件内容,文件内容并不是托管对象,因此往往需要我们手动销毁。当然,我们手动关闭也是.NET帮助我们调用系统API去关闭的文件,而不是我们自己去调用系统API。
-
Runtime:基础类库(C#编写)
- 各种常用函数方法,
- 非跨平台,故此提出了.NET Standard
- .NET Framework4.8,.NET 8.0 都支持.NET Framework2.0
- .NET Standard 是一个规范文本(一组纯文本的类型和函数声明信息)
-
CLI:
-
通用中间语言 Common Language Infrastructure:跨平台,跨平台
-
命令行接口 Command line Interface:
- .NET Framework 支持Windows
- .NET Core 支持跨平台
- .NET 编译生成的二进制,针对不同操作系统生成不同的文件格式,还是生成统一的文件格式
- DLL PE格式文件
- 需要容器保证所有OS都可以加载PE格式文件,CLI命令行工具
- .NET Core 2.0 出现,
- dotnet 接口工具,跨平台
-
-
Roslyn:
- 语言编译器,编译平台
- 即时发现报错
-
-
开发工具:
- VS2022 支持跨平台开发
- VS Code 代码编辑器
- Rider JB(IDEA,PyCharm,Reshaper)
- IL Spy