你必须要知道的.NET core
.NET CORE 3.1(LTS 2022 12)==.NET 5 Prv
.NET CORE 跨平台 开源 性能(MIT真正自由的开源协议)
1.关于开源
.NET传统开发人员不关注开源
软件的许可协议==开源协议(开源能让你感受到时代变迁的巨大 )Mic2000:开源是对知识产权的破坏,对软件行业的伤害 ;MIC2016 历史证明 软件不开源是活不下去的
.NET的开源 与.NET基金会(2014成立由微软牵头)联系着千丝万缕 ,其中支持着.NET开源社区(拓宽加强 .NET生态系统).NET CORE源代码 都是该基金会的资产 该基金会的开源项目都使用的是MIT开源协议
开源协议的种类:GPL MIT Apche BSD开源协议主要限制了软件的开源性和可移植性
GPL:核心思想就是 想让世界上所有软件都开源分享 ,使用了GPL协议的源代码 无论是引用了库 修改 衍生 都必须准寻GPL协议,必须免费
LGPL:相对于GPL变化:商业软件如果只是引用了GPL协仪下的库 可以不开源,但如果修改了 就必须遵循GPL;
Apche:鼓励开源软件的使用者尊重软件的开源者 使用Apche 必须注明作者信息,
MIT:保留原作者信息
BSD:保留原作者信息 如果修改源码:不能借用原作者的名义进行宣传;与Apche 截然相反:(小公司使用大公司的热点)
2.DotNetCore的核心组件
1.CoreCLR
CoreCLR(公共语言运行时) .NETcore中最核心的组件:由C++编写,由.NETFreamrework衍生而来
1.1CLR的职责
1.1.1中间代码解析:
CLR的第一职责就是执行.NET程序:
.NET程序与 原生程序(Native)

.NET程序:.NET程序包含了中间语言IL,IL不依赖平台。所以同一个.NET程序 可以在不同平台上运行,CLR在不同平台上解析IL找到 各种信息找到 IL定义的 模块 类型 成员 方法 ....然后翻译为目标平台的机器码,在生成元数据 支持各种.NET机制(反射 GC 异常信息 ....)
1.1.2 JIT 中间代码的编译(即时编译器)IL---.>机器码
.NET的IL不能直接被目标平台直接翻译为机器码 必须借助CLR翻译为机器码 ,编译IL后加载到内存中 ;
JIT 编译时 还会识别目标平台 编译出最适合该平台的运行的汇编代码;JIT是IL的编译器
原生程序:包含了特定硬件架构的机器码 调用系统的API 只能运行在特点平台上
1.1.3类型安全
包装类型在传输中一定正确 C语言中 int* ---》void* 传递中类型不安全
.NET中 string类型 --》Object ,通过GetType可以获取原类型信息 ,如果在转换时不合法 就会抛出异常:为了实现类型安全 CLR会在每个引用类型中保存类型信息 ,在转换时判断转换是否合法 而这些用CLR管理的对象 我们称为 托管对象
1.1.4 异常处理:
try cath捕捉,以及操作系统处理
1.1.5 线程管理: CLR对原生的线程 进行包装,CLR管理的线程 称为 托管线程 配合GC进行工作
1.1.5 GC: GC可以对CLR管理的对象进行自动回收的
2.CoreFX=====基础类库 由C#编写
大部分类库都是由.NETFramework 迁移而来
CoreFX实现跨平台的方法:Partial+编译条件(不同平台)
为了支持不同平台Mic推出了 .NET Standard/.NET 标准===最基础的.NET基础功能

3.CLI
3.1.1 CLI Common Language Infrastructure 通用语言架构架构(中间语言)
通用中间语言 简而言之就是 IL的标准
规定了基础类型,指令种类,模块/类/方法的结构 二进制文件格式等 比如 规定了Int类型就是4个字节
3.1.2 CLI Command Line Inteface==命令行接口 .NET CORE 2.0完成统一
例如 DotNet Run
4.Roslyn
.NET 高级语言的编译平台 提供代码编译,代码分析。具有高度的开放性 ,可以通过调用API动态编译C#代码 (C#代码写在 txt中调用API直接编译)VS2017之后 编译器继承了Roslyn进行动态编译 (写完代码就知道对不对)
3..NET难道只是微软在家开发使用?
客户端范围 U3D 支持C#
Xamrain--移动端开发
.NET的发展正在趋于离散化 此时.NET基金会===规范化==通用性,移植性==规范文本 ------>.NET Standard
.NET Standard 不是程序====是纯文本的类型和函数声明类型信息 他规范这相同功能的类型和函数 在不同.NET开发框架中具有相同的形态

4.NET Standard 和.NET Core的区别
.NET CORE 类库完全可以引用 使用 .NET Standard中的类库
4.1:.NET core 是可以执行托管代码的执行平台
4.2:.NET Standard是许多.NET平台共享和迁移的标准 编译后不能直接执行
.NET Standard的缺点 发生异常
表示 某些API 在该平台不支持
5..NET CORE 和.NET Freamwork的性能比较



浙公网安备 33010602011771号