【问题标题】:How to add two or more FluidDataObject into a container and how to add a FluidDataObject to an exist container dynamically?如何将两个或多个 FluidDataObject 添加到容器中,以及如何将 FluidDataObject 动态添加到现有容器中?
【发布时间】:2021-01-13 07:07:42
【问题描述】:

我使用getTinyliciousContainer获取容器,使用getDefaultObjectFromContainer获取defaultFluidDataObject,如何将两个或多个FluidDataObject添加到容器中以及如何将FluidDataObject动态添加到现有容器?

  const registryEntry: any = new Map([doFactory.registryEntry]);
  const factory = new ContainerRuntimeFactoryWithDefaultDataStore(doFactory, registryEntry);
  const container = await getTinyliciousContainer(src, factory);
  const database = await getDefaultObjectFromContainer<T>(container);

【问题讨论】:

    标签: containers fluid fluid-framework


    【解决方案1】:

    虽然我们确实使用 getDefaultObjectFromContainer 来获取容器,但这只是 Default 对象。

    您可以在 Container 上调用许多额外的方法和请求,为 Container 提供不同的访问模式。

    最简单的,@fluidframework/aqueduct 包包括getObjectFromContainergetObjectWithIdFromContainer。如果您扩展 ContainerRuntimeFactoryWithDefaultDataStore,这些方法可以在您的容器上使用。第一个通过根对象的路径从容器中获取对象。第二个通过对象的 UUID 获取对象。

    但是,这些问题强调了流体系统中一个关键的、解释不足的概念。 数据对象如何(以及在​​哪里以及为什么)存储在容器中?

    最终,数据对象是可以将分布式数据结构捆绑在一起并对其进行操作的流动事物。您还可以添加自己的业务逻辑,创建更复杂的数据模型,处理数据对象生命周期方法。

    从容器的角度来看,这些对象可通过“请求”获得。† 创建容器时,它由一组请求处理程序构成,这些请求处理程序提供对数据对象的访问。上面列出的方法包含了默认请求处理程序,这些处理程序在使用 Aqueduct 创建的容器上默认可用。

    运行时‡确实期望一些根数据对象的概念来执行垃圾收集和执行其他任务。许多开发人员在他们的容器中只使用一个数据对象,但数据对象非常强大。每个数据对象都可以有一个自定义的数据模型,可以单独虚拟化等。

    ‡ 这确实是 OSS 项目中提供的默认运行时。 Fluid 的架构使得您可以相当轻松地更换运行时。

    † 这是基于容器应该是分布式 Web 服务器的理念,提供对服务器内虚拟化对象的访问。

    【讨论】:

      猜你喜欢
      • 2013-12-14
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 2020-09-30
      • 2012-08-23
      • 2021-07-06
      相关资源
      最近更新 更多