跳到主要内容

架构

UltimateUI 的核心设计是把 C# UI 操作变成紧凑、可校验的二进制 wire frame。 这让用户代码保持 JS-free,同时仍然能在现代 WebKit 中更新 DOM。

数据流

C# Element tree
-> MountContext / DomUpdateContext
-> RingEncoder
-> IDomBackend
-> WebKitGTK WebView
-> embedded shim decoder
-> DOM

事件反向路径:

DOM event
-> shim listener table
-> window.webkit.messageHandlers.uui
-> WebKitGtkSurface
-> EventDispatcher
-> C# delegate

主要模块

路径职责
spec/*.jsonopcode、元素、事件、样式的单一数据源
src/UltimateUI.SourceGen/根据 spec 生成 DOM 类型、writer、dispatcher 和 shim asset
src/UltimateUI.Core/元素树、arena、encoder、mount/update transaction、listener registry
src/UltimateUI.Hosting/render host、backend probe、WebKitGTK host、JS evaluate backend
src/UltimateUI.Native/WebKitGTK、JSC、GLib、GTK 的 P/Invoke surface
shim/TypeScript DOM decoder 和 renderer event bridge
samples/Hello/CSX + WebKitGTK 端到端示例

为什么需要 shim

现代 WebKit 不再提供公开的 webkit_dom_* C API。外部进程修改 DOM 的可用 通道是 JavaScript 引擎。UltimateUI 把这个细节封装在固定 shim 内:用户调用 C# API,框架提交二进制 frame,shim 只负责解码和执行。