概览
本文档从概念上简要介绍了组件和组件框架。
什么是沙盒?
沙盒是一种在运行时将程序彼此隔离的安全机制。在 Fuchsia 中,所有软件都经过沙盒化。最初创建程序时,它无法执行任何操作,甚至无法分配内存。程序依赖于其创建者提供执行所需的功能。此隔离属性允许 Fuchsia 采用最小权限原则:仅为程序提供执行所需的最小功能集。
组件框架
组件框架 (CF) 包含描述和运行组件以及协调组件之间资源的通信和资源访问所需的核心概念、工具、API、运行时和库。
组件框架包括:
- CF 概念,包括组件、组件清单、运行程序、领域、环境、功能和解析器。
component_manager
进程,用于协调组件之间的资源的通信和共享。- 由
component_manager
实现,或由其他组件实现并由component_manager
使用(用于协调)的 FIDL API。 - 用于构建、执行和测试组件的开发者工具。
- 用于与系统进行交互的组件的特定语言的库。(示例)
- 测试工具和库,用于编写针对一个或多个组件的单元测试和集成测试。 (示例)
功能
capabilities 功能结合了对资源的访问权限和一组权限,提供了访问权限控制机制以及与资源互动的方式。
组件可以使用 fuchsia.io.Directory
协议发现其命名空间中的可用功能。
在运行时,每个组件都会收到其命名空间以及 Directory
通道服务器端的句柄。Directory
通过传出目录,组件的可执行文件可以发现它提供的任何功能。
深入阅读:
组件
组件是在 Fuchsia 中运行的软件的基本构建块。每个组件都是一个可组合的沙盒化模块,可通过 capability 与其他组件交互。
从本质上讲,组件包含以下部分:
组件框架依靠组件解析器从其来源中检索组件。解析器将组件网址作为输入,并生成组件清单和(可选)对软件包字节的访问机制作为输出。
运行程序会使用清单和软件包的某些部分,并为组件的二进制文件提供执行方式。
解析器和运行程序本身就是功能,直接与框架交互以扩展其功能。组件可以通过实现这些功能来添加对新的组件来源和运行时的支持。
深入阅读:
合成
parent 您通常会看到以 POSIX 类似路径字符串表示的称谓。
深入阅读:
生命周期
组件会经历以下生命周期状态:
- 发现
- 已开始
- 已停止
- 已销毁
同样,如果从组件清单中的静态子项列表中移除,或者在运行时从组件集合中移除,则这些组件也会进行显式销毁。
启动或停止组件时,component_manager
会协同相应的运行程序执行或终止组件的可执行文件。
深入阅读:
-
运行组件所需的前期启动软件除外。 ↩