一篇學(xué)會(huì)使用 Hippo 進(jìn)入 WebAssembly
本文轉(zhuǎn)載自微信公眾號(hào)「新鈦云服」,作者黃飛 翻譯。轉(zhuǎn)載本文請(qǐng)聯(lián)系新鈦云服公眾號(hào)。
WebAssembly 是一項(xiàng)非常有前途的新技術(shù),微軟的云原生計(jì)算團(tuán)隊(duì)對(duì)其 Deis Labs 子公司和 Azure 都非常感興趣。隨著新的 WebAssembly 工具迅速出現(xiàn),您需要一個(gè)可以試用它們的環(huán)境。
這就是為什么 Deis Labs 發(fā)布其 新的 Hippo WebAssembly 平臺(tái) 如此重要的原因。就像 Deis 的許多工具一樣,它是一種快速安裝、管理和運(yùn)行WebAssembly (WASM) 代碼的方式,無(wú)論是瀏覽器托管還是獨(dú)立的 WebAssembly 系統(tǒng)接口 (WASI)。
將其內(nèi)置通道與 Git 服務(wù)器結(jié)合使用,您可以在一個(gè)環(huán)境中制作和部署不同的版本,將生產(chǎn)、暫存和開發(fā)構(gòu)建分開,同時(shí)仍然只需要一臺(tái) Hippo 服務(wù)器。
[同樣在 InfoWorld:Heroku 的衰落]
您可以在 Hippo 中托管多個(gè)應(yīng)用程序。WebAssembly 意味著默認(rèn)情況下它們是沙盒的,需要明確的權(quán)限才能訪問(wèn)主機(jī)系統(tǒng)或外部設(shè)備。
您的代碼也是可移植的。
一旦為 WebAssembly 編譯,它將在任何 WebAssembly 系統(tǒng)上運(yùn)行,無(wú)論是 Windows、Linux 或 macOS,還是 Intel、RISC-V 或 ARM。Hippo 為您提供了一種構(gòu)建一次、測(cè)試一次并在任何地方運(yùn)行代碼的方法。
在開發(fā) PC 上設(shè)置 Hippo
盡管像 Hippo 這樣的工具非常適合云原生操作,但當(dāng)前的開發(fā)人員版本僅在桌面系統(tǒng)上進(jìn)行了測(cè)試。我決定在運(yùn)行最新版本的 WSL2 并托管 Ubuntu 的 Windows PC 上試用它。Deis 提供了在本地運(yùn)行 Hippo 的說(shuō)明,以及macOS 和 Linux 系統(tǒng)的詳細(xì)信息。
在 WSL2 Ubuntu 20.04 LTS 系統(tǒng)上獲得運(yùn)行 Hippo 的先決條件存在一些問(wèn)題。首先,我需要安裝 WAGI,即 WebAssembly 應(yīng)用程序網(wǎng)關(guān)接口。這很容易安裝,在其 GitHub 存儲(chǔ)庫(kù)中托管的可下載 tarfile 中有一個(gè)二進(jìn)制文件。一旦下載、解壓并移動(dòng)到用戶二進(jìn)制目錄,它就可以輕松運(yùn)行。我借此機(jī)會(huì)安裝了 Rust,因?yàn)槿绻冶仨氈匦戮幾g任何 Deis 工具,我可能需要它。
這一步可能是 WSL2 上最困難的,因?yàn)樗枰环?build-essential 工具包的副本。Ubuntu 20.04 沒(méi)有正確的依賴集,所以我需要一個(gè)替代的包安裝程序,它允許我將某些關(guān)鍵庫(kù)降級(jí)到適當(dāng)?shù)陌姹尽tack Overflow 的回答向我指出 aptitude,這是 apt 的替代品,它允許您為安裝選擇適當(dāng)?shù)囊蕾図?xiàng)并允許它替換兩個(gè)低級(jí) C 庫(kù)。我終于使用它的安裝腳本安裝了 build-essential,為 Rust 做好準(zhǔn)備。
什么是綁定?
將 Rust 安裝為 Hippo 安裝的一部分的主要原因是為了Deis 的 WebAssembly 打包工具Bindle。Bindle 被描述為“聚合對(duì)象存儲(chǔ)”系統(tǒng)。它的文檔使用的比喻是“Binder 是數(shù)字銀器抽屜”。我們的銀器抽屜里可能都有一些不同的物品,但我們都使用抽屜來(lái)分類和存放銀器。Bindle 對(duì)構(gòu)成現(xiàn)代應(yīng)用程序的工件做了很多相同的事情,同時(shí)根據(jù)應(yīng)用程序的使用方式和使用位置,提供了對(duì)應(yīng)用程序如何組合的一定程度的理解。
推薦的白皮書
您可以擁有一個(gè)應(yīng)用程序的 Bindle 描述,其中包含在資源受限的邊緣主機(jī)(如 Raspberry Pi)上進(jìn)行稀疏安裝以及位于公共云核心的高性能服務(wù)器所需的元素。應(yīng)用程序主機(jī)中的 Bindle 客戶端可以獲取元素和依賴項(xiàng)并適當(dāng)?shù)夭渴鹚鼈?。結(jié)果是一個(gè)以應(yīng)用程序?yàn)橹行牡牟渴鹉P?,它避免了使用存?chǔ)庫(kù)和智能描述將正確的代碼交付到正確的環(huán)境的多次構(gòu)建。
安裝 Bindle 后,您可以運(yùn)行它,使用默認(rèn)設(shè)置設(shè)置本地 Bindle 服務(wù)器以供 Hippo 使用。接下來(lái),我安裝了Node.js的,使用由微軟提供的WSL說(shuō)明。這需要使用 curl 下載 nvm,然后運(yùn)行它以安裝最新和長(zhǎng)期支持的 node.js 版本。不要使用 Ubuntu 說(shuō)明來(lái)安裝節(jié)點(diǎn);他們使用 snap 來(lái)安裝它,并且在 WSL2 中并沒(méi)有很好地支持 snap。
您需要為任何 Hippo 托管的 Rust WebAssembly 應(yīng)用程序安裝 Rust 的 wasm32-wasi 支持,以及 yo-wasm Yeoman 應(yīng)用程序腳手架工具。這將允許您將 Rust 代碼編譯為 WASI 目標(biāo),準(zhǔn)備在 Hippo 中運(yùn)行。
有了這些,我現(xiàn)在可以安裝 .NET 5,在安裝 .NET 5 SDK 和運(yùn)行時(shí)之前,首先設(shè)置對(duì) Microsoft 的 Debian 包存儲(chǔ)庫(kù)的支持。.NET 運(yùn)行時(shí)有 兩種選擇:一種支持 ASP.NET Core,另一種不支持。由于 Hippo 是一個(gè)模型-視圖-控制器 Web 應(yīng)用程序,您應(yīng)該使用 ASP.NET 版本的運(yùn)行時(shí)。
構(gòu)建和運(yùn)行 Hippo
一旦安裝了所有先決條件,您就可以構(gòu)建 Hippo。首先將 Hippo GitHub 存儲(chǔ)庫(kù)克隆到 WSL 系統(tǒng)的本地目錄中。安裝后,您可以構(gòu)建和運(yùn)行該應(yīng)用程序,通過(guò)添加 BINDLE_URL 環(huán)境變量將其指向您的本地 Bindle 服務(wù)器。此時(shí)最好安裝 Hippo 的 CLI,因?yàn)樗菓?yīng)用程序開發(fā)和部署所必需的。
您現(xiàn)在可以連接到您的 Hippo 服務(wù)器以測(cè)試它是否正常工作。您應(yīng)該在 localhost 的 5001 端口上找到它。如果您正在運(yùn)行 WSL 2 的最新版本,您應(yīng)該能夠使用 localhost 從 Windows 桌面瀏覽器連接到它,因?yàn)?Microsoft 終于修復(fù)了 WSL 2 的一個(gè)長(zhǎng)期存在的問(wèn)題網(wǎng)絡(luò)問(wèn)題,通過(guò) Windows 代理其虛擬機(jī)網(wǎng)絡(luò),同時(shí)仍保留其自己的 IP 地址和虛擬網(wǎng)絡(luò)交換機(jī)。不再需要腳本來(lái)提取和共享網(wǎng)絡(luò)地址。
在連接到服務(wù)器之前,您需要注冊(cè)一個(gè)帳戶。由于它在本地運(yùn)行,您可以選擇您喜歡的任何帳戶詳細(xì)信息;只要確保它們是您能記住的東西,因?yàn)槟枰敿?xì)信息來(lái)構(gòu)建您的第一個(gè)應(yīng)用程序。創(chuàng)建帳戶后,登錄。您將被帶到帶有“創(chuàng)建新應(yīng)用程序”按鈕的“您的應(yīng)用程序”頁(yè)面。
創(chuàng)建您的第一個(gè)Hippo WebAssembly 應(yīng)用程序
雖然您可以從 Web UI 為 Hippo 構(gòu)建應(yīng)用程序,但現(xiàn)在使用命令行更容易。確保您已安裝 Hippo CLI,因?yàn)?Yeoman 將使用它為您構(gòu)建應(yīng)用程序腳手架。在開始之前,為您的 Hippo 帳戶和密碼及其端點(diǎn)設(shè)置環(huán)境變量。是的,這不是很好的安全實(shí)踐,但在這里我們只是使用尚未準(zhǔn)備好用于生產(chǎn)的軟件在隔離的 PC 上構(gòu)建和運(yùn)行測(cè)試代碼。
要構(gòu)建一個(gè)基本的 hello world 應(yīng)用程序,請(qǐng)使用 yo-wasm 工具構(gòu)建一個(gè) WebAssembly Rust 應(yīng)用程序。如果您按照腳本操作并輸入適當(dāng)?shù)闹担@將構(gòu)建源代碼并將其加載到您的 Hippo 服務(wù)器中。
接下來(lái)使用 Rust 貨物工具來(lái)編譯和測(cè)試您的 WASI 應(yīng)用程序。在命令行上運(yùn)行它后,您可以使用 Hippo 的 CLI 工具將其推送到 Bindle,在那里它將在 Hippo 中可見(jiàn)。打開項(xiàng)目,選擇您構(gòu)建的開發(fā)環(huán)境,然后單擊鏈接以運(yùn)行您的代碼。
河馬有很多值得喜歡的地方。如果 WebAssembly 缺少一件事,它是一個(gè)有效的類似 Heroku 的游樂(lè)場(chǎng),可以幫助您入門。Hippo 可能還不是那個(gè)游樂(lè)場(chǎng),但它肯定是您現(xiàn)在可以將其用作您自己的開發(fā)工作流程的一部分,即使在其早期階段也是如此。
能夠在開發(fā) PC 上運(yùn)行它是一個(gè)額外的優(yōu)勢(shì),因?yàn)椴恍枰蕾嚨谌较到y(tǒng)。它的影響足夠低,可以作為 WSL 2 環(huán)境的一部分運(yùn)行,因此您可以利用 Visual Studio Code 等工具,使用其遠(yuǎn)程開發(fā)功能從 Windows 編輯 WSL 中的 Rust 代碼。
如果您對(duì) WebAssembly 感興趣,Hippo 很可能是您入門所需的工具。它使使用 WebAssembly 代碼變得更簡(jiǎn)單,將運(yùn)行開發(fā)所需的許多不同部分集中到一個(gè)地方。盡管它顯然仍然是一個(gè)早期版本,但這里有足夠的內(nèi)容讓您入門,使其成為任何使用 WebAssembly 的人的必備工具。
原文:https://www.infoworld.com/article/3635848/jump-into-webassembly-with-hippo.html