找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

983

积分

0

好友

139

主题
发表于 5 天前 | 查看: 11| 回复: 0

近两年,.NET 生态在跨平台桌面开发领域进展显著。特别是 Avalonia UI 框架的快速成熟,为开发者提供了一个可替代 Electron 的高性能原生解决方案。随着 Avalonia 11 的发布,其统一的 .NET 6+ 渲染栈和内置的 Fluent 2 风格控件,使得应用的视觉体验与 Windows 11 原生应用不相上下。基于此,我们对先前采用 CPF.NET 开发的视频会议 Demo 进行了重构与移植。

本文介绍基于 Avalonia 11.3.NET 8 构建的跨平台视频会议客户端。该应用不仅能在 Windows 上流畅运行,也已在银河麒麟 V10 SP1 等国产信创操作系统上通过实测。

项目介绍

OVCS.Avalonia 是一个功能完整的视频会议系统原型,包含服务端与客户端。该项目旨在验证 Avalonia 框架在复杂多媒体实时交互场景下的可行性与稳定性。项目 UI 层完全基于 Avalonia 重构,充分利用了其卓越的跨平台能力和现代化的设计语言,适用于企业内部协作及国产化软硬件适配场景。

项目功能

1. 多人音视频会话

  • 支持动态调节视频码率以适应网络波动,并优先保障语音流畅。
  • 集成 AEC(回声消除)、DENOISE(降噪)、AGC(自动增益)和 VAD(静音检测)等音频处理技术,确保通话清晰。
  • 提供 1×1、2×2、3×3 等多种视频分屏布局。

2. 屏幕共享

  • 任意参会成员均可发起桌面共享,画面质量可根据网络状况自适应调整。
  • 支持远程控制授权,实现高效的协同操作。

3. 电子白板协作

  • 支持绘图、插入图片、截屏等功能,内容可导出为位图。
  • 区分“观看”与“控制”两种协作模式。
  • 网络断线后自动重连,并同步最新的白板状态。

项目特点

  • 真跨平台:同一套代码编译后,可直接在 Windows 7/10/11、银河麒麟、统信 UOS 等系统中运行。
  • 现代 UI 体验:开箱即用 Avalonia 11 的 Fluent 2 控件,界面简洁、动效流畅,符合现代审美。
  • 轻量高效:相比基于 Web 技术的方案,原生应用的资源占用更低,启动速度更快。
  • 国产化适配:已在主流信创操作系统实测通过,支持 X64、ARM、LoongArch 等多种 CPU 架构。

技术栈

  1. 开发工具:Visual Studio 2022
  2. 开发框架:.NET 8.0
  3. 开发语言:C#
  4. UI 框架:Avalonia 11.3

项目结构说明

解决方案由三个项目组成:
项目解决方案结构

1. OVCS.Core:公共类库

定义视频会议中服务端与客户端共用的信息,如消息协议、公共实体等。需特别注意 GroupExtension 类,它用于记录当前会议的状态(如主持人、正在共享桌面的用户等)。

public class GroupExtension
{
    /// <summary>
    /// 主持人ID
    /// </summary>
    public string ModeratorID { get; set; }
    /// <summary>
    /// 正在共享远程桌面的用户ID
    /// </summary>
    public string DesktopSharedUserID { get; set; }
    /// <summary>
    /// 主持人是否开启白板
    /// </summary>
    public bool IsModeratorWhiteBoardNow { get; set; }
}

2. OVCS.Server:服务端

基于 .NET 8 的控制台程序。在 CustomizeInfoHandler 类中处理客户端请求,核心逻辑位于 MultimediaServer_CustomizedMessageReceived 事件处理函数。

public void Initialize(IMultimediaServer server)
{
    this.chatGroupManager = new ObjectManager<string, ChatGroup>();
    this.multimediaServer = server;
    this.multimediaServer.CustomizedMessageReceived += MultimediaServer_CustomizedMessageReceived;
    this.multimediaServer.UserDisconnected += MultimediaServer_UserDisconnected;
    this.multimediaServer.SomeoneJoinChatGroup += MultimediaServer_SomeoneJoinChatGroup;
}

3. OVCS.ClientAvalonia:客户端

基于 .NET 8 和 Avalonia 的 UI 客户端。主要业务逻辑在 MainWindow.axaml 中实现,通过 Multimedia_CustomizedMessageReceived 函数处理服务端消息。

internal void Initialize(string _roomID)
{
    App.Multimedia.OutputVideo = true;
    App.Multimedia.SpeakerVoiceNotified += Multimedia_SpeakerVoiceNotified;
    App.Multimedia.CustomizedMessageReceived += Multimedia_CustomizedMessageReceived;
    App.Multimedia.ConnectionInterrupted += Multimedia_ConnectionInterrupted;
}

运行效果

在银河麒麟 V10 SP1 上的实测表明,客户端启动迅速,界面渲染流畅,Fluent 2 风格控件与系统融合自然。视频通话延迟可控,语音清晰无回声;屏幕共享画面更新及时,白板操作响应灵敏。系统能在网络波动时自动降级以保证语音优先,整体体验接近商业产品。在 Linux 及信创系统 上部署极其简单,只需拷贝发布文件夹,无需安装额外依赖。
银河麒麟系统运行截图

获取源码与运行

项目结构清晰,适合学习或二次开发:

  • Gitee 地址https://gitee.com/smallcore/avalonia-demo
  • Windows:安装 .NET 8 后,直接双击生成的 .exe 文件即可运行。
  • Linux / 信创系统:进入发布目录(如 .net8.0),执行 dotnet OVCS.ClientAvalonia.dll 启动客户端。服务端部署方式类似。

总结

Avalonia 的崛起为 .NET 开发者打开了构建高性能、原生跨平台桌面应用的大门。OVCS.Avalonia 项目不仅是一次技术栈的迁移,更是在复杂多媒体业务场景下对 Avalonia 框架能力的一次有效验证。它证明,无需依赖 Electron 或 WebView,利用 .NET 生态同样能打造出体验优异、真正跨平台的桌面应用,并完美适配国产化环境。如果你正在寻找 .NET 平台的跨平台 UI 解决方案,Avalonia 是一个值得深入评估的选择。




上一篇:.NET 8 GC调优实战指南:从内存管理到高性能系统设计
下一篇:C# WinForm实战:构建支持多协议解析的实时网络数据包监控系统
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 20:30 , Processed in 0.156194 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表