文章目录
序
这十天仍然在研究跨平台桌面程序开发,我玩过的方案,大致有如下几个:
个人觉得,单独就桌面程序开发而言,对开发者最友好的解决方案还得是谷歌的winform开发,其入门何其简单linux运行应用程序查看系统版本linux,想必你们应当都是晓得的,界面拉拉冷傲,按键风波直接双击生成。。。
研究体会
WinForm+Wine:太麻烦,程序运行须要布署环境。通常对于在谷歌桌面下开发习惯的人来说,对于Linux都不是太熟悉,再让其布署Linux环境,恐怕会脓肿。
Electron:发布程序时,包太大,另外Electron官方对XP不支持,然而网上也有大鳄魔改版本。其框架成熟,文档和教程也很程序,也有大厂在使用该框架linux运行应用程序,比如谷歌的VSCode,GitHub的桌面端程序等。但我不是个后端。。。
QT:QT应当是大名鼎鼎了,而且其入门门槛较高,现今大多数程序员是半道剃度,或接触Java、C#、Python较多红旗linux5.0,就C++而言,可以整死一批程序员了,还要考虑QT的编译环境、构建套件、版本、头文件和库等问题又能死一批程序员。其实,不是我吹,我C/C++语言还是可以的哈哈,哪怕是我去开发QT,我也会认为QT和WPF相比,WPF界面设计基于XAML,比QT要开放的多,但是设计速率上更快,最致命的一点是,C#/JAVA等中级语言有句型糖,可以帮助开发者快速撸代码。。。
JavaFX:是Oracle从JDK8开始支持的一项新的GUI开发框架,目前相关开发文档、博文较少,遇到问题大多须要开发者自己排查,而且要运行程序时,必需要有JDK或JRE的环境支持,假如打包环境到可执行程序里,会造成发布程序太大。
JavaAWTSwing:古老的技术,学习Java的,应当就会了解一点点,那蓝渐变底色的按键。。。我就不逼逼了。。。你们都懂的。
Avalonia:这是个近几年才出的新框架,基于.NetCore,和WPF开发基本一致,编译后,再通过dotnet命令打包成各个平台的发布版本,可以直接在Linux系统下双击打开程序。具体细节可以去官网查看,这也是我明天主要说的框架。
开发打算
我使用的仍然都是VS2019最新版本。。。对Avalonia扩充的支持可能有点毛病。。。
新建Avalonia工程
类似于WPF新建工程,不过直接给我们提供了MVVM构架的工程,新建时手动帮我们多引入一个Avalonia.ReactiveUI的包,引入这个包具体是干哪些用的,我也还没考究过,待前面发觉是拿来干哪些用的,我再回去更改博客吧。
具体工程结构区别如右图:
有一点,新建的工程,包不是最新的,须要自行更新到0.9.10,目前最新版本,修补N个BUG,可以仔细看一下官网的版本发布日志,能得到好多须要的东西!!!
例如DataGrid,就是我查阅官网才晓得的,是在0.8之后才支持的,但是要另外引入一个包!
还有一点要注意,我不晓得是不是所有版本的VS都是这样,而且我的VS2019目前是这个样子,对Avalonia框架的设计器支持不友好,对于XAML的解析也是仍然报错,如右图所示。
开发简单示例程序
首先我使用了如下几个包,并简略说明一下:
Chloe:数据库ORM框架
Spire:Office文件的操作,有钱的奶奶可以不用Free版本
MySql.Data:数据库联接驱动
Xfinium.Pdf.View.Wpf.NetCore:PDF阅读控件
Avalonia.Controls.DataGrid:DataGrid控件
MessageBox
因为不提供MessageBox提示框,所以这个控件这儿须要我们自己开发
Windows运行疗效演示
Linux运行疗效生成Ubuntu18.04版本
运行疗效
神奇的BUG
新增XAML文件时,会报错误,但是不能选择新增项目的类型。应当是框架扩充在VS里的异常造成。
之后目录弄成了如右图的样子,我目前的解决办法是在文件夹下自动新建页面文件,之后工程目录会手动辨识:
总结
1.Chloe数据库框架在跨平台下可以正常使用
2.DataGrid也可以正常使用,MVVM绑定数据也是可以的
3.Office和PDF等后续在测试,假如没有控件支持的话,个人认为Office和PDF可以使用Web,之后程序里对Office和PDF的浏览可以使用CefSharp.Wpf控件解决要相信,没有哪些是后端开发处理不了的!!!
后续测试跨平台下ToupCam显微镜的联接和调用
在英国实体名单的封锁下,基于Linux的国产系统普及,只是时间问题。。。