Vom Browser zum Server
Als WebAssembly 2015 erschien, war die Aufgabe einfach: dem Browser eine Geschwindigkeit zu geben, die der nativen Geschwindigkeit nahe kommt. Aber die wichtigsten Eigenschaften sind — Tragbarkeit, Sandbox-Sicherheit, Kompaktheit und Polyglottismus – ideal für Server- und Edge-Fälle.
Warum Wasm auf den Server „gekommen“ ist
Ein Binärdatei für alle Plattformen
Standardisolierung ohne schwere VMs
Start in Millisekunden und geringer Speicherbedarf
Wo es jetzt nützlich ist
Serverless/FaaS mit Kaltstart 1–10 ms
Edge-Computing auf PoP/CDN-Knoten
Plugin-Systeme mit nicht vertrauenswürdigem Code

WASI: Systemschnittstellen für Wasm
Wenn WebAssembly ein „Assembler für das Web“ ist, dann WASI - sein "POSIX". Es standardisiert den Zugriff auf Dateisystem, Netzwerk und Zeit.
// Ein einfaches WASI-Beispiel in Rust
use std::fs;
fn main() {
let content = fs::read_to_string("/data/config.json")
.expect("Failed to read file");
println!("Config: {}", content);
}Kompilieren Sie in wasm32-wasi und führen Sie es unter Linux, macOS, Windows und eingebetteten Systemen mit kompatibler Laufzeit aus.
Laufzeiten: Wasmtime, WasmEdge, Wasmer
Runtime | Fokus | Wo er gut ist |
|---|---|---|
Wasmtime | Sicherheit, Geschwindigkeit | Server, Plugins, Einbettung |
WasmEdge | Edge/IoT, ML-Erweiterungen | Eingebettete Geräte, CDN-Knoten |
Wasmer | SDK und Einbettung | Anwendungen mit Plug-ins/Skripten |
# Wasmtime-Installation
curl https://wasmtime.dev/install.sh -sSf | bash
# Start des Moduls
wasmtime run app.wasmPraktische Anwendungen
1) Serverless und FaaS
Der sofortige Kaltstart und der geringe Platzbedarf machen Wasm ideal für Funktionen als Service.
// Fastly Compute@Edge (Beispiel)
use fastly::{Error, Request, Response};
#[fastly::main]
fn main(req: Request) -> Result<Response, Error> {
let mut resp = Response::from_body("Hello from Edge!");
resp.set_header("X-Custom-Header", "Wasm-powered");
Ok(resp)
}2) Plugin-Systeme
Isolierter, nicht vertrauenswürdiger Code ohne VM und Container.
// Envoy Proxy: Wasm-Filter
use proxy_wasm::traits::*;
use proxy_wasm::types::*;
#[no_mangle]
pub fn _start() {
proxy_wasm::set_http_context(|_, _| -> Box<dyn HttpContext> {
Box::new(CustomFilter)
});
}
struct CustomFilter;
impl HttpContext for CustomFilter {
fn on_http_request_headers(&mut self, _: usize) -> Action {
self.set_http_request_header("X-Wasm-Filter", Some("active"));
Action::Continue
}
}3) Microservices und Container 🧱→🧊
Vorteile: Bilder „in Kilobytes“, Start in Millisekunden, 10–100 mal weniger Speicherverbrauch.
# Pod-Beispiel mit Wasm (runwasi)
apiVersion: v1
kind: Pod
metadata:
name: wasm-app
spec:
runtimeClassName: wasmtime
containers:
- name: app
image: myregistry.io/wasm-app:latest4) Edge und IoT
WasmEdge ist für eingebettete Systeme und ML-Inferenz optimiert.
# Starten des Moduls mit TensorFlow Lite-Unterstützung
wasmedge --dir .:. \
wasmedge-tensorflow-lite \
model.wasm input.jpgKomponentenmodell: Zusammenbau aus Blöcken
WebAssembly Component Model und WIT beschreiben die Schnittstellen und Verträge zwischen Modulen - unabhängig von der Sprache.
// WIT: Rechner-Schnittstelle
package example:calculator
interface math {
add: func(a: s32, b: s32) -> s32
multiply: func(a: s32, b: s32) -> s32
}
world calculator {
export math
}Das Ergebnis: Bibliotheken werden zusammengestellt, Verträge sind streng und Teams können für jede Komponente die „beste Sprache“ auswählen.
Sprachen und Zusammenstellung
Erstklassige Unterstützung
Rust (
rustc)C/C++ (LLVM/Emscripten)
AssemblyScript
Aktiv entwickeln
Go (TinyGo)
Python (Pyodide)
.NET, Swift
# Rust -> Wasm
cargo build --target wasm32-wasi --release
# Go (TinyGo) -> Wasm
tinygo build -o app.wasm -target=wasi main.goWasm ist kein „Browser-Beschleuniger“ mehr, sondern eine Basisplattform für sichere, portable und schnelle Anwendungen auf dem Server und am Netzwerkrand. Beginnen Sie mit einem kleinen Experiment - und Sie werden sehr schnell verstehen, wo genau in Ihrem Stack es schwere Container ersetzen wird.
Im Anhang Kodik Sie werden den Weg von den Grundlagen bis zur Praxis gehen: Rust, Go, Python, Algorithmen, Netzwerkdienste und sogar Projekte mit WebAssembly. Interaktive Übungen, Miniprojekte, Erfolge und eine unterstützende Community warten auf Sie.
🔹 Kurze, verständliche Lektionen und Praxis
🔹 PRO-Abonnement mit zusätzlichen Kursen und Projekten
🔹 Unser Telegram-Kanal — Neuigkeiten, Analysen und Hilfe vom Team und der Community
Schließen Sie sich uns an, verbessern Sie Ihre Fähigkeiten und sammeln Sie ein Portfolio!
