← Zurück zum Portfolio

Oktober 2026 · 4 Min. Lesezeit

Modernisierung eines Legacy-Export-Workflows im laufenden Betrieb

Wie ein monolithischer, DLL-basierter Export-Workflow für Kalibrierdaten Schritt für Schritt durch eine ereignisgesteuerte REST-Plattform in C#/.NET ersetzt wurde, während die Auslieferung an Kunden weiterlief.

Sunkuru Jagabandhu Patro · Softwareentwickler & -architekt

Kalibrierdaten für E-Motor- und Inverter-Software werden in AVL CRETA verwaltet und für die Softwareintegration und die Auslieferung an Fahrzeughersteller exportiert. Bei Valeo lief dieser Export über einen monolithischen Workflow auf Basis einer DLL-API, deren Abkündigung feststand. Abschalten ging nicht: Kalibrierpakete mussten weiterhin termingerecht bei den Kunden ankommen.

Das Problem

Der Ansatz

1. Ein generierter statt eines handgeschriebenen Clients. Mit Kiota habe ich aus der OpenAPI-(Swagger-)Beschreibung von CRETA einen typisierten C#-Client generiert. Der neue REST-Client ersetzte die alte DLL vor ihrer Abkündigung, und durch Neugenerierung bleibt er mit der API synchron.

2. Eine Grenze um die Legacy-Welt. Ein Anti-Corruption Layer und Adapter übersetzen zwischen dem externen API-Modell und unserem eigenen Domänenmodell, sodass sich Änderungen nicht von einer Seite auf die andere ausbreiten. Eine Fassade vereinheitlicht Authentifizierung, Session-Tokens und Dateirouting.

3. Ein Modul pro Kundenvariante. Eine Factory instanziiert herstellerspezifische Module zur Laufzeit hinter kleinen, getrennten Schnittstellen. Eine neue Variante bedeutet ein neues Modul, keine Änderung am Kern.

4. Asynchron und ereignisgesteuert. Große Artefakte werden mit nicht blockierender I/O extrahiert und parallel verarbeitet. Die Synchronisation zwischen lokalem Speicher und zentralem NAS ist ereignisgesteuert, mit Wiederholungen und exponentiellem Backoff bei vorübergehenden Fehlern.

5. Schrittweise Einführung mit Tests. Die neue Schicht wurde Schritt für Schritt in die bestehende WPF-Desktopanwendung integriert und durch NUnit-Tests in der CI-Pipeline abgesichert, sodass die Auslieferung nie stillstand.

Das Ergebnis

Was ich gelernt habe