Fluid Framework 2.0 Alpha 版本的 SharedTree 分布式数据结构和开发者工具

Fluid Framework 2.0 概览

微软正在准备发布 Fluid Framework 的 2.0 版本,旨在支持实时协作应用。目前,2.0 版本的 Alpha 版本和内部版本已经发布,引入了新的面向对象的共享数据结构以及基于浏览器的开发者工具。

Fluid Framework 简介

Fluid Framework 是一组客户端库和底层服务器技术,用于构建实时协作应用。在这些应用中,客户端共享由框架保持同步的相同数据结构。Fluid Framework 旨在简化多个客户端并发更改的合并,同时利用现有的 Web 技术。

Fluid Framework 的核心概念包括:

  • 共享数据结构(DDS,分布式数据结构):用于存储和同步数据。
  • Fluid 服务:运行在服务器上,负责与连接的 Fluid 客户端通信。Fluid 服务可以在开发机器或服务器上本地运行,微软还提供了托管的 Azure Fluid Relay 服务,用于生产环境。

Fluid Framework 2.0 的新特性

1. SharedTree 数据结构

在 1.0 版本中,Fluid Framework 提供了简单的数据结构,如字符串、哈希映射和计数器。2.0 版本引入了名为 SharedTree 的完全封装数据结构,它是一个包含对象的层次化树状节点集合。每个对象可以包含不同类型的属性,包括其他对象。SharedTree 的根节点是 Fluid Framework 数据同步的入口点,并提供原子节点树操作方法,用于插入、删除和移动节点。

SharedTree 的定义使用了 Builder 模式,代码简洁但冗长。例如:

const builder = new SchemaBuilder('95ac89d1-d485-4210-b6f2-3a23bfd6366f');

export const float64 = builder.primitive('number', ValueSchema.Number);
export const string = builder.primitive('string', ValueSchema.String);

export const userSchema = builder.object('demo:user', {
    local: {
        name: SchemaBuilder.field(FieldKinds.value, string),
        id: SchemaBuilder.field(FieldKinds.value, string),
    },
});

export const noteSchema = builder.object('demo:note', {
    local: {
        id: SchemaBuilder.field(FieldKinds.value, string),
        text: SchemaBuilder.field(FieldKinds.value, string),
        author: SchemaBuilder.field(FieldKinds.value, userSchema),
        votes: SchemaBuilder.field(FieldKinds.sequence, userSchema),
        created: SchemaBuilder.field(FieldKinds.value, float64),
        lastChanged: SchemaBuilder.field(FieldKinds.value, float64)        
    },
});

export const appSchema = builder.object('demo:app', {
    local: {
        notes: SchemaBuilder.field(FieldKinds.sequence, noteSchema),
    },
});

export const rootField = SchemaBuilder.field(FieldKinds.value, appSchema);

export const schema = builder.intoDocumentSchema(rootField);

SharedTree 的开发受到了开发者反馈的驱动,特别是那些希望 Fluid 数据结构更贴近文档对象模型、继承树和其他常见分层数据用例的开发者。

2. Fluid 开发者工具

Fluid Framework 2.0 还推出了 Fluid Developer Tools,这是一个适用于 Edge 和 Chrome 的浏览器扩展,帮助开发者开发和调试 Fluid Framework 应用。该工具允许开发者查看 Fluid Framework 应用中的共享数据和状态,并可以更改连接状态和共享数据以测试不同场景,如离线或重新连接尝试。此外,它还包含事件日志和性能日志的遥测图表。

开发者反馈与使用情况

开发者对 Fluid Framework 的反应较为冷淡,部分开发者认为它相较于现有技术(如 SignalR)的优势不明显。为此,Fluid Framework 的 FAQ 中专门有一节解释它与 SignalR 的区别。微软内部已经在 Microsoft 365 产品中的 Microsoft Loop 应用中使用了 Fluid Framework。

Fluid Framework 的历史与未来

Fluid Framework 于 2019 年 11 月在微软 Build 大会上作为预览技术首次发布,并于 2020 年 9 月开源。2.0 版本的正式发布时间尚未确定。自 2023 年 6 月以来,GitHub 仓库频繁发布了新版本的内部构建,最新的版本是 v2.0.0-internal.6.1.1。

总结

Fluid Framework 2.0 通过引入 SharedTree 数据结构和 Fluid 开发者工具,进一步增强了实时协作应用的能力。尽管开发者对其反应不一,微软仍在积极推动其内部应用和外部开源社区的发展。

阅读 32
0 条评论