ClassIsland icon indicating copy to clipboard operation
ClassIsland copied to clipboard

2.0 开发目标

Open HelloWRC opened this issue 9 months ago • 47 comments

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 序列化/反序列化

HelloWRC avatar Mar 22 '25 08:03 HelloWRC

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白板,这项迁移还是值得的

wjj-8283 avatar Mar 22 '25 12:03 wjj-8283

又及:现在有开发者正在进行Avalonia在HarmonyOS NEXT上的适配,未来可能可以使ci支持HarmonyOS NEXT,鉴于华为电脑设备的Windows许可证已经到期了,且手机正在换用NEXT,这样可能使ci能够在这些设备上运行 未来如果要写集控APP也可以在这上面运行

wjj-8283 avatar Mar 22 '25 13:03 wjj-8283

华为最近新出的电脑好像已经不预装windows了,装的统信的UOS,大概是用linux做过渡,然后转到Harmony os NEXT?

Dreamstarlake avatar Mar 23 '25 02:03 Dreamstarlake

也许,毕竟Harmony的电脑系统似乎还没达到相应的软件生态

wjj-8283 avatar Mar 23 '25 05:03 wjj-8283

Avalonia不用DX,对Windows上的性能应该是有点影响的吧?

wjj-8283 avatar Mar 23 '25 06:03 wjj-8283

确实,Avalonia 不使用 DirectX(DX)可能会对 Windows 上的性能产生一定影响,尤其是在图形密集型应用中。DirectX 是一个高效的图形渲染 API,能够充分利用硬件加速,而 Avalonia 默认使用的是 Skia 图形库,它是跨平台的,但在某些情况下可能无法完全匹配 DirectX 的性能。

Avalonia不用DX,对Windows上的性能应该是有点影响的吧?

Dreamstarlake avatar Mar 23 '25 07:03 Dreamstarlake

确实,Avalonia 不使用 DirectX(DX)可能会对 Windows 上的性能产生一定影响,尤其是在图形密集型应用中。DirectX 是一个高效的图形渲染 API,能够充分利用硬件加速,而 Avalonia 默认使用的是 Skia 图形库,它是跨平台的,但在某些情况下可能无法完全匹配 DirectX 的性能。

Avalonia不用DX,对Windows上的性能应该是有点影响的吧?

~但是WPF使用dx9其实也使性能受到了很大影响~

wjj-8283 avatar Mar 23 '25 10:03 wjj-8283

自己去Material.Avalonia那里导出了一份demo,说实话,Avalonia对触屏的支持确实比WPF好得多(毕竟是可以在移动端用的框架) 官方的demo:(自己编译的,用的VSCode) https://wjj20070926-my.sharepoint.com/:u:/g/personal/1505_wjj20070926_onmicrosoft_com/ES33wo17L-JDi3ntg9NH-TgBkEHDmDsAwJK2i0DA3f1A3g?e=Q9Xm9M

wjj-8283 avatar Mar 23 '25 14:03 wjj-8283

华为最近新出的电脑好像已经不预装windows了,装的统信的UOS,大概是用linux做过渡,然后转到Harmony os NEXT?

是的,毕竟被制裁了,估计几个月后鸿蒙NEXT电脑版就出来了

lladlam avatar Mar 24 '25 16:03 lladlam

我对移动端开发的 Class Island 比较感兴趣,毕竟我高考完就有时间去搞这些了,所以我大致想的是用 Flutter 框架试着开发一下~~主要貌似 Avlonia的移动端生态还不成熟,(我还被 Flutter 吸引住了)就打算用这个~~就不知道后面会不会维护有点麻烦,主要看上了了 Flutter 的流畅性了。

Dreamstarlake avatar Mar 24 '25 16:03 Dreamstarlake

Flutter不使用C#作为后端,这开发难度未免有点太大了?毕竟你要重新写ci所有后端 最后选择Avalonia就是因为它和WPF后端一样,都是C#,可以在基本不动后端代码、只重写XAML的情况下完成迁移

我对移动端开发的 Class Island 比较感兴趣,毕竟我高考完就有时间去搞这些了,所以我大致想的是用 Flutter 框架试着开发一下~主要貌似 Avlonia的移动端生态还不成熟,(我还被 Flutter 吸引住了)就打算用这个~就不知道后面会不会维护有点麻烦,主要看上了了 Flutter 的流畅性了。

wjj-8283 avatar Mar 25 '25 07:03 wjj-8283

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 的流畅性了。

Dreamstarlake avatar Mar 25 '25 11:03 Dreamstarlake

主要Flutter有统一的Skia渲染引擎,不依赖平台原生控件,可能体验性要稍微好点。Avalonia基于平台原生图形 API,部分控件使用原生实现。不过感谢您的建议,我后面还是根据方案评估后在选择使用哪个框架吧,谢谢。

Flutter不使用C#作为后端,这开发难度未免有点太大了?毕竟你要重新写ci所有后端 最后选择Avalonia就是因为它和WPF后端一样,都是C#,可以在基本不动后端代码、只重写XAML的情况下完成迁移

我对移动端开发的 Class Island 比较感兴趣,毕竟我高考完就有时间去搞这些了,所以我大致想的是用 Flutter 框架试着开发一下~主要貌似 Avlonia的移动端生态还不成熟,(我还被 Flutter 吸引住了)就打算用这个~就不知道后面会不会维护有点麻烦,主要看上了了 Flutter 的流畅性了。

Dreamstarlake avatar Mar 25 '25 12:03 Dreamstarlake

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~)

wjj-8283 avatar Mar 25 '25 13:03 wjj-8283

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生态进一步发展

Dreamstarlake avatar Mar 25 '25 15:03 Dreamstarlake

不过Avalonia的性能要求比Flutter的要求低的多得多,至少在某些工控设备或者嵌入式设备上,它对GPU没有任何限制,而Flutter就不一样了,Flutter对GPU是有一定限度要求的,至少要保证能够进行UI渲染

Dreamstarlake avatar Mar 25 '25 15:03 Dreamstarlake

不过Avalonia的性能要求比Flutter的要求低的多得多,至少在某些工控设备或者嵌入式设备上,它对GPU没有任何限制,而Flutter就不一样了,Flutter对GPU是有一定限度要求的,至少要保证能够进行UI渲染

~但是应该不至于有啥新一点的设备连个GPU都达不到要求吧,达不到要求的估计都很旧了,而很多学校基本上6年就换一次设备~

wjj-8283 avatar Mar 26 '25 00:03 wjj-8283

主要Flutter有统一的Skia渲染引擎,不依赖平台原生控件,可能体验性要稍微好点。Avalonia基于平台原生图形 API,部分控件使用原生实现。不过感谢您的建议,我后面还是根据方案评估后在选择使用哪个框架吧,谢谢。

Flutter不使用C#作为后端,这开发难度未免有点太大了?毕竟你要重新写ci所有后端 最后选择Avalonia就是因为它和WPF后端一样,都是C#,可以在基本不动后端代码、只重写XAML的情况下完成迁移

我对移动端开发的 Class Island 比较感兴趣,毕竟我高考完就有时间去搞这些了,所以我大致想的是用 Flutter 框架试着开发一下~主要貌似 Avlonia的移动端生态还不成熟,(我还被 Flutter 吸引住了)就打算用这个~就不知道后面会不会维护有点麻烦,主要看上了了 Flutter 的流畅性了。

指正:Avalonia 也是用 Skia 完全自绘制的

HelloWRC avatar Mar 27 '25 13:03 HelloWRC

需要注意这个议题不是版聊区,聊天可以去 #889 。这里最好只发布开发相关的内容。

HelloWRC avatar Mar 27 '25 13:03 HelloWRC

有计划支持wayland吗?(或者前后端分离,做一个桌面环境插件(如可以在gnome顶栏上显示课表))

ghost avatar Mar 28 '25 08:03 ghost

有计划支持wayland吗?(或者前后端分离,做一个桌面环境插件(如可以在gnome顶栏上显示课表))

考虑到本软件主要是为教室大屏设计的,目前我们会优先完成对教室大屏 Linux 常见的 X11 环境进行适配。Wayland 和 DE 插件后面根据实际情况,可能会有适配计划。

HelloWRC avatar Mar 28 '25 08:03 HelloWRC

话说可以提供类似“该选项由插件XXX管理”的接口实现吗(?

LiPolymer avatar Mar 28 '25 10:03 LiPolymer

不过,Harmony OS 目前仅支持华为原生开发,Flutter 和 Avalonia 不支持开发 Harmony OS 仅支持开发 open Harmony 系列

Dreamstarlake avatar Mar 29 '25 10:03 Dreamstarlake

不过,Harmony OS 目前仅支持华为原生开发,Flutter 和 Avalonia 不支持开发 Harmony OS 仅支持开发 open Harmony 系列

因为鸿蒙系统禁止非系统服务使用 JIT 编译,因此 .NET 的 CoreCLR 无法直接运行,需改用 Native AOT编译 C# 代码。来源--- DeepSeek

Dreamstarlake avatar Mar 29 '25 11:03 Dreamstarlake

不过,Harmony OS 目前仅支持华为原生开发,Flutter 和 Avalonia 不支持开发 Harmony OS 仅支持开发 open Harmony 系列

目前已经有社区项目将 .NET 和 Avalonia 移植到了 ohos 上

HelloWRC avatar Mar 29 '25 12:03 HelloWRC

不过,Harmony OS 目前仅支持华为原生开发,Flutter 和 Avalonia 不支持开发 Harmony OS 仅支持开发 open Harmony 系列

目前已经有社区项目将 .NET 和 Avalonia 移植到了 ohos 上

真的吗?看来我的消息有点过时了,那就很不错了

Dreamstarlake avatar Mar 29 '25 13:03 Dreamstarlake

不过,Harmony OS 目前仅支持华为原生开发,Flutter 和 Avalonia 不支持开发 Harmony OS 仅支持开发 open Harmony 系列

因为鸿蒙系统禁止非系统服务使用 JIT 编译,因此 .NET 的 CoreCLR 无法直接运行,需改用 Native AOT编译 C# 代码。来源--- DeepSeek

应该就是用的这个技术吧

Dreamstarlake avatar Mar 29 '25 13:03 Dreamstarlake

主要Flutter有统一的Skia渲染引擎,不依赖平台原生控件,可能体验性要稍微好点。Avalonia基于平台原生图形 API,部分控件使用原生实现。不过感谢您的建议,我后面还是根据方案评估后在选择使用哪个框架吧,谢谢。

Flutter不使用C#作为后端,这开发难度未免有点太大了?毕竟你要重新写ci所有后端 最后选择Avalonia就是因为它和WPF后端一样,都是C#,可以在基本不动后端代码、只重写XAML的情况下完成迁移

我对移动端开发的 Class Island 比较感兴趣,毕竟我高考完就有时间去搞这些了,所以我大致想的是用 Flutter 框架试着开发一下~主要貌似 Avlonia的移动端生态还不成熟,(我还被 Flutter 吸引住了)就打算用这个~就不知道后面会不会维护有点麻烦,主要看上了了 Flutter 的流畅性了。

指正:Avalonia 也是用 Skia 完全自绘制的

OK,知道啦,感谢指正

Dreamstarlake avatar Mar 29 '25 13:03 Dreamstarlake

华为最近新出的电脑好像已经不预装windows了,装的统信的UOS,大概是用linux做过渡,然后转到Harmony os NEXT?

是的,毕竟被制裁了,估计几个月后鸿蒙NEXT电脑版就出来了

余总说了,鸿蒙电脑5月发布

lcp1234 avatar Apr 08 '25 06:04 lcp1234

Avalonia适配鸿蒙最新进展,据说已经到了可用阶段。 【震惊!Avalonia在鸿蒙系统上的最新进展!】 https://www.bilibili.com/video/BV1mkVpzFEUP/?share_source=copy_web&vd_source=6aa856832adba3370a78c799b2e76a39

Dreamstarlake avatar May 07 '25 11:05 Dreamstarlake