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 开发者工具,进一步增强了实时协作应用的能力。尽管开发者对其反应不一,微软仍在积极推动其内部应用和外部开源社区的发展。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。