原生架构

WinUI 外壳、Rust Native Host 与共享 Web 视图的边界。

Windows · WinUI 预览版

WinUI 外壳、Rust Native Host 与共享 Web 视图的边界。

页面说明

原生架构 是 OFPlayer 本地优先音乐工作流的一部分。这个页面会先说明功能边界、适用场景和下一步入口,再交给网页播放器或工具页面完成具体操作。

OFPlayer 面向有个人音乐收藏的用户,重点放在本地文件播放、WebDAV 与 Subsonic/Navidrome 音乐库连接、歌词和音频工具、隐私优先的数据处理,以及足够克制的桌面式界面。

如果你只是想试用,可以从网页版开始导入本地音频;如果已经有 NAS、服务器或远程曲库,可以继续阅读教程,把 OpenList、WebDAV 或 Navidrome 接到同一套播放体验里。

页面内容会尽量说明真实可用的能力,不把尚未完成的方向包装成已经上线的功能。遇到部署、连接或格式问题时,可以顺着相关文档和工具逐步检查,而不是在播放器里反复猜配置。

对于搜索、分享或禁用脚本的访问场景,这份静态内容也会保留核心信息:页面主题、产品边界、相关入口和下一步操作都能被直接读取,不依赖前端应用完成后才出现。

每个入口都会尽量连接到相邻的说明页,避免只留下单点页面,内容也会随着产品发布持续更新。

从这里可以继续访问 OFPlayer 文档、下载与版本、GitHub。这些内部入口覆盖产品介绍、教程、文档、下载和实际工具,方便从了解能力一路走到部署、整理曲库和开始播放。

原生架构

本页描述 2026-09-22 的 WinUI 迁移实现。Tauri 仓库保留的 Vue 主应用、WinUI 原生外壳和网站 Web 播放器是不同入口。

三层职责

位置 职责
Windows 外壳 src-winui/OFPlayer.WinUI XAML 导航、曲库列表与网格、设置、对话框、系统媒体会话
C# 核心与通信 src-winui/OFPlayer.WinUI.Core 宿主协议、stdio 传输、状态归并、输出设备和业务策略
Rust Native Host src-tauri/src/native_host.rs、native_session.rs 曲库与数据库、导入扫描、播放队列、解码输出、远端资源和设备接力

沉浸视图和歌词胶囊复用 Vue Web 视图,由 WebView2 承载。它们从宿主接收播放状态,不是另一个拥有独立队列的播放器。

导航与内容

左上角 SourcePickerView 选择本地曲库或远端连接,MainWindow 组织侧栏。LibraryPageView 承载本地曲目、远端内容和分组网格。

数据层级保持 曲库 → 歌单 → 曲目。最近导入、收藏、队列等是智能视图。专辑与艺术家来自元数据分组;艺术家下钻专辑时,宿主查询保留艺术家过滤条件,避免同名专辑混入其他人的曲目。

MainViewModel 的 Catalog、Management、Playback、Remote、Hub 等部分协调界面和宿主调用。新增功能时先确定哪个模块拥有状态,不在 XAML 事件中另建播放权威。

播放与界面更新

用户操作经 C# 客户端请求 Native Host,由同一个原生会话管理队列与播放。宿主事件更新主播放栏、系统媒体会话,以及沉浸和胶囊。

进度、电平允许合并,关键状态事件需要保留。胶囊电平来自实际音频引擎;封面通过 WebView2 的受控资源路径提供,不能把任意本地路径直接当作网页 URL。

数据与预览

NativeHostService 默认为 WinUI 使用独立预览数据目录,也支持显式配置。数据库由宿主持有跨进程独占锁;网页 IndexedDB 与它不是同一份数据。

桌面 stdio 通道本身不需要监听网络端口。开启手机接力后运行的局域网服务属于另一项明确启用的能力,不能因此声称整个应用永不访问网络。

尚需保留的边界

Web 主题 token 不直接控制原生 XAML 外观;原生和 Web 歌词并非所有效果都已一致。更新检查、许可显示模型也不能替代实际安装或完整业务限制。当前状态见Windows 版本说明

继续阅读宿主通信与状态构建与本地运行