2.0 开发目标
ClassIsland 将计划在 1.7 完成开发以后开始开发 2.0-■■■■■,即基于 Avalonia 重构后的跨平台 ClassIsland。
迁移计划
迁移计划分为以下阶段:
早期阶段
- [x] 迁移核心部分
- 主界面、组件系统
- 提醒
- 提醒特效
- ……
- [x] 实现一个系统 API 抽象层以统一不同平台间的 API 调用
- Windows
- Linux / X11
在早期阶段结束后将发布一个实验版本,以评估 ClassIsland 在 Avalonia 上的可靠性。
中期阶段
- [ ] 迁移应用其它功能
- [ ] 实现对不同平台打包的支持
- Windows: msix/msi
- Linux:deb
后期阶段
- [ ] 扩展系统 API 抽象层,争取将 ClassIsland 适配到更多平台(如果可行的话)
- Linux / Wayland
- Android (?)
- OpenHarmony / HarmonyOS Next (?)
- [ ] 添加多个主界面窗口支持 (?)
- [ ] 添加嵌入式平台支持 (?)
- [ ] ……(待补充)
迁移阶段需要关注的问题
- 对 Windows 7 的支持: 尽管 Avalonia 应用可以在 Windows 7 上运行,但 Avalonia 不对 Windows 7 上产生的问题提供支持。需要确认 Avalonia 的一些功能(比如透明窗口等)在 Windows 7 上是否可以正常工作
- 性能: 需要关注 Avalonia 在教学设备上的性能表现是否可以接受
迁移可以解决的问题
- #172
迁移时遇到的问题
这里记录一下在迁移时遇到的一些奇奇怪怪的问题:
- [ ] HarmonyOS Sans SC 字体显示出来会往上飘
- [x] Avalonia 的 Corlor 类型不能被正常 Json 序列化/反序列化
Avalonia最大的优势就是跨平台,可以在Windows、macOS、Linux、iOS、Android和Web上面运行,Linux再也不用Wine转译了 而且说不定会使集控APP开发得到大规模简化,只需一次写代码即可在所有客户端上运行(如果忽略显示适配问题) 并且,Avalonia的后端依然为C#,前端依然使用XAML,可以不改动后端,只是重写XAML即可实现迁移 还有,Avalonia在VSCode、VS、JetBrains Rider上均有支持,开发者可以选择喜欢的IDE(支持VSCode很好,可以在配置较低的电脑上写插件)
但是,两个UI框架存在许多区别,开发者需要重新学习,迁移耗时较长 并且由此可能会使得所有插件都要重写以适配新UI框架 这一个迁移虽然耗时可能比较长,但是鉴于部分学校已经开始使用基于UOS的Seewo白板,这项迁移还是值得的
又及:现在有开发者正在进行Avalonia在HarmonyOS NEXT上的适配,未来可能可以使ci支持HarmonyOS NEXT,鉴于华为电脑设备的Windows许可证已经到期了,且手机正在换用NEXT,这样可能使ci能够在这些设备上运行 未来如果要写集控APP也可以在这上面运行
华为最近新出的电脑好像已经不预装windows了,装的统信的UOS,大概是用linux做过渡,然后转到Harmony os NEXT?
也许,毕竟Harmony的电脑系统似乎还没达到相应的软件生态
Avalonia不用DX,对Windows上的性能应该是有点影响的吧?
确实,Avalonia 不使用 DirectX(DX)可能会对 Windows 上的性能产生一定影响,尤其是在图形密集型应用中。DirectX 是一个高效的图形渲染 API,能够充分利用硬件加速,而 Avalonia 默认使用的是 Skia 图形库,它是跨平台的,但在某些情况下可能无法完全匹配 DirectX 的性能。
Avalonia不用DX,对Windows上的性能应该是有点影响的吧?
确实,Avalonia 不使用 DirectX(DX)可能会对 Windows 上的性能产生一定影响,尤其是在图形密集型应用中。DirectX 是一个高效的图形渲染 API,能够充分利用硬件加速,而 Avalonia 默认使用的是 Skia 图形库,它是跨平台的,但在某些情况下可能无法完全匹配 DirectX 的性能。
Avalonia不用DX,对Windows上的性能应该是有点影响的吧?
~但是WPF使用dx9其实也使性能受到了很大影响~
自己去Material.Avalonia那里导出了一份demo,说实话,Avalonia对触屏的支持确实比WPF好得多(毕竟是可以在移动端用的框架) 官方的demo:(自己编译的,用的VSCode) https://wjj20070926-my.sharepoint.com/:u:/g/personal/1505_wjj20070926_onmicrosoft_com/ES33wo17L-JDi3ntg9NH-TgBkEHDmDsAwJK2i0DA3f1A3g?e=Q9Xm9M
华为最近新出的电脑好像已经不预装windows了,装的统信的UOS,大概是用linux做过渡,然后转到Harmony os NEXT?
是的,毕竟被制裁了,估计几个月后鸿蒙NEXT电脑版就出来了
我对移动端开发的 Class Island 比较感兴趣,毕竟我高考完就有时间去搞这些了,所以我大致想的是用 Flutter 框架试着开发一下~~主要貌似 Avlonia的移动端生态还不成熟,(我还被 Flutter 吸引住了)就打算用这个~~就不知道后面会不会维护有点麻烦,主要看上了了 Flutter 的流畅性了。
Flutter不使用C#作为后端,这开发难度未免有点太大了?毕竟你要重新写ci所有后端 最后选择Avalonia就是因为它和WPF后端一样,都是C#,可以在基本不动后端代码、只重写XAML的情况下完成迁移
我对移动端开发的 Class Island 比较感兴趣,毕竟我高考完就有时间去搞这些了,所以我大致想的是用 Flutter 框架试着开发一下~主要貌似 Avlonia的移动端生态还不成熟,(我还被 Flutter 吸引住了)就打算用这个~就不知道后面会不会维护有点麻烦,主要看上了了 Flutter 的流畅性了。
Flutter可以使用C#作为后端,但需要借助特定的通信机制和技术栈整合,比如通过 REST API/gRPC 通信,就是将 C# 后端部署为独立的服务(如 ASP.NET Core),Flutter 通过 HTTP 或 gRPC 调用接口。不过这的确是一个大胆的想法,方案还得进行论证,我后面先尝试一下做一下看,不行就改Avalonia。
Flutter不使用C#作为后端,这开发难度未免有点太大了?毕竟你要重新写ci所有后端 最后选择Avalonia就是因为它和WPF后端一样,都是C#,可以在基本不动后端代码、只重写XAML的情况下完成迁移
我对移动端开发的 Class Island 比较感兴趣,毕竟我高考完就有时间去搞这些了,所以我大致想的是用 Flutter 框架试着开发一下~主要貌似 Avlonia的移动端生态还不成熟,(我还被 Flutter 吸引住了)就打算用这个~就不知道后面会不会维护有点麻烦,主要看上了了 Flutter 的流畅性了。
主要Flutter有统一的Skia渲染引擎,不依赖平台原生控件,可能体验性要稍微好点。Avalonia基于平台原生图形 API,部分控件使用原生实现。不过感谢您的建议,我后面还是根据方案评估后在选择使用哪个框架吧,谢谢。
Flutter不使用C#作为后端,这开发难度未免有点太大了?毕竟你要重新写ci所有后端 最后选择Avalonia就是因为它和WPF后端一样,都是C#,可以在基本不动后端代码、只重写XAML的情况下完成迁移
我对移动端开发的 Class Island 比较感兴趣,毕竟我高考完就有时间去搞这些了,所以我大致想的是用 Flutter 框架试着开发一下~主要貌似 Avlonia的移动端生态还不成熟,(我还被 Flutter 吸引住了)就打算用这个~就不知道后面会不会维护有点麻烦,主要看上了了 Flutter 的流畅性了。
Flutter可以使用C#作为后端,但需要借助特定的通信机制和技术栈整合,比如通过 REST API/gRPC 通信,就是将 C# 后端部署为独立的服务(如 ASP.NET Core),Flutter 通过 HTTP 或 gRPC 调用接口。不过这的确是一个大胆的想法,方案还得进行论证,我后面先尝试一下做一下看,不行就改Avalonia。
Flutter不使用C#作为后端,这开发难度未免有点太大了?毕竟你要重新写ci所有后端 最后选择Avalonia就是因为它和WPF后端一样,都是C#,可以在基本不动后端代码、只重写XAML的情况下完成迁移
我对移动端开发的 Class Island 比较感兴趣,毕竟我高考完就有时间去搞这些了,所以我大致想的是用 Flutter 框架试着开发一下~主要貌似 Avlonia的移动端生态还不成熟,(我还被 Flutter 吸引住了)就打算用这个~就不知道后面会不会维护有点麻烦,主要看上了了 Flutter 的流畅性了。
好思路,如果真实现了就可以以任意UI框架作为ci前端,且可以实现ci与其他应用深度联动(~说实话现在自动化功能还不够强大,不支持更底层的API和变量功能,学写插件又有点累,如果真实现的话也许可以做出ci版本的“快捷指令”APP~)
Flutter可以使用C#作为后端,但需要借助特定的通信机制和技术栈整合,比如通过 REST API/gRPC 通信,就是将 C# 后端部署为独立的服务(如 ASP.NET Core),Flutter 通过 HTTP 或 gRPC 调用接口。不过这的确是一个大胆的想法,方案还得进行论证,我后面先尝试一下做一下看,不行就改Avalonia。
Flutter不使用C#作为后端,这开发难度未免有点太大了?毕竟你要重新写ci所有后端 最后选择Avalonia就是因为它和WPF后端一样,都是C#,可以在基本不动后端代码、只重写XAML的情况下完成迁移
我对移动端开发的 Class Island 比较感兴趣,毕竟我高考完就有时间去搞这些了,所以我大致想的是用 Flutter 框架试着开发一下~主要貌似 Avlonia的移动端生态还不成熟,(我还被 Flutter 吸引住了)就打算用这个~就不知道后面会不会维护有点麻烦,主要看上了了 Flutter 的流畅性了。
好思路,如果真实现了就可以以任意UI框架作为ci前端,且可以实现ci与其他应用深度联动(~说实话现在自动化功能还不够强大,不支持更底层的API和变量功能,学写插件又有点累,如果真实现的话也许可以做出ci版本的“快捷指令”APP~)
那岂不是快哉~,我还真没想到这个点上,这样的话的确有利于CI生态进一步发展
不过Avalonia的性能要求比Flutter的要求低的多得多,至少在某些工控设备或者嵌入式设备上,它对GPU没有任何限制,而Flutter就不一样了,Flutter对GPU是有一定限度要求的,至少要保证能够进行UI渲染
不过Avalonia的性能要求比Flutter的要求低的多得多,至少在某些工控设备或者嵌入式设备上,它对GPU没有任何限制,而Flutter就不一样了,Flutter对GPU是有一定限度要求的,至少要保证能够进行UI渲染
~但是应该不至于有啥新一点的设备连个GPU都达不到要求吧,达不到要求的估计都很旧了,而很多学校基本上6年就换一次设备~
主要Flutter有统一的Skia渲染引擎,不依赖平台原生控件,可能体验性要稍微好点。Avalonia基于平台原生图形 API,部分控件使用原生实现。不过感谢您的建议,我后面还是根据方案评估后在选择使用哪个框架吧,谢谢。
Flutter不使用C#作为后端,这开发难度未免有点太大了?毕竟你要重新写ci所有后端 最后选择Avalonia就是因为它和WPF后端一样,都是C#,可以在基本不动后端代码、只重写XAML的情况下完成迁移
我对移动端开发的 Class Island 比较感兴趣,毕竟我高考完就有时间去搞这些了,所以我大致想的是用 Flutter 框架试着开发一下~主要貌似 Avlonia的移动端生态还不成熟,(我还被 Flutter 吸引住了)就打算用这个~就不知道后面会不会维护有点麻烦,主要看上了了 Flutter 的流畅性了。
指正:Avalonia 也是用 Skia 完全自绘制的
需要注意这个议题不是版聊区,聊天可以去 #889 。这里最好只发布开发相关的内容。
有计划支持wayland吗?(或者前后端分离,做一个桌面环境插件(如可以在gnome顶栏上显示课表))
有计划支持wayland吗?(或者前后端分离,做一个桌面环境插件(如可以在gnome顶栏上显示课表))
考虑到本软件主要是为教室大屏设计的,目前我们会优先完成对教室大屏 Linux 常见的 X11 环境进行适配。Wayland 和 DE 插件后面根据实际情况,可能会有适配计划。
话说可以提供类似“该选项由插件XXX管理”的接口实现吗(?
不过,Harmony OS 目前仅支持华为原生开发,Flutter 和 Avalonia 不支持开发 Harmony OS 仅支持开发 open Harmony 系列
不过,Harmony OS 目前仅支持华为原生开发,Flutter 和 Avalonia 不支持开发 Harmony OS 仅支持开发 open Harmony 系列
因为鸿蒙系统禁止非系统服务使用 JIT 编译,因此 .NET 的 CoreCLR 无法直接运行,需改用 Native AOT编译 C# 代码。来源--- DeepSeek
不过,Harmony OS 目前仅支持华为原生开发,Flutter 和 Avalonia 不支持开发 Harmony OS 仅支持开发 open Harmony 系列
目前已经有社区项目将 .NET 和 Avalonia 移植到了 ohos 上
不过,Harmony OS 目前仅支持华为原生开发,Flutter 和 Avalonia 不支持开发 Harmony OS 仅支持开发 open Harmony 系列
目前已经有社区项目将 .NET 和 Avalonia 移植到了 ohos 上
真的吗?看来我的消息有点过时了,那就很不错了
不过,Harmony OS 目前仅支持华为原生开发,Flutter 和 Avalonia 不支持开发 Harmony OS 仅支持开发 open Harmony 系列
因为鸿蒙系统禁止非系统服务使用 JIT 编译,因此 .NET 的 CoreCLR 无法直接运行,需改用 Native AOT编译 C# 代码。来源--- DeepSeek
应该就是用的这个技术吧
主要Flutter有统一的Skia渲染引擎,不依赖平台原生控件,可能体验性要稍微好点。Avalonia基于平台原生图形 API,部分控件使用原生实现。不过感谢您的建议,我后面还是根据方案评估后在选择使用哪个框架吧,谢谢。
Flutter不使用C#作为后端,这开发难度未免有点太大了?毕竟你要重新写ci所有后端 最后选择Avalonia就是因为它和WPF后端一样,都是C#,可以在基本不动后端代码、只重写XAML的情况下完成迁移
我对移动端开发的 Class Island 比较感兴趣,毕竟我高考完就有时间去搞这些了,所以我大致想的是用 Flutter 框架试着开发一下~主要貌似 Avlonia的移动端生态还不成熟,(我还被 Flutter 吸引住了)就打算用这个~就不知道后面会不会维护有点麻烦,主要看上了了 Flutter 的流畅性了。
指正:Avalonia 也是用 Skia 完全自绘制的
OK,知道啦,感谢指正
华为最近新出的电脑好像已经不预装windows了,装的统信的UOS,大概是用linux做过渡,然后转到Harmony os NEXT?
是的,毕竟被制裁了,估计几个月后鸿蒙NEXT电脑版就出来了
余总说了,鸿蒙电脑5月发布
Avalonia适配鸿蒙最新进展,据说已经到了可用阶段。 【震惊!Avalonia在鸿蒙系统上的最新进展!】 https://www.bilibili.com/video/BV1mkVpzFEUP/?share_source=copy_web&vd_source=6aa856832adba3370a78c799b2e76a39