SuperAPI AI 工具集

robius-app-architecture

编程与开发

查看项目

更新于 10-16 04:41

技能介绍

用途

Robius App Architecture 技能用于指导 Makepad 应用的架构设计,特别是需要与异步后端集成的场景。其最佳实践来源于 Robrix(Matrix 聊天客户端,具有复杂的同步/异步与后台订阅)和 Moly(AI 聊天应用,跨平台原生 + WASM,使用流式 API)两个生产级代码库。

当你在构建带异步后端集成的 Makepad 应用、设计 Makepad 中的同步/异步通信模式,或搭建 Robius 风格的应用结构时,可以使用本技能。相关关键词包括 robrix、robius、makepad app structure、async makepad、tokio makepad。

主要能力

技能提供了一套核心架构模式,将 UI 线程(Makepad)与 Tokio 异步运行时分离:

  • 请求提交:UI 线程通过 submit_async_request() 将类型化的 AppRequest 发送到 MPSC 通道(REQUEST_SENDER)。
  • 工作线程:Tokio 运行时中的 worker_task 接收请求,为每个请求派生异步任务,并通过 Cx::post_action() 将结果回传 UI 线程。
  • 无锁更新队列:对于高频后台更新,使用 crossbeam_queue::SegQueue 存放 DataUpdate,并调用 SignalToUI::set_ui_signal() 唤醒 UI 线程。
  • 状态传递:通过 Scope::with_data() 在控件树中传递共享的 AppState。
  • 启动与关闭流程:启动时初始化日志、应用数据目录、加载持久化状态、更新 UI 可见性并启动异步运行时;关闭时保存窗口几何信息与应用状态。

技能还包含生产级异步模式参考,位于 _base/ 目录:08-async-loading(带加载状态的异步数据加载)、09-streaming-results(使用 SignalToUI 的增量结果)、13-tokio-integration(完整的 Tokio 运行时集成)。

使用方式

技能给出了具体的代码结构示例,包括:

  • 顶层 App 定义(live_design!、App 结构体、LiveRegister、LiveHook、AppMain 实现)。
  • Tokio 运行时集成:静态运行时初始化 start_async_runtime()、请求提交 submit_async_request()、工作线程 worker_task()。
  • 无锁更新队列模式:enqueue_update() 与控件 handle_event 中对 Event::Signal 的轮询处理。
  • 启动序列(handle_startup)与关闭序列(Event::Shutdown)。

最佳实践包括:关注点分离(UI 逻辑留在主线程,异步操作放入 Tokio 运行时)、使用类型化枚举表示请求与动作、高频更新使用无锁队列、入队后始终调用 SignalToUI::set_ui_signal()、异步任务结果使用 Cx::post_action()、通过 Scope::with_data() 传递共享状态、在 live_register() 中先注册基础控件再注册依赖模块。

参考文件包括:references/tokio-integration.md(Robrix 的 Tokio 运行时模式)、references/channel-patterns.md(Robrix 的通道通信模式)、references/moly-async-patterns.md(Moly 的跨平台异步模式,涉及 PlatformSend trait、UiRunner、AbortOnDropHandle、ThreadToken、spawn() 等)。

适用场景

  • 构建需要异步后端集成的 Makepad 应用。
  • 设计 Makepad 中 UI 线程与异步运行时之间的通信模式。
  • 搭建 Robius 风格的应用结构。
  • 需要处理高频后台更新、流式结果或跨平台(原生 + WASM)异步逻辑的项目。

限制

资料未提供该技能的收费、价格、平台支持范围、实际效果或具体安装步骤等信息,这些内容暂未提供。