本文转载自微信公众号《新钛云服务》,作者黄飞翻译。转载本文请联系新钛云服务公众号。WebAssembly是一项非常有前途的新技术,微软的云原生计算团队对其旗下的DeisLabs和Azure非常感兴趣。随着新的WebAssembly工具的迅速出现,您需要一个可以试用它们的环境。这就是DeisLabs发布其新的HippoWebAssembly平台如此重要的原因。与Deis的许多工具一样,它是安装、管理和运行WebAssembly(WASM)代码的快速方法,无论是浏览器托管的还是独立的WebAssembly系统接口(WASI)。将其内置通道与Git服务器结合使用,您可以在一个环境中制作和部署不同的版本,将生产、暂存和开发构建分开,同时仍然只需要一台Hippo服务器。[另见InfoWorld:Heroku的衰落]您可以在Hippo中托管多个应用程序。WebAssembly意味着它们在默认情况下被沙盒化,需要明确的权限才能访问主机系统或外部设备。您的代码也是可移植的。一旦为WebAssembly编译,它将在任何WebAssembly系统上运行,无论是Windows、Linux或macOS,还是Intel、RISC-V或ARM。Hippo为您提供了一种构建一次、测试一次并在任何地方运行代码的方法。在开发PC上设置Hippo虽然像Hippo这样的工具非常适合云原生操作,但当前的开发人员构建只在桌面系统上进行了测试。我决定在运行最新版本WSL2并托管Ubuntu的WindowsPC上试用它。Deis提供了在本地运行Hippo的说明,以及macOS和Linux系统的详细信息。在WSL2Ubuntu20.04LTS系统上获取运行Hippo的先决条件存在一些问题。首先,我需要安装WAGI,即WebAssembly应用程序网关接口。它易于安装,并且在其GitHub存储库中托管的可下载tar文件中有一个二进制文件。一旦下载、解压并移动到用户二进制文件目录,它就很容易运行。我借此机会安装了Rust,因为如果我必须重新编译任何Deis工具,我可能需要它。这一步在WSL2上可能是最困难的,因为它需要构建基本工具包的副本。Ubuntu20.04没有正确的依赖集,所以我需要一个替代包安装程序,它允许我将某些关键库降级到正确的版本。StackOverflow的回答让我想到了aptitude,这是一个apt替代品,它允许您为安装选择合适的依赖项,并允许它替代两个低级C库。我终于使用它的安装脚本安装了build-essential,为Rust做好了准备。什么是绑定?安装Rust作为Hippo安装的一部分的主要原因是为了Bindle,Deis的WebAssembly打包工具。Bindle被描述为一个“聚合对象存储”系统。它的文档使用了比喻“Binder是一个数字银器抽屉”。我们的银器抽屉里可能都有一些不同的物品,但我们都使用抽屉来分类和存放我们的银器。Bindle对构成现代应用程序的工件做了很多相同的事情,同时根据应用程序的使用方式和位置提供了对应用程序的组成方式的理解。推荐的白皮书您可以对您的应用程序进行Bundle描述,其中包含在资源受限的边缘主机(例如RaspberryPi)以及公共云核心的高性能服务器上进行稀疏安装所需的元素。应用程序主机中的Bindle客户端可以获取元素和依赖项并适当地部署它们。结果是一个以应用程序为中心的部署模型,避免使用存储库和智能描述进行多次构建,以将正确的代码交付到正确的环境。安装Bindle后,您可以运行它以使用默认设置设置本地Bindle服务器以供Hippo使用。接下来,我使用Microsoft提供的WSL说明安装了Node.js。这包括使用curl下载nvm,然后运行它来安装最新和长期支持的node.js版本。不要使用Ubuntu说明来安装节点;他们使用snap来安装它,而snap在WSL2中没有得到很好的支持。您需要为任何Hippo托管的RustWebAssembly应用程序安装Rust的wasm32-wasi支持,以及yo-wasmYeoman应用程序脚手架工具。这将允许您将Rust代码编译为WASI目标,准备好在Hippo中运行。这样,我现在可以安装.NET5,首先设置对Microsoft的Debian包存储库的支持,然后再安装.NET5SDK和运行时。.NET运行时有两种选择:一种支持ASP.NETCore,一种不支持。由于Hippo是一个模型-视图-控制器Web应用程序,您应该使用运行时的ASP.NET版本。构建和运行Hippo一旦安装了所有先决条件,您就可以构建Hippo。首先将HippoGitHub存储库克隆到WSL系统上的本地目录中。安装后,您可以构建并运行应用程序,通过添加BINDLE_URL环境变量将其指向本地Bindle服务器。此时安装Hippo的CLI是个好主意,因为它是应用程序开发和部署所必需的。您现在可以连接到您的Hippo服务器以测试它是否正常工作。您应该在端口5001上的本地主机上找到它。如果您运行的是最新版本的WSL2,您应该能够使用本地主机从Windows桌面浏览器连接到它,因为微软终于解决了一个长期存在的网络问题使用WSL2,通过Windows代理其虚拟机网络,同时仍保留其自己的IP地址和虚拟网络交换机。不再需要脚本来提取和共享网络地址。在连接到服务器之前,您需要注册一个帐户。由于它在本地运行,您可以选择您喜欢的任何帐户详细信息;只要确保它们是您能记住的,因为您将需要详细信息来构建您的第一个应用程序。创建帐户后,登录。您将被带到带有“创建新应用程序”按钮的“您的应用程序”页面。创建您的第一个HippoWebAssembly应用程序虽然您可以从WebUI为Hippo构建应用程序,但现在使用命令行更容易。确保您安装了HippoCLI,因为Yeoman将使用它为您构建应用程序的脚手架。在开始之前,为您的Hippo帐户和密码及其端点设置环境变量。是的,这不是好的安全做法,但在这里我们只是在隔离的PC上使用尚未准备好用于生产的软件构建和运行测试代码。要构建基本的helloworld应用程序,请使用yo-wasm工具构建WebAssemblyRust应用程序。如果您遵循脚本并输入适当的值,这将构建源代码并将其加载到您的Hippo服务器中。接下来使用Rustcargo工具编译和测试您的WASI应用程序。在命令行上运行它之后,你可以使用Hippo的CLI工具将它推送到Bindle,它将在Hippo中可见。打开项目,选择你内置的开发环境,点击链接运行你的代码。河马有很多让人喜欢的地方。如果说WebAssembly缺少什么,那就是它是一个有效的类似Heroku的游乐场,可以帮助您入门。Hippo可能还不是那个游乐场,但它肯定是您现在可以将其用作您自己的开发工作流程的一部分,即使是在其早期阶段。能够在开发PC上运行它是一个额外的优势,因为无需依赖第三方系统。它的影响很小,可以作为WSL2环境的一部分运行,因此您可以利用VisualStudioCode等工具,使用其远程开发功能从Windows编辑WSL中的Rust代码。如果您对WebAssembly感兴趣,Hippo可能是您入门所需的工具。它使使用WebAssembly代码更简单,将在一个地方运行开发所需的许多不同部分组合在一起。虽然它显然仍是早期版本,但这里有足够的内容让您入门,使其成为任何使用WebAssembly的人的必备工具。原文:https://www.infoworld.com/article/3635848/jump-into-webassembly-with-hippo.html
