云原生、容器技术发展带来整体后端工业化、生态的进步,我们也可以基于 k8s 本身服务构建分布式架构,共享所有语言的中间件。比如:你可以基于 Dapr 使用任何语言的任何中间件,C# 正好是 Dapr 支持的第一语言。
.NET 8 重塑了我们构建可按需扩展的智能、云原生应用程序和高流量服务的方式。无论我们是部署到 Linux 还是 Windows,使用容器还是我们选择的云应用程序模型,.NET 8 都可以让我们更轻松地构建这些应用程序。它包括一组经过验证的库,目前 Microsoft 的许多大规模服务都在使用这些库,可以帮助我们应对可观察性、弹性、可扩展性、可管理性等方面的基本挑战。
.NET 8 支持将 .NET 应用程序编译为本机代码,使用更少的内存并立即启动,无需等待 JIT(即时)编译器在运行时编译代码,也无需部署 JIT 编译器和 IL 代码。AOT 应用程序只部署应用程序所需的代码。我们的应用程序现在可以在无法使用 JIT 编译器的受限环境中运行。
3.3 游戏
值得一提的是,C# 在游戏开发领域口碑也非常不错,具体主要在学习上手、招聘人才、编程规范、运行性能方面都表现十分平衡,没有明显缺陷。游戏开发人员使用 Unity 构建游戏,典型代表便是腾讯的国民游戏王者荣耀,它主要使用 Unity 打造,已经拥有超过上亿的活跃用户。C# 与 Unity 引擎无缝集成,此外,还有一些新兴的游戏引擎也采用了 C# 语言,例如开源 godot 引擎。
除游戏前端,C# 和 .NET 技术在游戏后端(游戏服务器)也获得了越来越广泛的应用,C# 的服务器可以无障碍在 Linux 上运行。
3.4 全栈 Web
.NET 8 中的 Blazor 可以同时使用服务器和客户端来处理我们的所有 Web UI 需求。它通过专注于优化页面加载时间、可扩展性和提升用户体验的多项新增强功能,开发人员现在可以在同一应用程序中使用 Blazor Server 和 Blazor WebAssembly,在运行时自动将用户从服务器转移到客户端。两者对比之下,显然 .NET 代码在 WebAssembly 上的运行速度更快,这主要归功于新的基于“Jiterpreter”的运行时和新的内置组件。
总之,Blazor 填补了欠缺的一环,C# 开发人员可以直接在用户浏览器中共享代码和业务逻辑,对于 C# 开发人员来说,这无疑是一项十分强大的功能,有效提升我们的工作效率。
3.5 桌面应用
其实,C# 在桌面开发框架上的应用也是一大亮点。在 .NET 平台上传统的 Windows 桌面开发框架WPF 和 Winforms 之外,还有很多跨平台的开源框架,比如 Avalonia UI、UNO Platform。 特别Avalonia UI 是一个基于 .NET 和 XAML 的偏桌面端的跨平台(WINDOWS、LINUX、MAC)UI 开发框架,不存在某个平台用 WINUI,某个平台用原生,导致不同平台渲染会出现差别的问题发生,所有平台都使用 SkiaSharp 来渲染。
特别是在国内,在 openKylin 社区成立了 Avalonia SIG,推进 Avalonia UI 对 openKylin 生态的支持,及 Avalonia UI 的相关生态建设。随着国内的 Linux 桌面向工业、医疗等传统行业渗透,Avalonia UI 在这个市场上有着充分的竞争力,有越来越多的用户从传统的 QT 转移到开源免费的 Avalonia UI。
除了 Avalonia UI 之外,还有 Blazor 在客户端应用上表现同样出色。从 .NET7 版本开始支持的 Blazor Hybird,使用 Blazor Hybrid 将桌面和移动本机客户端框架与 .NET 和 Blazor 结合使用。在 Blazor Hybrid 应用中,Razor 组件在设备上本机运行。组件通过本地互操作通道呈现到嵌入式 Web View 控件。组件不在浏览器中运行,并且不涉及 WebAssembly。Razor 组件可快速加载和执行代码,组件可通过 .NET 平台完全访问设备的本机功能。
3.6 移动应用
.NET 多平台应用程序 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用程序, 使用 .NET MAUI,可以开发可在 Android、iOS、macOS 上运行的应用,Windows 以及从单个共享代码库运行的应用。.NET MAUI 包含 BlazorWebView 控件,该控件运行将 Razor 组件呈现到嵌入式 Web View 中。通过结合使用 .NET MAUI 和 Blazor,我们可以跨移动设备、桌面设备和 Web 重复使用一组 Web UI 组件。
3.7 物联网 IoT
除桌面和移动应用外,C# 在物联网 IoT 的应用在当前也较为普遍。.NET 可在各种平台和体系结构上运行。它支持 Raspberry Pi 和 Hummingboard 等常见物联网 (IoT) 插件板。IoT 应用通常与专用的硬件(例如传感器、模数转换器和 LCD 设备)交互。
在网络化、标准化或网络安全方面,对工业网络的要求正以非凡的速度增长。在这些问题重重的领域,基于以太网的 OPC UA(Open Platform Communications – Unified Architecture,开放平台通信 - 统一架构)通信标准正在快速发展,OPC 基金会出品的 OPC UA 的标准库 UA-.NETStandard 就是使用 C# 实现,允许非会员使用 OPC UA 的试用规范、原型或研究项目。
其实,物联网的后端系统使用 .NET 和 C# 也获得了越来越广泛的应用,构建的服务后端系统可以无障碍运行在 Linux 上。
结语
在我看来,客观实际并不是一成不变的,而是不断向前发展变化的。C# 在全球使用人数历来排在 Top5,但很多人却认为它在国内的使用场景似乎比较稀缺,主要是因为大部分人依旧用老眼光来看问题,而不是以发展、变化的观念来看问题。最新的 C# 12 是一门既有 Python 的开发效率,又有 C/C++/Rust 性能的编程语言。
在 Linux 桌面市场上,以 C# 的 AvaloniaUI 补充 Window Forms 和 WPF 的跨平台需求,逐步成为 QT 的有力竞争者。在 GenAI 加持的人工智能场景下,以 Semantic kernel 项目驱动的 新的开发范式在2024年会有更多的采用者。