.NET8 学习笔记(一)

224 阅读3分钟

.NET8专题(一)

.NET 发展路线梳理

  1. .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
  1. 偶数版本 LTS长支持版本

  2. 开源

  3. .NET 基金会 ==> 2014

  4. 软件许可协议:

    • GPL:限制最为严格,具有极高传染性

      • LGPL
    • Apache:鼓励使用者尊重原作者,httpd,宽松,只需要注明原作者
    • BSD:宽松,使用者可以随意修改源代码,但不允许打着原作者旗号做事
    • MIT:.NET,保留原作者版权信息即可,随意使用,最宽松
  5. .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:

        1. .NET Framework 支持Windows
        2. .NET Core 支持跨平台
        3. .NET 编译生成的二进制,针对不同操作系统生成不同的文件格式,还是生成统一的文件格式
        4. DLL PE格式文件
        5. 需要容器保证所有OS都可以加载PE格式文件,CLI命令行工具
        6. .NET Core 2.0 出现,
        7. dotnet 接口工具,跨平台
    • Roslyn:

      • 语言编译器,编译平台
      • 即时发现报错
  6. 开发工具:

    • VS2022 支持跨平台开发
    • VS Code 代码编辑器
    • Rider JB(IDEA,PyCharm,Reshaper)
    • IL Spy