跳转至

components organization

组件组织

系统中所有组件组成一棵单根组件实例树。这棵树结构控制着组件行为的几个重要方面。

![树图展示了组件实例是如何组织的。这种父子关系控制组件行为的几个方面。] (/get-started/images/intro/component-organization.png){: width="712"}

树中的父组件负责将其他组件的实例创建为其子组件,并向其提供必要能力。与此同时,子组件向父组件公开能力。子组件可通过如下方式之一创建:

  • 静态创建:父组件在自身组件声明中声明子组件的存在。
  • 动态创建:父组件在运行时通过 fuchsia.component.Realm 协议将子组件添加到组件集中。

任何一个父组件及其所有子组件在树中形成一个称为领域(realm)的组,领域使父组件可以控制哪些能力可以流入和流出组件子树,从而建立一个能力边界。组件使用 expose 关键字来决定是否将能力导出到领域外:

expose: [
    {
        protocol: "fuchsia.example.Foo",
        from: "self",
    },
],

一旦将能力公开至领域,父组件就可以将其分享给领域内的其它组件。这可以通过使用 offer 关键字达成:

offer: [
    {
        protocol: "fuchsia.example.Foo",
        from: "self",
    },
],

[组件管理器][glossary.component-manager]负责解析通过提供对应能力(如目录或协议)的组件访问该能力的请求。这就是能力路由。组件管理器只能解析在同一领域内公开提供的能力。

![组件如何通过“能力路由”共享能力的图示,描述了资源如何在特定领域内变得可用。] (/get-started/images/intro/capability-routing.png){: width="614"}

glossary.component-manager


最后更新: 2022 年 12 月 31 日(Saturday) 21:07 CST