如何在Cloudflare Workers上部署Rust生成的WASM
Cloudflare最近開源了Wrangler。這是一組CLI工具,用於構建、預覽和釋出Cloudfare Workers,這些Workers用Rust語言編寫並編譯到WebAssembly。
Wrangler的目標是為開發人員提供端到端的體驗,使他們能夠在Rust中編寫自己的無伺服器功能,並在將其轉換為WebAssembly後,在Cloudflare Workers上部署和執行這些功能。WebAssembly編譯步驟隱藏在Wrangler CLI後面。
要嘗試使用Wrangler,可以使用cargo執行cargo install Wrangler安裝它。Wrangler生成的工程的一般結構包括一個儲存Rust程式碼的src目錄,一個包含一個worker.js的Worker目錄(可以從中提取Rust生成的程式碼)和幾個後設資料檔案。Wrangler有三個主要命令:build(構建)、preview(預覽)和publish(釋出)。build命令將所有Rust程式碼編譯到WebAssembly,而preview命令將允許你在Cloudflare基礎設施上執行函式。不過,目前還不能在本地預覽函式,但至少在Cloudflare基礎設施上預覽函式不需要Cloudflare賬戶。
你可以像往常一樣編寫Rust程式碼:你可以在你的Cargo.toml檔案中引入任何指定它的外部依賴項。使用wasm_bindgen通過啟用字串、物件、類等來改進wasm和JS之間的通訊。例如,你可以寫這樣一個簡單的Rust檔案:
use wasm_bindgen::prelude::*;extern \u0026quot;C\u0026quot; { fn alert(s: \u0026amp;str);}#[wasm_bindgen]pub fn greet(name: \u0026amp;str) -\u0026gt; String{ \u0026amp;format!(\u0026quot;Hello, {}!\u0026quot;, name);}
該程式碼可以使用以下語法匯入並在worker.js檔案中執行:
const { greet } = wasm_bindgen;await wasm_bindgen(wasm)const output = greet('Worker')
Cloudflare計劃向Wrangler新增更多的命令,包括對linting、測試、基準測試和大小分析的支援。
Cloudflare Workers是用JavaScript編寫的無伺服器函式,可以在分佈世界各地的Cloudflare邊緣節點執行。Cloudflare表示,由於它們的邊緣節點與終端使用者非常接近,Workers可以通過減少網路延遲來提高效能。Cloudflare Workers使用V8 JavaScript引擎執行程式碼,但他們不使用Node.js,而是依靠他們自己實現的一些API來提高效率和安全性。
檢視英文原文連結:Deploying Rust-Generated WASM on Cloudflare Serverless Workers
相關文章
- 深入web workers (上)Web
- Cloudflare更智慧的分層快取拓撲生成Cloud快取
- Mubelotix/wasm-extension-template:一個易於使用的Rust Web模板ASMRustWeb
- 純前端生成Excel檔案騷操作——WebAssembly & web workers前端ExcelWeb
- 如何在Ubuntu Server 14.04 LTS(Trusty) 上安裝GhostUbuntuServerRust
- 如何在 NET 程式萬種死法中有效的生成 Dump (上)
- Cloudflare 收購 Vectrix 以擴大 Zero Trust SaaS 安全功能CloudRust
- 在 R2 上儲存您的 Cloudflare 日誌Cloud
- 在kubernetes上執行WASM負載ASM負載
- k8s~envoy上新增wasm外掛K8SASM
- cloudflare認識1(上傳檔案到桶)Cloud
- 將 Cloudflare 的 Zero Trust 平臺延伸至支援 UDP 和網際網路 DNSCloudRustUDPDNS
- Inline Workers--Web workers without a separate Javascript fileinlineWebJavaScript
- 快速教程|如何在 AWS EC2上使用 Walrus 部署 GitLabGitlab
- Cesium之Web WorkersWeb
- Rust在瀏覽器Wasm和後端伺服器中執行效能比較Rust瀏覽器ASM後端伺服器
- 什麼是 Web Workers?Web
- 開始使用Web WorkersWeb
- [譯] Service workers:PWA背後的英雄
- go~wasm外掛的開發GoASM
- 如何為部署到 SAP BTP 平臺上的 Node.js 應用提供Authorization 和 Trust 管理Node.jsRust
- Cloudflare for Teams 簡介Cloud
- 精讀《談談 Web Workers》Web
- WebAssembly Studio:Mozilla提供的WASM工具WebASM
- [譯] Hello, wasm-pack!ASM
- 如何在 Deno 應用程式中呼叫 Rust 函式Rust函式
- 使用Java生成具有安全雜湊的QR碼 | Rustam MehmandarovJavaRust
- Rust讓我上癮了 - RedditRust
- [譯] 或許你並不需要 Rust 和 WASM 來提升 JS 的執行效率 — 第二部分RustASMJS
- Cloudflare Pages 全棧化Cloud全棧
- Cloudflare Registrar 全面開放Cloud
- Kettle 在 linux 上的部署Linux
- ssl 在nginx上的部署示例Nginx
- Vue專案上線環境部署,專案優化策略,生成打包報告,及上線相關配置Vue優化
- Cloudflare分散式系統中的拜占庭式失敗與Raft選舉問題 - cloudflareCloud分散式Raft
- BIRT部署並利用API生成PDFAPI
- Django上線部署Django
- web workers簡介(三)建立subworkerWeb