微软在.NET跨平台之路上付出了巨大的艰辛,同时做了海量的工作。首先推出了统一的API标准规范库 .NET Standard,并不断补充完善标准库,截止目前(2021-5-26)最新版本为 .NET Standard 2.1。之后发布了跨平台解决方案 .NET Core,同时建立.NET基金会,并大力发展生态建设,世界知名IT公司纷纷加入并贡献,社区发展异常活跃。收购Xamarin公司后,Mono也正是加入微软大家庭,填补了微软技术栈在移动App开发领域的技术空白。
自此微软.NET进化成了如下图所示的全新大统一架构。
.NET Framework
.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的项目经理 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 等跨平台游戏开发平台的基础,已经找到了自己的价值。
微软在2016年收购了 Xamarin,并且在 Visual Studio2019中免费提供曾经昂贵的 Xamarin扩展。微软将只能创建移动应用程序的 Xamarin Studio开发工具更名为 Visual Studio2019 for Mac,并赋予它创建其他类型应用程序的能力。有了 Visual Studio201 99 for Mac,微软就能够将 Xamarin Studio编辑器的部分功能替换为 Visual Studio2019 for Windows的部分功能,以提供更接近的体验和性能。
应用场景:针对移动端的解决方案,如IOS、Android、tvOS 和 watchOS。
.NET Standard
.NET平台发展至今,微软控制着三个技术平台,如上图所示。
以上每种.NET平台都有优点和缺点,因为它们都是针对不同的场景设计的。这导致如下问题:开发人员必须学习三个.NET平台,每个.NET平台都有令人讨厌的怪癖和限制。因此,微软定义了.NET Standard,它是一套所有.NET平台都可以实现的API规范,从而用来控制它们的兼容性级别。例如,与 .NET Standard1.4兼容的平台表明提供基本的支持。
在.NET Standard 2.0及以后版本中,微软已将这三种.NET平台融合到现代的最低标准,这使开发人员可以更容易地在任何类型的.NET之间共享代码。在.NET Core2.0及以后版本中,微软增加了许多缺失的API,开发人员需要将为.NET Framework编写的旧代码移植到跨平台的.NET Core中。但是有些AP已经实现了,可以抛出异常来指示开发人员,不应该实际使用它们。这通常是由于运行 .NET Core的操作系统不同导致的。
理解 .NET Standard 只是一种标准是很重要的。不能像安装html5那样安装.NET Standard。要使用HTML5,就必须安装实现了HTML5标准的Web浏览器。
要使用 .NET Standard,就必须安装实现了.NET Standard规范的.NET平台。 .NET Standard2.0是由最新版本的 .NET Framework、.NET Core和 Xamarin实现的。
最新的.NET Standard2.1仅由. NET Core3.、Mono和 Xamarin实现。C#8.0的一些特性需要.NETStandard2.1,.NET Framework4.8没有实现.NET Standard2.1,所以应该把 .NET Framework 当作旧技术。
.NET Standard 具体介绍与使用,请参考我的博客《.NET平台系列20 .NET Standard 应用详解》系列
https://www.cnblogs.com/SavionZhang/p/14822232.html
Common Infrastructure
公共基础设施,简称CI。位于架构的最底层,构建于操作系统之上。主要包含开发语言、编译器、运行时。详细介绍请参考我的博客
https://www.cnblogs.com/SavionZhang/p/14689688.html
https://www.cnblogs.com/SavionZhang/p/14781418.html
开发工具
从 Visual Studio 第一代产品到目前的 Visual Studio 2019,它们与Windows系统紧密绑定,跨平台需求出现以后,微软又开发了支持跨平台的开发工具 Visual Studio for Mac。下载地址:Windows 版& Mac 版 Visual Studio 2019 (microsoft.com)
随着VS产品的不断升级,功能越来越强大,自然就导致该产品比较庞大,稍显笨重,对开发者的电脑硬件配置要求也不断提高。并且包括Visual Studio 2019在内,VS一直都是32位的应用程序,主进程最多只能4GB,因此限制了VS的使用场景。2021年4月18号微软宣布将于今年夏季发布首个64位的 Visual Studio 2022。
官方放出的测试视频,Visual Studio2022打开一个包含 1600 个项目和约 30 万个文件的解决方案,最高内存占用到5G+都没问题!Visual Studio 2022还将大幅提升文件打开速度、代码调试性能、代码搜索性能,还将有着更强大的AI IntelliCode 引擎做代码预测,还有更好的macOS支持等各种改进,在宇宙第一IDE的道路上继续狂奔!