Express-Backend
ExpressBackend erlaubt dir, actor-ts-Routen durch Express
laufen zu lassen — das am häufigsten genutzte Node-HTTP-
Framework. Die richtige Wahl, wenn:
- Du bereits in Express-Middleware investiert hast (eigene Auth, Session-Handling, app-spezifische Instrumentierung).
- Die Vertrautheit deines Teams mit Express größer ist als die Framework-Vorteile von Fastify.
- Du eine bestehende Express-App inkrementell zu actor-ts migrierst.
import { ActorSystem, HttpExtensionId } from 'actor-ts';import { ExpressBackend } from 'actor-ts/http';
const http = system.extension(HttpExtensionId);
await http.newServerAt('0.0.0.0', 8080) .useBackend(new ExpressBackend()) .bind(routes);Konfiguration
Abschnitt betitelt „Konfiguration“new ExpressBackend({ bodyLimit: '1mb', // body-parser-Limit trustProxy: true, // X-Forwarded-*-Header berücksichtigen});Settings im Express-Stil.
Express-Middleware hinzufügen
Abschnitt betitelt „Express-Middleware hinzufügen“import express from 'express';import { ExpressBackend } from 'actor-ts/http';
const backend = new ExpressBackend();await http.newServerAt('0.0.0.0', 8080) .useBackend(backend) .bind(routes);
// Zugriff auf die rohe Express-App:backend.app.use(express.session({ secret: '...' }));backend.app.use(expressRateLimitFromNpm);backend.app.use(customAuth);Express-Middleware umhüllt die actor-ts-Routen — der Request fließt zuerst durch deine Middleware, dann zum actor-ts-Handler.
Das ist der Hauptgrund, Express statt Fastify zu nehmen: das Middleware-Ökosystem. Wenn du es nicht brauchst, ist Fastify schneller.
import https from 'node:https';
new ExpressBackend({ https: { cert: fs.readFileSync('./tls/cert.pem'), key: fs.readFileSync('./tls/key.pem'), },});Gestützt auf das https-Modul von Node. Dieselben Vorbehalte
wie beim Fastify-Backend — typischerweise terminiert TLS am
Load-Balancer.
Peer-Dependency
Abschnitt betitelt „Peer-Dependency“npm install express# oder: bun add expressExpress 5+ empfohlen; ältere Versionen können funktionieren, sind aber nicht getestet.
Performance
Abschnitt betitelt „Performance“Grobe Zahlen:
- 40K–60K req/sec für triviale Routen (langsamer als Fastify).
- P50-Latenz ähnlich; der Durchsatz unterscheidet sich.
Die Middleware-Kette von Express hat mehr Overhead als Fastifys Hooks. Für High-Throughput-Pfade bevorzuge Fastify; für Pfade, die durch schwere Middleware ausgebremst werden, spielt die Framework-Wahl kaum eine Rolle.
Migration aus einer bestehenden Express-App
Abschnitt betitelt „Migration aus einer bestehenden Express-App“Wenn du eine bestehende Express-App hast und actor-ts hinzufügen willst:
import express from 'express';import { actorTsRouter } from 'actor-ts/http/express-adapter';
const app = express();
// Bestehende Routen:app.use('/legacy', oldLegacyRouter);
// actor-ts-Routen unter einem Präfix gemountet:app.use('/v2', actorTsRouter(system, routes));
app.listen(8080);Das Framework stellt für diesen Fall einen Express-Router-Adapter bereit — actor-ts-Routen neben bestehenden Express-Routen mounten, ohne den ganzen HTTP-Stack auszutauschen.
Wohin als Nächstes
Abschnitt betitelt „Wohin als Nächstes“- HTTP-Übersicht — das große Bild.
- Fastify-Backend — das Default + die Empfehlung.
- Route-DSL — was die Backends registrieren.