connecting intro

协议句柄是一个很常见的对象,它提供了一个 FIDL 协议的实现,FIDL 协议可以通过组件命名空间找到。组件框架使用能力促进了组件之间的协议发现。能力路由描述了哪个组件应该作为任何给定客户端的提供者。一旦确定了适当的组件,组件管理器就会使用每个组件命名空间中的句柄来启动组件之间的连接。

请参考以下 fuchsia.example.Foo 协议的示例:

图中显示了如何连接组件,组件是能力路由和协议服务的结合。组件必须为它们提供给其他组件的协议的实现来提供服务。{: width="629"}

该图强调了执行连接所涉及的主要元素:

  1. 提供者组件在清单的 capabilities 部分中静态地声明协议。这使组件框架能够执行能力路由。
  1. 客户端组件在清单(manifest)的 use 部分静态地请求协议。如果能力路由成功,这将在客户端的命名空间中创建 /svc/fuchsia.example.Foo 协议项。
  1. 提供者代码在运行时发布实现。这将在提供者传出目录中的 /svc/fuchsia.example.Foo 处创建一个协议项。
  1. 客户端代码在运行时连接到协议句柄。这将与运行在提供者组件中的实现打开一个 FIDL 连接。

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