AI智能摘要
公司因需兼容uos、麒麟等国产操作系统,面临C#桌面程序跨平台挑战。.NET 10引入Avalonia支持Linux但仍存问题,且国产系统多基于Debian 10或更低版本,gtk无法满足Avalonia WebView组件要求。年初公司已重构软件,采用freesql支持国产数据库、改用Path.Combine处理路径、移除winform依赖(仅保留含WebView2的窗体)。最终转向electron框架,利用现有VUE技术栈,由electron启动服务端程序处理逻辑并返回界面,实现跨平台兼容。
— 此摘要由AI分析文章内容生成,仅供参考。
今年下半年奇奇怪怪的,公司突然接到了很多跨平台的需求。同时我们公司的产品,在相关文件中要求必须对uos、麒麟,等一系列国产操作系统进行兼容。
这就很尴尬了,众所周知 C# 并不支持跨端的桌面程序。即便在今年 .net 10 引入了Avalonia 对linux 的支持。但是仍然有很多的问题。
幸好我们公司年初的时候已经对软件进行了一波重构,替换了很多不支持跨端的类库。
比如:
- 引入了freesql 来支持国产的数据库
- 将原本程序中使用 “+” 号拼接路径的行为,修改为了 Path.Combine
- 移除对winform的依赖,目前winform 就是一个窗体,塞了一个 WebView2(此处是因为程序有服务端运行需求,界面重构为了web)
但是对国产操作系统进行折腾,还是有些问题,最主要的还是:现有的国产系统通常是因为基于debian10 甚至更低,所以gtk达不到 Avalonia WebView 组件的要求。如下图所示

这就形成了一个很尴尬的情况,我们软件所有的基础都是基于C# 的,如果此时转向c++ 和QT 这就太困难了。
在无可奈何时,我想到了一个东西,即“electron”。
我们都知道“electron” 是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 程序中,同时electron 是一个成熟的跨平台框架。
这事情瞬间开朗起来了,公司目前的技术栈,前端正好是VUE,让前端老哥改改程序,兼容 electron也未尝不可。
那么最终的解决方案敲定下来了,即:
采用 electron 实现二进制程序 ,在程序启动的时候同时启动我们的服务端程序,后端程序实现一切的逻辑,同时启动一个http服务器。可以理解为electron就是浏览器,界面上呢实际上还是由服务端程序返回给electron的。

若您喜欢这篇内容,欢迎用TRC-USDT支持创作者
Comments NOTHING