Zum Inhalt springen
Deutsch

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);
new ExpressBackend({
bodyLimit: '1mb', // body-parser-Limit
trustProxy: true, // X-Forwarded-*-Header berücksichtigen
});

Settings im Express-Stil.

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.

Terminal-Fenster
npm install express
# oder: bun add express

Express 5+ empfohlen; ältere Versionen können funktionieren, sind aber nicht getestet.

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.

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.