@fluidframework/register-collection

中文文档
3.12.0发布于 2026/11/11MITTypeScriptES Module近 30 天下载 3.1万

协商一致登记册

中文使用文档
文档目录15 节
  1. 使用 Fluid 框架库
  2. 安装
  3. 从此软件包导入
  4. API 文档
  5. 创建和实例类型
  6. 在流体中检测货币
  7. 解决冲突政策
  8. 客户最低要求
  9. 支持的运行时间
  10. 支持的工具
  11. 模块分辨率
  12. 模块格式
  13. 贡献准则
  14. 帮助
  15. 商标

@ fluidframework/ register-collection (英语)

协商一致的登记册收集是一个分布式数据结构(DDS),它拥有一套登记册及其在同时更新过程中生成的版本。 在最简单的定义中,单一登记册上的两个更新如果它们之间没有因果关系(即也不知道另一个)则同时进行。 在这种同时更新的情况下,登记册内部储存所有可能的版本.

使用 Fluid 框架库

对于依赖流体框架库的公共API,我们建议 ^ (caret)版本范围. 例如,使用 ^1.3.4。 。 。 .

依赖不稳定的API,例如: beta API,我们推荐一个更具限制性的版本范围. 例如,使用一个 ~ 版本范围.

安装

运行此命令以安装软件包 :

npm i @fluidframework/register-collection

从此软件包导入

此软件包使用 packet.json 导出 通过支持级别将API分离. 有关支助保障的信息改为: API 支持级别。 。 。 .

导入 public API 从 @fluidframework/register-collection。 。 。 .

导入 legacy API 从 @fluidframework/register-collection/legacy。 。 。 .

API 文档

读取 @ fluidframework/ register-collection (英语) API 文档 https://fluidframework.com/docs/apis/register-collection (中文(简体) )。 。 。 .

创建和实例类型

使用 ConsensusRegisterCollection.create(runtime) 创建收藏。 使用 ConsensusRegisterCollection.getFactory() 登记工厂。 例如,说明: ConsensusRegisterCollection 类型是用于 IConsensusRegisterCollection。 。 。 .

import {
    ConsensusRegisterCollection,
    type IConsensusRegisterCollection,
} from "@fluidframework/register-collection/legacy";

const registers: IConsensusRegisterCollection<string> =
    ConsensusRegisterCollection.create(runtime);

在流体中检测货币

在分布式系统文献中,检测通由需要某种形式的逻辑/物理时钟. 在复制数据库(如:dynamodb)中使用的一种受欢迎的技术称为版本向量,每个键存储一个集合 [time, value] tu. time 基本上是用于决定更新货币的参考钟。 每次更新到一个密钥包括: time,主要用于说明如何 caught up 复制品是在更新时复制的.

在Fluid中,每个操作都包含一个参考序列编号(refSeq)),主要指客户端在更新过程中(从序列号来看)是如何被抓住的. 我们可以利用这个属性来实施类似的货币模型. 数学上,如果更新有 refSeq N,它可以覆盖/丢弃任何其他先前的值 sequenceNumber (seq) <= N。这样做是安全的,因为客户在发布自己的更新之前,必须看到所有这些更新。 因此,这一更新与这些覆盖的更新不同时进行。 然而,更新与任何其他更新同时进行 seq > N因此,这些版本仍然保留.

解决冲突政策

以下是发展事务司执行的政策:

  • 版本:返回所有存储的并行版本. App负责解决冲突。 亚马逊基于dynamodb的购物车政策是这一政策的受欢迎的例子.

  • LWW: 键的上一个写入总是覆盖任何先前的写入( aka last write win policy) 。 这与Fluid的"共享地图"政策完全相同.

  • 原子:政策遵循共享分布式锁的相同语义. 在所有同步更新中,只有第一位作者获胜. 在分布式系统文献中,注册更新政策称为 Atomic。此行为需要可线性化的注册。 可线性寄存器的行为仿佛只有一个数据拷贝,而且每个操作似乎都在某一时间点上在解剖上生效. 这个定义意味着操作按照定义明确的顺序执行. 在同时更新时,我们执行 compare-and-set 操作,我们比较一个存储的寄存器 seq 与来件 refSeq。最早的操作覆盖存储 seq 赢是因为每个客户都同意价值 因此,我们可以安全返回第一个值.

客户最低要求

Fluid框架客户端库支持此文档中的平台. 这些要求有意具有限制性. 在一个主要的版本系列中,我们可以放松这些要求,但我们不能使其更严格. 对于长期支持(LTS)版本,我们可能需要支持这些平台几年.

其他配置可以奏效,但Fluid框架不支持. 如果一个不支持的配置停止工作, 我们不会将此归类为错误 . 要请求支持未列出的配置, 请存档 . 产品组会评估你的要求. 在此问题上,请具体说明配置的现状:

  • 配置有效但需要官方支持.
  • 配置不起作用,需要更改.

支持的运行时间

  • Fluid框架支持节点.js版本22和24同时收到 上游支助。 。 。 .
  • Fluid框架支持支持ES2022标准库的现代浏览器.

支持的工具

  • 类型脚本 6.0数字 :
    • 流体框架支持全部 strict 选项.
    • 设定建设目标(lib, (中文(简体) ), target改为: ES2022 或后会.
    • 启用 strictNullChecks。 。 。 .
    • 流体框架不支持 在 TypeScript 6.0 中贬值的配置选项。 。 。 .
    • 流体框架不完全支持 exactOptionalPropertyTypes。 。 。 . 如果您启用此选项, 请不要使用 in, (中文(简体) ), Reflect.has, (中文(简体) ), Object.hasOwn,或 Object.prototype.hasOwnProperty 改为Fluid框架类型的窄成员. 这些方法可以错误地排除 undefined 从可能的值.
  • 网络软件包 页:1
    • 我们不需要一个特定的捆绑者. 其他处理ES模块的捆绑机可以工作,但我们只积极测试网页包.

模块分辨率

在类型脚本中 compilerOptions,使用时 Node16, (中文(简体) ), Node20, (中文(简体) ), NodeNext,或 Bundler 模块分辨率. 这些设置遵循 节点.js v12+无害环境管理 分辨率和加载算法。 。 。 .

不使用 Node10 模块分辨率.

模块格式

  • ES模块: 使用ES模块来消耗Fluid框架客户端软件包,包括在Node.js中.
  • 常见JS : Fluid Framework在3.0版本或后期不正式支持CommonJS.

贡献准则

你们可以 贡献 通过这些方式实现流体框架:

详细指示改为: repo 文档。 。 。 .

本项目遵循 Microsoft 开源行为守则。 。 。 . 更多信息,改为: 《行为守则》经常被问到的问题。 。 。 . 问题或评论,联系 打开码@ microsoft.com。 。 。 .

这个项目可能包含微软项目的商标或标志,产品,或服务. 这些商标或标志的使用必须遵循微软 商标和品牌准则。 。 。 . 在这个项目的修改后版本中使用微软商标或标志不得造成混淆或暗示微软赞助.

帮助

读取 流体框架文件 用于了解流体框架概念和API.

要求提供文件未载列的资料, 创建问题。 。 。 .

商标

这个项目可能包含微软项目的商标或标志,产品,或服务.

这些商标或标志的使用必须遵循微软的 商标和品牌准则。 。 。 .

在这个项目的修改后版本中使用微软商标或标志不得造成混淆或暗示微软赞助.

版本与发布记录

@fluidframework/register-collection 共发布 695 个版本,首次发布于 2020/09/01;过去 12 个月发布了 48 个版本。

版本发布日期距今
3.12.0latest2026/11/114 天前
3.11.02026/11/0411 天前
3.10.02026/11/0411 天前
3.7.02026/10/2719 天前
3.6.02026/10/2026 天前
3.5.02026/10/131 个月前

其他发布通道:next → 2.0.0-dev-rc.1.0.0.225277,canary → 2.0.0-internal.8.0.8,dev → 2.116.0-416006,rc → 2.118.1。

关于 @fluidframework/register-collection 的常见问题

@fluidframework/register-collection 是什么?

协商一致登记册

如何安装 @fluidframework/register-collection?

在项目目录运行 npm install @fluidframework/register-collection,或使用 pnpm add / yarn add / bun add。

@fluidframework/register-collection 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@fluidframework/register-collection 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@fluidframework/register-collection 可以商用吗?

@fluidframework/register-collection 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@fluidframework/register-collection 的下载量有多少?

根据 npm 官方下载统计,@fluidframework/register-collection 在 2026/10/15 – 2026/11/13 这 30 天内被下载 31,067 次,日均约 1,036 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@fluidframework/register-collection 还在维护吗?

最新版本 3.12.0 发布于 2026/11/11(4 天前);至今共发布 695 个版本,其中过去 12 个月发布了 48 个;首次发布于 2020/09/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。