乐于分享
好东西不私藏

.NET 传奇第二版章节说明

.NET 传奇第二版章节说明

筹备撰写第一版时,我还身在中国,只能以博客、微博、演讲、播客、写书等方式,远距离观察并记录这些技术的发展。到了准备第二版时,我已经身在海外,也亲身参与了大部分章节涉及到的项目,并近距离接触到了相关技术和社区,希望能在第二版中提供更深入的视角和分析。
下面是目前创作阶段的主线章节安排和内容提要。

## .NET Core 2.x 和 3.x 的快速成熟之路

微软在部分客户的压力下,提前发布了 .NET Core 1.0 和 1.1,功能和开发体验的不完备在所难免,也严重影响了新技术的推广和普及。.NET Core 2.0 到 3.1 的快速迭代,正是为了在一个尽可能短的周期内弥补这些不足,提供一个功能完善、性能优越、开发体验良好的跨平台框架来吸引更多的开发者和企业用户。
我当时业余维护的 Jexus Manager 项目,前期涉及到一些 Mono 在安全证书方面的缺陷,因此围绕这些做过一点微小的贡献。到了 .NET Core 3.0/3.1 开始支持 WinForms 程序开发,我又把 Jexus Manager 迁移过来,并在这个过程中向微软提交了一些 bug report。此外我也在当时就职的公司内部为 .NET Core 技术推广做了一些基础的工作。

## 达成统一与革新的 .NET 5 和其后版本

.NET 5 的发布,标志着微软在统一 .NET 平台方面迈出了重要的一步,虽然 .NET 6 和 .NET 7 在功能和性能上都有显著的提升,但 .NET 5 的意义在于,它确立了一个新的发展方向和目标,让开发者们看到了一个更加统一、现代化的 .NET 生态系统的未来。从这时起,Xamarin 和 Mono 这两个品牌也开始逐步淡出,我们也能一步步看到它们退场的具体过程。
我在参与社区技术讨论时看到了 ASP.NET Core module 在 Windows ARM64 设备上出现的各种问题,并在研究后主导了相关的修复工作。这里有一个曲折的过程,我在自己的博客上也发布过相关的文章。章节中将提供最深度的报道和更全面的技术细节。

## Blazor 的全栈野心与挑战

微软用来自开源社区的 React/React Native 技术解决了 Office 系列产品的跨平台问题。在 .NET 平台是否要做类似 React 这样的框架、以及如何去做这个问题上,出现摇摆几乎是不可避免了。所以 Blazor 最初是由工程师以业余项目的方式开源出来的,在得到社区肯定之后,才被微软正式接纳为官方产品。这本身就是一个非常特别而且有意义的过程,反映了微软当时在技术创新和社区参与方面的态度和策略。
我在花旗银行工作期间带领的团队还是采用 React/ASP.NET Core 技术开发内部应用。到了回归微软工作的下一阶段,手下工程师更倾向于用 Blazor,于是就跟他一起做了个提升团队管理效率的内部工具,也给自己机会好好实操了一把。

## VS for Mac 的衰落与终结

微软当年几乎像是在开愚人节玩笑一样发布了 VS for Mac,后来又以一种相当突然的官宣方式终结了它。虽然 VS for Mac 的开发团队一直在努力改进这个产品,但由于市场需求的变化和微软战略的调整,最终还是敌不过管理层的决定。很多时候,只能感叹一句时运不济。
我半路接手了 xUnit.net for MonoDevelop/Xamarin Studio/VS for Mac 这个项目,并在 vstest 框架开源之前短暂地维护和发展了它。

## Xamarin 的余晖和 .NET MAUI 的反思

在本书第一版中,Mono 和 Xamarin 都占据了很大篇幅。因为相较于微软当时 .NET/VS 相对缓慢的节奏,Mono 和 Xamarin 的演进和创新都要快得多,社区也非常活跃,所以有很多内容可以写。不过到了第二版所讨论的这个时期,微软自己在这方面的动作已经非常快了,而 Xamarin 在被微软收购之后面临品牌整合等压力,因此它和 Mono 的光辉都在慢慢暗淡。MAUI 更是一个由微软主导全面替代 Xamarin 的项目。所以这个章节也有些曲折的内容。
这一块我真没有什么太多相关工作,不过是在 Mono 移交 WineHQ 伊始针对性的提过一些意见建议。

## JetBrains Rider 的崛起和完善

JetBrains 以 ReSharper 入局,一直是 .NET 开发工具生态重要的一环。尤其是在 Rider 产品线发布之后,它更是全面成为了微软 VS 产品线最强劲的竞争者之一,在功能和性能上都给了 VS 很大的压力。虽然 VS 也在不断改进,但 Rider 的创新速度和用户体验一直都非常出色,所以它的市场份额也在不断增长。这一章将会回顾其中很多重要的技术选择时刻,以及这些选择对于未来技术演进方向的直接、间接影响。
目前在筹划一个 Rider plugin for AXSG 的项目,暂时还不确定最终会不会推进。不过如果做了的话,肯定会在这一章里提到。

## VS Code for C# 的负重前行

VS Code 几乎一诞生就改写了整个微软开发工具生态的格局。无论是比它更早发布的 Atom,更早成名的 Sublime Text,还是微软自家的 VS,都不得不重新调整自己的位置。以至于 AI 时代的 IDE 竞争,说白了是 VS Code 各个变种之间的内部混战。那么微软主导的 C# 语言在 VS Code 上的开发体验到底如何呢?一言难尽的故事和背后的技术细节、可能的政治斗争,以及社区的反应和影响,都将会在这一章中进行深入的探讨和分析。
我配合 Microsoft Reactor Toronto 做过几次 VS Code 插件开发的教学活动,也做过几十万活跃用户的开源插件,所以这一章的内容我还是比较熟悉的。

## 其他开源 C# IDE 的曲折求生历程

其实从第一版写过的 SharpDevelop 和 MonoDevelop 开始,开源 C# IDE 可能就是一些开发人员心中的白月光,那是不论如何也不能缺少的存在。虽然它们在市场份额和影响力上远不及 VS 和 Rider,但总有人愿意去尝试,也在技术创新、社区参与和开源精神方面留下了一些探索和贡献。所以这一章会挑选一个还算有影响力的项目来加以记录和分析,看看它们各自的发展历程和失败教训。
我直接参与了 MonoDevelop 到 dotdevelop 这个转变的过程,虽然只是筹划与建议,但也因此对它后续的发展和未来其他项目接棒有了第一手的见解。目前正在参与 SharpIDE/SharpDbg 项目的开发。

## 其他跨平台 UI 技术的发展与挑战

除了微软主导的 Blazor 和 MAUI 之外,社区也在不断探索和尝试其他的跨平台 UI 技术,比如 Uno Platform、OpenSilver、Avalonia 等。这些项目虽然在市场上的份额可能不如微软的产品,但它们在技术创新和社区参与方面都做出了不少贡献,也为开发者提供了更多的选择和可能性。这一章将会回顾这些项目的发展历程、技术特点以及它们在市场上的表现和影响。
我主导了 Project Rover 项目,把 ILSpy 带到 Linux 和 macOS,也一直在为 AXSG 等开源项目进行布道工作,因此对于社区治理中出现的各种问题往往会直言不讳。

## 特殊 CPU 架构下的外传:ARM LoongArch RISC-V

这一部分会结合时事做一些扩展写作。不过相较于前面主线章节的内容,它会显得更零散,也更边缘一些。可能会有一些粗略的技术细节和分析,但更多的是一些观察和思考。

## 给读者的问题

这本书还在持续写作和编辑中。作为读者,如果你有什么特别想弄清楚的历史疑问,或者对某项技术、某个产品特别感兴趣,而它暂时还没有出现在这本新书章节计划中,也欢迎留言告知,方便我在后续写作中不断调整和补充。