Zum Inhalt springen
Deutsch

Migration-Guides - Übersicht

Wenn du dich schon mit einem anderen Actor-Framework auskennst, übersetzen die Migration-Guides das, was du schon kennst, in actor-ts-Konventionen.

Du kommst vonGuide
Akka (JVM, Scala/Java)from-akka-jvm
Apache Pekkofrom-pekko
Microsoft Orleans (.NET-Grains)from-orleans
Akka.NETfrom-akka-net
Vanilla TS (Promises, EventEmitter)from-vanilla-ts

Jeder Guide:

  • Mappt die Konzepte des Quell-Frameworks auf actor-ts-Äquivalente.
  • Zeigt Before/After-Code für gängige Patterns.
  • Listet auf, was fehlt oder anders ist.
  • Verweist auf die relevantesten actor-ts-Seiten.

Wenn du irgendein Actor-Framework benutzt hast, sind die Kernideen identisch:

  • Actors als Einheiten aus State + Verhalten mit Nachrichten-Verarbeitung einer nach der anderen.
  • Mailboxes als Queues pro Actor.
  • Supervision mit Direktiven wie Restart / Resume / Stop / Escalate.
  • Death Watch zur Beobachtung des Actor-Lebenszyklus.
  • Event Sourcing für State-via-Events.

Wenn du speziell Akka benutzt hast, ist noch mehr übertragbar - actor-ts ist stark von Akka inspiriert, mit Cluster, Sharding, Singleton, DistributedData und PersistentActor in vertrauten Namen.

Drei Kategorien von Unterschieden:

  • Keine Fibers / keine JVM - JavaScript ist pro Prozess Single-Threaded; actor-ts nutzt die Microtask- + Macrotask-Queues für Scheduling.
  • Kein natives Akka-Typed - die typisierte API des Frameworks (Behaviors) ist inspiriert, aber nicht identisch.
  • ts-pattern statt Pattern Matching - TypeScript hat keine nativen Match-Ausdrücke; das Framework nutzt ts-pattern als Peer-Dep.
  • Keine Streams - Akka Streams wurde nicht portiert. Nutze Promise-basierte Patterns oder eine separate Library.
  • Keine FSM als eigenes Modul in einigen Frameworks; actor-ts hat sie, aber mit anderer API-Form.
  • Weniger eingebaute Patterns - actor-ts fokussiert auf die 80 % der Features.
  • Bun ist die primäre Runtime - Node wird auch unterstützt, Deno als Best-Effort.
  • JSON ist der Default-Serializer - CBOR + Custom verfügbar.
  • K8s ist das angenommene Deployment-Ziel - First-Class K8s-Integration für Seed-Discovery + Lease + Management-Endpoints.

Zur schnellen Übersetzung:

KonzeptAkka JVM / PekkoOrleansAkka.NETactor-ts
ActorActor / Behavior[T]GrainActorBaseActor<T>
Actor-IdentitätActorRefIGrainKeyIActorRefActorRef<T>
Senden (fire-and-forget)tell / !IGrainObserverTelltell()
Senden (Request-Reply)ask / ?Grain-Methoden-AufrufAskask()
Supervisor-StrategieSupervisorStrategy(eingeschränkt)SupervisorStrategyOneForOneStrategy / AllForOneStrategy
Sharded EntityCluster ShardingGrainCluster ShardingClusterSharding
SingletonCluster Singleton(manuell)Cluster SingletonClusterSingleton
Event SourcingAkka PersistenceOrleans Event SourcingAkka.NET PersistencePersistentActor
Lease-KoordinationCoordination(manuell)ClusterSingleton-LeaseLease
Test-FrameworkTestKit / TestProbeTestClusterTestKitTestKit / TestProbe

Lies den Guide für dein Quell-Framework, dann:

  1. Quickstart - 5-Minuten actor-ts-Hello-World.
  2. Fundamentals - Übersicht - die Konzept-Landkarte.
  3. Migration-Guide - diese Seite.
  4. Spezifischer Guide für dein Quell-Framework - Pattern-für-Pattern-Übersetzungen.

Für die meisten Teams ist Migration inkrementell:

  • Schritt 1: Ein kleines Actor-System neben bestehendem Code laufen lassen. Vielleicht ein neues Feature.
  • Schritt 2: Ein zustandsbehaftetes Konzept migrieren (eine Registry, ein Job-Runner). HTTP-Handler rufen es weiterhin wie einen Service auf.
  • Schritt 3: Clustering / Persistenz nach Bedarf hinzufügen.
  • Schritt 4: Mehr migrieren.

Du musst nicht alles umschreiben, um zu profitieren. Siehe from-vanilla-ts für das gestaffelte Adoptions-Pattern.