ElectronSharp,.Net跨平台的多一种选择
文章目录
- 背景
- 解决方案
- 小结
背景
最近有个项目是基于Blazor的跨平台项目,要求在Windows、安卓平板和Mac上能跑,而且要求实现视频通话功能,而Web里的视频通话无非就是基于WebRTC技术。经过前期调研,通过套壳MAUI,Windows和安卓平板都能实现在WebView里实现视频通话功能,唯独Mac里不行,查到一些可能的原因:
苹果不允许第三方app通过Safari内核调用摄像头等功能
来源1: https://developer.apple.com/forums/thread/736199
来源2:https://github.com/dotnet/maui/issues/20511
解决方案
那MAUI这条路走不通,只能另寻其他方案,偶然发现Electron.Net,不过这个项目停留在.Net 6,从.Net 7开始由ElectronSharp 继续更新维护,目前最新版本已跟进到.Net 9,按着教程实践了一下,除了前期下载Electron环境因为网络问题有点慢,全程基本没有任何障碍,最终效果也是非常完美:
而且,blazor跑在mac上居然流畅度要优于Windows,这是我所没想到的。
小结
项目最终方案是用Blazor写所有的功能,只是在部署的时候根据不同平台套不同的壳部署:
Windows:WPF+WebView2
安卓平板:MAUI+WebView(这里要吐槽一下,在安卓平板上居然有卡顿,不知道是哪没优化好)
MAC:Electron-Sharp