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