fluid-framework - 如何让Fluid框架离线工作?

标签 fluid-framework

我们以最低要求测试了流体框架。 演示应用程序中一切正常。 https://github.com/microsoft/FluidExamples

问题:

  1. Fluid 框架如何离线工作?
  2. 我们的后端是用asp.net core编写的。 Fluid框架的服务器端是用node.js编写的。 如何将asp.net core后端与fluid服务集成以获取最新的文档状态? 需要为 Fluid 服务编写驱动程序?

最佳答案

  1. 离线。

对于CRDTs来说,离线是一个有趣的话题。一般来说。只要所有连接的客户端都具有合并更改所需的元数据,Fluid Framework 就能处理间歇性(短时间)离线场景。当用户进行更改时,她会根据最小序列号 (MinSeq) 进行更改。她的离线更改被添加到 total order broadcast这样它们就高于她的更改的 MinSeq,它们将被合并而无需额外处理。

MinSeq 值得写一整篇文章,但它是一个序列号,所有连接的客户端都可以在该序列号下垃圾收集合并更改所需的元数据。因此,只要每个客户端都有该元数据,即使您处于离线状态,合并也很容易。

对于较长的离线场景,重新连接的客户端可以请求降低 MinSeq(可能降低到离线客户端的最后一个 MinSeq)。然后,所有客户端将获取自请求的 MinSeq 以来的操作并重新创建元数据。此时,新的更改可以很容易地进入,因为我们已经模仿了新更改高于最小序列号的场景。

这可能会导致暂时的性能和内存问题,但在合理的实验中并不是问题。我不相信此功能目前在 Fluid Framework 中实现。代码库,但已按上述方式设计。 (关于这个主题的 PR 会非常有趣!)

对于更长时间的离线场景,您可能需要 three-way merge 。例如:两个用户打开一个文档。用户 A 乘坐飞机(失去互联网)并编写《麦克白》,用户 B 编写《傲慢与偏见》,当用户 A 重新加入 session 时,预期的行为是什么?这些是完全不兼容的文档状态,因此我们需要向用户呈现某种对话。

这尚未实现,但我们已经讨论了处理三向合并的一些框架人体工程学(即应用程序开发人员需要哪些 API。)

  • 在非 NodeJS 后端运行 Fluid
  • 文档状态由客户端管理,对服务器不透明。 this issue中有类似的讨论。在 .NET 后端获取 Fluid Framework 文档状态的最简单方法是运行 JS 引擎并打开 Fluid 文档。您还可以运行托管 Fluid 文档的 NodeJS 微服务。该服务将有一个简单的 API 接口(interface),可让您获取所需的数据。

    关于fluid-framework - 如何让Fluid框架离线工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65004396/

    相关文章:

    fluid-framework - 如何连接到 Routerlicious 本地服务器?

    fluid-framework - Fluid-framework支持交易吗?

    fluid-framework - 如何修复 Tinylicious 服务器中的连接文档错误?

    fluid-framework - 如何将 SharedMap 插入 SharedObjetSequence

    javascript - Fluid-Framework 和 Signalr 之间的区别