目录
1. .Net是什么?
类似于次世代,互联网+的一种口号,就是一个系列产品的名字
其最核心的运行库框架叫.Net Framework,开发工具叫Visual Studio( .Net 后来去掉了),所以很多人认为其特指.Net Framework也是很正常的事情
这种事情知道就行了
2. .Net框架的核心要点?
跨语言和跨平台
这部分涉及到几个新名词,能理解就理解,不能也没关系
-
CLS(Common Language Specification):包含了所有 .NET 语言必须支持的特性和规则
-
CTS(Common Type System):包含了所有 .NET 语言的数据类型和规则
-
CLI(Common Language Infrastructure):包含了 .NET 框架的所有基础设施
用 Venn 图表示如下:
+-----------------------------+
| CLI |
| +-----------------------+ |
| | CTS | |
| | +---------------+ | |
| | | CLS | | |
| | +---------------+ | |
| +-----------------------+ |
+-----------------------------+
.Net x Unity跨平台发展史
Net Framework 2002
.NET Framework 本身主要是为 Windows 平台设计的,因此它不具备跨平台能力,其特点如下
拆解
1.首先代码会被编译成 CIL(Common Intermediate Language 公共中间语言)
CIL 是一种中间语言,当你编写的代码(如 C#、VB.NET 或 F#)被编译时,会生成 CIL 代码。CIL 是与平台无关的,这意味着它可以在任何安装了 CLR 的平台上运行
CIL也叫IL其有三种转译方式
2.运行时,CLR (Common Language Runtime,公共语言运行时) 将 CIL 代码通过 JIT 编译器编译成机器代码,然后在具体的硬件上执行 可以说代码就是在CLR上面运行的
CLR 是 .NET 平台的运行时环境,负责管理代码的执行。它提供内存管理、安全性、异常处理和垃圾回收等服务CLR 的一个重要功能是即时编译(JIT),它会在运行时将 CIL 代码编译成机器代码,以便在具体的硬件上执行
微软后来推出了 .NET Core(现已统一为 .NET 5 及更高版本),这是一个真正的跨平台框架,支持在 Windows、Linux 和 macOS 上运行
Unity跨平台之 Mono 2004
Mono 是一个开源的 .NET Framework 实现,旨在使 .NET 应用程序能够在多个平台上运行
Mono 主要使用 JIT 编译来执行 CIL 代码
其核心就是将.NET Framework 的CLR换成了Mono VM 代码在这上面执行
相当于在不同平台创建了自己的虚拟机(比如window有window虚拟机,安卓有安卓虚拟机,ios有ios虚拟机),从而将中将代码转为机器码
但是这么做工作量会很大,毕竟每一个平台的虚拟机都要维护
其优缺点如下
Unity跨平台之 IL2CPP 2015
IL2CPP(Intermediate Language To C++)是 Unity 提供的一种编译技术,它将 .NET 中间语言(IL)代码转换为 C++ 代码,然后再编译成机器代码这种方法主要用于提高性能和支持 AOT(Ahead-Of-Time)编译
IL2CPP 使用 AOT 编译
注意看,其是将CIL转为C++ 之后通过各个平台的C++编译器转为机器码 最后通过IL2CPP VM虚拟机运行,但这个虚拟机仍然采用c#的GC方式 所以使用起来也是安全放心啊
其优点如下:
二者区别
.NET Core 2016
.NET Core 是一个开源、跨平台的开发框架,适用于构建现代、高性能的应用程序,其特点如下
其通常运用在如下方面
Web 应用开发:使用 ASP.NET Core 构建高性能的 Web 应用和 API,支持在 Windows、Linux 和 macOS 上运行
云服务:适用于构建和部署云原生应用,支持与 Azure 等云平台的无缝集成
微服务架构:支持构建基于微服务架构的应用,提供了良好的扩展性和可维护性
桌面应用:通过 .NET Core,可以构建跨平台的桌面应用程序,特别是使用 .NET MAUI(Multi-platform App UI)
移动应用:结合 Xamarin 和 .NET MAUI,可以使用 .NET Core 构建跨平台的移动应用2。
物联网 (IoT):支持构建物联网设备上的应用程序