From 14f3edf2afba0d29a9067f3af8f55e3a1fb3c240 Mon Sep 17 00:00:00 2001 From: Eric X Date: Sun, 7 Aug 2022 12:43:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E6=8B=86=E5=88=B0=E5=8D=95=E7=8B=AC?= =?UTF-8?q?=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_common/intro/_components_capabilities.md | 23 +++++---- .../_common/intro/_components_organization.md | 50 +++++++------------ 2 files changed, 32 insertions(+), 41 deletions(-) diff --git a/get-started/_common/intro/_components_capabilities.md b/get-started/_common/intro/_components_capabilities.md index c917b833..6f0f83ab 100644 --- a/get-started/_common/intro/_components_capabilities.md +++ b/get-started/_common/intro/_components_capabilities.md @@ -1,19 +1,23 @@ -## Component capabilities + +## 组件功能 -Components obtain privileges to access various parts of the wider system + +组件通过**功能**获得访问更大系统的各个部分的权限。每个组件都可以声明它能提供给系统的新功能以及所需的由其他组件(或框架)提供的功能。 -As you just saw, `runner` is an example of a capability declaring the runtime + +如您所见,`runner` 是一个声明组件运行时所需功能的例子。其它通用功能类型的例子是访问文件系统资源的 `directory` 和与其它组件通信的 `protocol`(协议)。 -Developers declare the capability types required by the component using the + +开发者在组件清单声明组件所需要的功能类型。以下是一个需要两个功能的组件清单示例:对 `example-data` 目录的读权限和以 FIDL 协议描述的名为 `fuchsia.example.Foo` 的服务。 ```json5 use: [ @@ -28,6 +32,7 @@ use: [ ] ``` -Component manager uses the capability declarations to populate each component's + +组件管理器依据功能声明将各个组件所需的目录处理句柄填入各自的命名空间。对于本例子而言,组件将在其命名空间中接收 `/example/data` 和 `/svc/fuchsia.example.Foo`。 diff --git a/get-started/_common/intro/_components_organization.md b/get-started/_common/intro/_components_organization.md index 75e1202c..a088092f 100644 --- a/get-started/_common/intro/_components_organization.md +++ b/get-started/_common/intro/_components_organization.md @@ -1,37 +1,28 @@ - -## 组件架构 +## Component organization - -系统中所有组件组成一棵单根**组件实例树**。这棵树结构控制着组件行为的几个重要方面。 +aspects of component behavior. - -![树图展示了组件实例是如何组织的。这种父子结构控制组件行为的几个方面。] (/get-started/images/intro/component-organization.png){: width="712"} - -树中的父组件负责其子组件的创建并提供必要功能。与此同时,子组件向父组件公开功能。子组件可通过如下方式之一创建: +to the parent. Child components can be created one of two ways: - -* **静态创建** 父组件在自身组件声明中声明子组件。 -* **动态创建** 父组件在运行时通过 `fuchsia.component.Realm` 协议将子组件添加到组件集中。 + runtime using the `fuchsia.component.Realm` protocol. - -任何一个父组件和它所有子组件在树中形成一个称之为**领地**的组,领地使父组件可以控制哪个功能流可以进出组件子树, -以此建立一个功能边界。组件自行决定是否通过 `expose` 关键字暴露其功能给领地外部: +`expose` keyword: ```json5 expose: [ @@ -42,9 +33,8 @@ expose: [ ], ``` - -一旦功能暴露到领地之中,父组件可以将其分享给领地内的其它组件。这可以通过使用 `offer` 关键字达成: +Once a capability is exposed to the realm, the parent can share it with other +components within the same realm. This is done using the `offer` keyword: ```json5 offer: [ @@ -55,25 +45,21 @@ offer: [ ], ``` - -[组件管理器][glossary.component-manager]负责解析与功能提供者之间的访问请求(如目录或协议)。 -这就是**功能路由**。组件管理器只能解析那些在领地内**公开**和**提供**的功能。 +**offered** within the same realm. - -![组件如何通过“功能路由”共享功能的图示,“功能路由”描述了资源如何在特定领地内变得可用。] +a particular realm.] (/get-started/images/intro/capability-routing.png){: width="614"} [glossary.component-manager]: /glossary/README.md#component-manager