使用 Hippo 进入 WebAssembly

使用 Hippo 进入 WebAssembly

作者:黄飞 翻译 2022-06-02 08:01:11

云计算

云原生

开发工具 随着新的 WebAssembly 工具迅速出现,您需要一个可以试用它们的环境。

介绍 

WebAssembly是一项非常有前途的新技术,微软的云原生计算团队对其 Deis Labs 子公司和 Azure 都非常感兴趣。随着新的 WebAssembly 工具迅速出现,您需要一个可以试用它们的环境。

这就是为什么 Deis Labs 发布其 新的 Hippo WebAssembly 平台 如此重要的原因。就像 Deis 的许多工具一样,它是一种快速安装、管理和运行WebAssembly(WASM) 代码的方式,无论是浏览器托管还是独立的 WebAssembly 系统接口 (WASI)。将其内置通道与 Git 服务器结合使用,您可以在一个环境中制作和部署不同的版本,将生产、暂存和开发构建分开,同时仍然只需要一台 Hippo 服务器。

您可以在 Hippo 中托管多个应用程序。WebAssembly 意味着默认情况下它们是沙盒的,需要明确的权限才能访问主机系统或外部设备。您的代码也是可移植的。一旦为 WebAssembly 编译,它将在任何 WebAssembly 系统上运行,无论是 WindowsLinux 或 macOS,还是 IntelRISC-V 或 ARMHippo 为您提供了一种构建一次、测试一次并在任何地方运行代码的方法。

在开发 PC 上设置 Hippo

尽管像 Hippo 这样的工具非常适合云原生操作,但当前的开发人员版本仅在桌面系统上进行了测试。我决定在运行最新版本的 WSL2 并托管 Ubuntu 的 Windows PC 上试用它。Deis 提供了在本地运行 Hippo 的说明,以及macOS 和 Linux 系统的详细信息。

在 WSL2 Ubuntu 20.04 LTS 系统上获得运行 Hippo 的先决条件存在一些问题。首先,我需要安装 WAGI,即 WebAssembly 应用程序网关接口。这很容易安装,在其 GitHub 存储库中托管的可下载 tarfile 中有一个二进制文件。一旦下载、解压并移动到用户二进制目录,它就可以轻松运行。我借此机会安装了 Rust,因为如果我必须重新编译任何 Deis 工具,我可能需要它。

这一步可能是 WSL2 上最困难的,因为它需要一份 build-essential 工具包的副本。Ubuntu 20.04 没有正确的依赖集,所以我需要一个替代的包安装程序,它允许我将某些关键库降级到适当的版本。Stack Overflow 的回答向我指出 aptitude,这是 apt 的替代品,它允许您为安装选择适当的依赖项并允许它替换两个低级 C 库。我终于使用它的安装脚本安装了 build-essential,为 Rust 做好准备。

什么是绑定?

将 Rust 安装为 Hippo 安装的一部分的主要原因是为了Deis 的 WebAssembly 打包工具BindleBindle 被描述为“聚合对象存储”系统。它的文档使用的比喻是“Binder 是数字银器抽屉”。我们的银器抽屉里可能都有一些不同的物品,但我们都使用抽屉来分类和存放银器。Bindle 对构成现代应用程序的工件做了很多相同的事情,同时根据应用程序的使用方式和使用位置,提供了对应用程序如何组合的一定程度的理解。

推荐的白皮书

您可以拥有一个应用程序的 Bindle 描述,其中包含在资源受限的边缘主机(如 Raspberry Pi)上进行稀疏安装以及位于公共云核心的高性能服务器所需的元素。应用程序主机中的 Bindle 客户端可以获取元素和依赖项并适当地部署它们。结果是一个以应用程序为中心的部署模型,它避免了使用存储库和智能描述将正确的代码交付到正确的环境的多次构建。

安装 Bindle 后,您可以运行它,使用默认设置设置本地 Bindle 服务器以供 Hippo 使用。接下来,我安装了Node.js的,使用由微软提供的WSL说明。这需要使用 curl 下载 nvm,然后运行它以安装最新和长期支持的 node.js 版本。不要使用 Ubuntu 说明来安装节点;他们使用snap 来安装它,并且在 WSL2 中并没有很好地支持 snap。

您需要为任何 Hippo 托管的 Rust WebAssembly 应用程序安装 Rust 的 wasm32-wasi 支持,以及 yo-wasm Yeoman 应用程序脚手架工具。这将允许您将 Rust 代码编译为 WASI 目标,准备在 Hippo 中运行。

有了这些,我现在可以安装 .NET 5,在安装 .NET 5 SDK 和运行时之前,首先设置对 Microsoft 的 Debian 包存储库的支持。.NET 运行时有 两种选择:一种支持 ASP.NET Core,另一种不支持。由于 Hippo 是一个模型-视图-控制器 Web 应用程序,您应该使用 ASP.NET 版本的运行时。

构建和运行 Hippo

一旦安装了所有先决条件,您就可以构建 Hippo。首先将 Hippo GitHub 存储库克隆到 WSL 系统的本地目录中。安装后,您可以构建和运行该应用程序,通过添加 BINDLE_URL 环境变量将其指向您的本地 Bindle 服务器。此时最好安装 Hippo 的 CLI,因为它是应用程序开发和部署所必需的。

您现在可以连接到您的 Hippo 服务器以测试它是否正常工作。您应该在 localhost 的 5001 端口上找到它。如果您正在运行 WSL 2 的最新版本,您应该能够使用 localhost从 Windows 桌面浏览器连接到它,因为 Microsoft 终于修复了 WSL 2 的一个长期存在的问题网络问题,通过 Windows 代理其虚拟机网络,同时仍保留其自己的 IP 地址和虚拟网络交换机。不再需要脚本来提取和共享网络地址。

在连接到服务器之前,您需要注册一个帐户。由于它在本地运行,您可以选择您喜欢的任何帐户详细信息;只要确保它们是您能记住的东西,因为您需要详细信息来构建您的第一个应用程序。创建帐户后,登录。您将被带到带有“创建新应用程序”按钮的“您的应用程序”页面。

创建您的第一个 Hippo WebAssembly 应用程序

虽然您可以从 Web UI 为 Hippo 构建应用程序,但现在使用命令行更容易。确保您已安装 Hippo CLI,因为 Yeoman 将使用它为您构建应用程序脚手架。在开始之前,为您的 Hippo 帐户和密码及其端点设置环境变量。是的,这不是很好的安全实践,但在这里我们只是使用尚未准备好用于生产的软件在隔离的 PC 上构建和运行测试代码。

要构建一个基本的 hello world 应用程序,请使用 yo-wasm 工具构建一个 WebAssembly Rust 应用程序。如果您按照脚本操作并输入适当的值,这将构建源代码并将其加载到您的 Hippo 服务器中。接下来使用 Rust 货物工具来编译和测试您的 WASI 应用程序。在命令行上运行它后,您可以使用 Hippo 的 CLI 工具将其推送到 Bindle,在那里它将在Hippo 中可见。打开项目,选择您构建的开发环境,然后单击链接以运行您的代码。

河马有很多值得喜欢的地方。如果 WebAssembly 缺少一件事,它是一个有效的类似 Heroku 的游乐场,可以帮助您入门。Hippo 可能还不是那个游乐场,但它肯定是您现在可以将其用作您自己的开发工作流程的一部分,即使在其早期阶段也是如此。能够在开发 PC 上运行它是一个额外的优势,因为不需要依赖第三方系统。它的影响足够低,可以作为 WSL 2 环境的一部分运行,因此您可以利用 VisualStudio Code 等工具,使用其远程开发功能从 Windows 编辑 WSL 中的 Rust 代码。

如果您对 WebAssembly 感兴趣,Hippo 很可能是您入门所需的工具。它使使用 WebAssembly 代码变得更简单,将运行开发所需的许多不同部分集中到一个地方。尽管它显然仍然是一个早期版本,但这里有足够的内容让您入门,使其成为任何使用WebAssembly的人的必备工具。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/253258.html<

(0)
管理的头像管理
上一篇2025-04-29 19:54
下一篇 2025-04-29 19:56

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注