新世界中的.NET大统一平台架构解析

微软在.NET跨平台之路上付出了巨大的艰辛 , 同时做了海量的工作 。首先推出了统一的API标准规范库 .NET Standard , 并不断补充完善标准库 , 截止目前(2021-5-26)最新版本为 .NET Standard 2.1 。之后发布了跨平台解决方案 .NET Core , 同时建立.NET基金会 , 并大力发展生态建设 , 世界知名IT公司纷纷加入并贡献 , 社区发展异常活跃 。收购Xamarin公司后 , Mono也正是加入微软大家庭 , 填补了微软技术栈在移动App开发领域的技术空白 。
自此微软.NET进化成了如下图所示的全新大统一架构 。

新世界中的.NET大统一平台架构解析

文章插图
 
.NET Framework
新世界中的.NET大统一平台架构解析

文章插图
 
 .NET Framework开发平台包括公共语言运行库(CLR)和基类库(BCL) , 前者负责管理代码的执行 , 后者提供了丰富的类库来构建应用程序 。微软最初设计.NET Framework是为了使应用具有跨平台的可能性 , 但是微软在将他们的实现努力投入 , 发现这一平台在 windows上工作得最好 。
自.NET Framework4.5.2成为 Windows操作系统的官方组件以来 , NET Framework已经安装在超过10亿台计算机上 , 所以对它的改动必须尽可能少 。即使是修复bug也会导致问题 , 所以更新频率很低 。在计算机中 , 为.NET Framework编写的所有应用程序都共享相同版本的CLR以及存储在全局程序集缓存(GAC)中的库 , 如果其中一些应用程序需要特定版本以保证兼容性 , 就会出问题 。
实际上 , .NET Framework仅适用于 Windows系统 , 因为是旧平台 , 所以不建议使用它创建新的应用程序 。
应用场景:针对传统的桌面端解决方案 , 采用WPF与WinForm 。
.NET Core
现代移动技术和计算的发展使得 Windows作为操作系统变得不那么重要了 。正因为如此 , 微软一直致力于将.NET从它与 Windows的紧密联系中分离出来 。在将 .NET Framework重写为真正跨平台的同时微软也利用这次机会重构并删除了不再被认为是核心的主要部分 。
新产品被命名为 .NET Core , 其中包括名为 CoreCLR 的 CLR 跨平台实现和名为 CoreFX 的精简类库 。
新世界中的.NET大统一平台架构解析

文章插图
 
微软负责.NET的项目经理 Scott Hunter认为:“.NET Core客户中有40%是全新的平台开发人员这正是我们想要的结果 。我们想引入新人 。”
.NET Core的运行速度很快 , 因为它可以与应用程序并行部署 , 所以.NET Core可以频繁地更改 , 因为这些更改不会影响同一台计算机上的其他 .NET Core 应用程序 。微软对 .NET Core 所做的改进无法添加到NET Framework中 。
应用场景:针对跨平台(Windows、linux、macOS)的解决方案 , 如物联网IoT、人工智能AI、AR、MR、Web等 。
Xamarin
第三方公司开发了名为 Mono 项目的 .NET Framework实现 。Mono是跨平台的 , 但是它远远落后于.NET Framework的官方实现 。Mono 作为 Xamarin移动平台以及 Unity 等跨平台游戏开发平台的基础 , 已经找到了自己的价值 。
新世界中的.NET大统一平台架构解析

文章插图
 
微软在2016年收购了 Xamarin , 并且在 Visual Studio2019中免费提供曾经昂贵的 Xamarin扩展 。微软将只能创建移动应用程序的 Xamarin Studio开发工具更名为 Visual Studio2019 for Mac , 并赋予它创建其他类型应用程序的能力 。有了 Visual Studio201 99 for Mac,微软就能够将 Xamarin Studio编辑器的部分功能替换为 Visual Studio2019 for Windows的部分功能 , 以提供更接近的体验和性能 。
【新世界中的.NET大统一平台架构解析】应用场景:针对移动端的解决方案 , 如IOS、Android、tvOS 和 watchOS 。
.NET Standard
.NET平台发展至今 , 微软控制着三个技术平台 , 如上图所示 。
  • .NET Framework:用于旧应用
  • .NET Core:用于跨平台和新应用
  • Xamarin:用于移动应用
以上每种.NET平台都有优点和缺点 , 因为它们都是针对不同的场景设计的 。这导致如下问题:开发人员必须学习三个.NET平台 , 每个.NET平台都有令人讨厌的怪癖和限制 。因此 , 微软定义了.NET Standard , 它是一套所有.NET平台都可以实现的API规范 , 从而用来控制它们的兼容性级别 。例如 , 与 .NET Standard1.4兼容的平台表明提供基本的支持 。


推荐阅读