# CommTester – Prototype: bidirektionale IPC + Streaming (C#) Dieser Prototyp zeigt **bidirektionale Interprozesskommunikation** zwischen einer **Avalonia Elternanwendung (Desktop, cross-platform)** und **mehreren Kindprozessen** – inklusive **Streaming** (fortlaufende Log-/Progress-Nachrichten). ## Architektur - **Parent (Avalonia Desktop)**: `ParentAvalonia` - startet mehrere Child-Prozesse - hostet pro Child einen **Named Pipe Server** (Windows/Linux/macOS via .NET) - sendet Commands (Ping, StartWork, CancelWork) - empfängt Streaming-Events (Log, Progress, Result) - **Child (Console)**: `ChildWorker` - verbindet sich als **Named Pipe Client** - verarbeitet Commands - streamt Log/Progress/Result zurück - **Shared IPC**: `CommIpc` - Protokoll: **4-Byte Längenprefix (Little Endian)** + **UTF-8 JSON** (`System.Text.Json`) - Message-Envelope: `IpcFrame { kind, correlationId, payload, timestamp }` ## Quickstart 1. Build (einmalig): - Solution: `CommTester.slnx` 2. Parent starten: - Starte `ParentAvalonia` (Debug oder Run). 3. In der UI: - **Start 3 Children**: startet 3 Kindprozesse und verbindet per Pipe - **Ping Selected**: Ping/Pong roundtrip - **Start Work**: Child streamt Progress + Logs (mehrere Frames) - **Cancel Work**: cancelt laufende Arbeit im Child ## Pipe-Namen Der Pipe-Name wird pro Child eindeutig gebildet: - `CommTester__` Damit kann ein Parent mehrere Childs parallel bedienen. ## Erweiterungsideen - Request/Response-Routing (CorrelationId) mit Awaitables im Parent - Reconnect-Strategien / Heartbeats - Backpressure (Channel für Outbound Frames) - Auth/ACL (bei Bedarf), Logging, Telemetrie ## Hinweis zu NuGet-Feeds Im Repo liegt eine `NuGet.config`, die die Paketquelle explizit auf **nuget.org** setzt. Das verhindert Restore-Fehler, falls im globalen Setup eine private (authentifizierte) Quelle konfiguriert ist.