💎 Lehrpfad 4: Architektur, xUnit & Cloud Master

Master 16: Enterprise Order Processing & Analytics

Das Masterprojekt: Entwickle eine Cloud-fähige Bestellverarbeitungs-Engine mit Clean Architecture, LINQ Analytics, CancellationToken und asynchronen Pipelines.

📂 Dateien dieser Lerneinheit:
📄 Aufgabe.cs (Startercode) 🧪 TestAufgabe.cs (Tests) 💡 Musterloesung.cs (Lösung) 📖 README.md

💡 1. Enterprise Architektur & Async Pipelines

Führe alle modernen C#-Konzepte zusammen: Unveränderliche Records, Repository-Pattern, sichere Fehlerbehandlung und kooperative Task-Abbrüche:

public class OrderEngine(IOrderRepository repo, ILogger logger) {
    public async Task ProcessOrdersAsync(
        IEnumerable incoming, 
        CancellationToken ct = default) 
    {
        var processed = new List();

        foreach (var order in incoming) {
            // Kooperativer Abbruch bei Server-Timeout:
            ct.ThrowIfCancellationRequested();

            var validated = order with { IsProcessed = true };
            await repo.SaveAsync(validated, ct);
            processed.Add(validated);
        }

        // LINQ Analytics:
        var totalRevenue = processed.Sum(o => o.Total);
        var topCustomer = processed
            .GroupBy(o => o.Customer)
            .OrderByDescending(g => g.Sum(x => x.Total))
            .First().Key;

        return new OrderSummary(processed.Count, totalRevenue, topCustomer);
    }
}
🏭 Didaktische Analogie: Das automatisierte Logistikzentrum

Pakete rollen über das Band, Scanner prüfen Barcodes (`Records`), Roboter sortieren nach Destination (`LINQ`), und bei einem Feueralarm stoppt das Band sofort kooperativ (`CancellationToken`).

⚡ 2. Quick-Cheat-Sheet

KomponenteVerwendetes C# FeatureArchitektur-Vorteil
DatenmodellPositional Records mit ImmutabilityThread-sichere Datenstrukturen
AnalyticsLINQ Fluent ChainingDeklarative, lesbare Abfragen
DatenzugriffRepository-Interface mit DITestbar mit Mock-Repositories
Asynchronitätasync/await mit CancellationTokenNicht-blockierend und ressourcenschonend

⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)

⚠️ Fehlende Weitergabe des CancellationToken

Übergibt man ct nicht an nachfolgende asynchrone Methoden (`SaveAsync(order, ct)`), läuft der I/O-Vorgang trotz Abbruch sinnlos weiter!

⚠️ Multiple Enumeration von IEnumerable

Wertet man ein übergebenes `IEnumerable` mehrfach mit `.Count()` und `foreach` aus, wird die Abfrage doppelt ausgeführt. Erst mit `.ToList()` materialisieren!

🧠 4. Diagnostischer Selbst-Check

Überprüfe dein Verständnis von Sprach-Features, Speicherverwaltung und Enterprise-Architektur, bevor du den Code in der Web-IDE schreibst.

🎯 5. Aufgaben & Checkliste in Aufgabe.cs

💻 In Web-IDE öffnen & lösen →