【问题标题】:Fuchsia: how to use a built-in capability in a componentFuchsia:如何在组件中使用内置功能
【发布时间】:2022-12-17 01:31:34
【问题描述】:

我正在尝试学习和使用 Fuchsia 来获得乐趣,但一个非常基本的概念阻碍了我的进步。

我认为,作为一种学习经验,我可以编写一个简单的 HTTP 客户端,将一些随机 URL 的内容打印到日志中。真的没什么好看的。

据我了解,使用网络(在我的例子中我想使用 fuchsia.net.http.Loader)是一种能力,必须授予正在运行的组件。有道理,这几乎是操作系统的核心。

我还了解启动组件(运行我的组件的组件)需要将此功能授予我的组件。这还算公平。

我不明白的是,我将非常感谢任何其他信息(非常感谢!)是如何将此授予我的组件?

具体来说,我看到的所有演示和示例都有一个领域下的自定义客户端和服务器,它们相互通信。这是一个很好的做法,但它不会带来任何内置功能。

我错过了什么?提前致谢!

【问题讨论】:

    标签: fuchsia


    【解决方案1】:

    我正在尝试学习和使用 Fuchsia 来获得乐趣,但一个非常基本的概念阻碍了我的进步。

    感谢您对 Fuchsia 的关注!首先,如果您还没有读完Fuchsia Fundamentals,我强烈建议您将它作为许多基础概念的起点。

    具体来说,我看到的所有演示和示例都有一个领域下的自定义客户端和服务器,它们相互通信。这是一个很好的做法,但它不会带来任何内置功能。

    这主要是因为没有必要将任何组件或功能“内置”到系统中。系统中组件可用的功能完全取决于特定产品构建中的其余组件以及它们的组织方式(这称为component topology)。

    我认为,作为一种学习经验,我可以编写一个简单的 HTTP 客户端,将一些随机 URL 的内容打印到日志中。真的没什么好看的。

    目前答案有一些尖锐的边缘,因为 Fuchsia 是一个快速发展的开源项目。希望下面的一些细节能帮助你前进。

    确定能力路线

    因此,您必须做一些工作来弄清楚在哪里提供和路由您需要的功能。事实上,components exercises 之一向您展示了如何为 fuchsia.net.http.Loader 功能执行此操作。了解提供/使用功能的位置可以让您确定需要在何处实例化您的组件以获得必要的功能。

    您可能还会发现 Connect components 开发人员指南中的一些内容对于访问该功能很有用。

    运行组件

    了解功能的路由位置可以让您确定如何运行您的组件。在拓扑中实例化组件的最直接方法是使用 ffx component 动态执行此操作。但是,这需要系统中某处具有您所需功能的collection。大多数示例运行的 ffx-laboratory 领域具有一组非常有限的功能,不包括 fuchsia.net.http.Loader

    您可能需要使用 core realm shard 将您的组件静态添加到拓扑中,以便可以在提供 fuchsia.net.http.Loader 的组件和您的组件之间显式声明必要的路由。通过静态包含在产品构建中的组件,您可以使用 ffx component 命令执行它。

    有关组件执行的更多详细信息,请同时查看Run components 开发人员指南。

    运行 CLI 二进制文件

    由于这是一个学习练习,另一种选择是将您的代码构建为二进制文件,该二进制文件在已经具有您需要的功能的组件的上下文中运行,而不是创建和运行一个全新的组件。这通常用于 CLI 工具。使用 ffx component explore 命令,您可以在现有组件中以二进制形式运行代码,该组件使用 --tools 参数提供您正在寻找的 HTTP 功能,而无需完成上述所有功能路由部分。

    有关ffx component explore的更多详细信息,请参阅Explore components

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 2017-09-17
      • 2017-09-07
      • 2020-06-16
      • 2021-04-20
      • 1970-01-01
      相关资源
      最近更新 更多