Fluid Framework 2.0 Alpha具有SharedTree分布式数据结构和开发人员工具

2023年08月25日 由 alex 发表 326 0

微软正在准备用于实时协作的Fluid Framework 2.0 版本。目前的alpha版和内部发布版本增加了一种新的面向对象的共享数据结构和基于浏览器的开发工具。


特色


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


Fluid Framework的主要概念是共享数据结构(称为DDS,分布式数据结构)和运行在服务器上的Fluid服务。Fluid服务可以在开发机器或服务器上本地运行,并负责与连接的Fluid客户端进行通信。方便的是,Microsoft Azure提供了托管的Azure Fluid Relay服务,用于生产负载。


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


定义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.0的Fluid Framework中的另一个功能是推出了Fluid开发工具,这是针对Edge和Chrome的浏览器扩展,用于帮助开发和调试Fluid Framework应用程序。它允许开发人员查看Fluid Framework应用程序中的状态和共享数据。开发人员可以更改连接状态和共享数据以测试不同的场景,例如离线或重新连接尝试。此外,它还包括性能日志的事件日志和遥测图表。


开发人员对Fluid Framework的反响并不热烈,一些开发人员难以看到它相对于像SignalR这样已经成熟的技术的优势(以至于Fluid Framework的常见问题解答中有一个部分专门讨论这个问题)。微软在Microsoft 365的Microsoft Loop应用程序中内部使用了Fluid Framework。


Fluid Framework于2019年11月首次以预览技术的形式在微软的Build大会上发布。它在2020年9月开源。关于2.0版本正式发布的时间表目前还不确定。GitHub存储库自6月以来已经发布了新版本的频繁内部构建版本,最新的版本是v2.0.0-internal.6.1.1。

文章来源:https://www.infoq.com/news/2023/08/fluid-framework-v2-alpha/
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消