EchoPlay — WinUI 3 von Grund auf

35 Teile

  1. Wie arbeiten Interfaces, DataServices, Mapper und ViewModels zusammen? (Teil 1) Vier Bausteine für saubere Schichtentrennung in einer WinUI-3-App: Interfaces, DataServices, Mapper und ViewModels.
  2. Warum testen wir mit echten Fakes statt mit Mocking-Frameworks? (Teil 2) Unit-Tests mit handgeschriebenen Fakes statt Moq — warum EchoPlay auf echte Implementierungen setzt.
  3. API-Keys sicher konfigurieren in .NET-Anwendungen (Teil 3) Wie EchoPlay Spotify-API-Keys über appsettings.json und User Secrets verwaltet — ohne Geheimnisse im Repository.
  4. Entity Framework Core mit SQLite: DbContext, Migrations und Query Filter (Teil 4) Datenbank-Setup mit Entity Framework Core und SQLite — vom DbContext über Migrations bis zum globalen Query Filter.
  5. Soft-Delete: Datensätze löschen ohne Datenverlust (Teil 5) Soft-Delete-Muster mit BaseEntity, kaskadierendem Löschen und globalem EF-Core-Query-Filter.
  6. Dependency Injection in einer WinUI-3-Desktop-App (Teil 6) Generic Host, Lebensdauern und IServiceScopeFactory — wie EchoPlay seine Abhängigkeiten verdrahtet.
  7. MVVM in WinUI 3: ObservableObject, RelayCommand und x:Bind (Teil 7) Das MVVM-Pattern in der Praxis — SetProperty, Commands und kompilierte Bindings mit x:Bind.
  8. Navigation in WinUI 3: NavigationView, Frame und ViewModel-Loading (Teil 8) Seitennavigation mit NavigationView und Frame — inklusive ViewModel-Loading und Navigationshistorie.
  9. Themes in WinUI 3: ResourceDictionary und Laufzeit-Wechsel (Teil 9) Farbthemen mit ResourceDictionary, ThemeService und Laufzeit-Wechsel ohne App-Neustart.
  10. Eigenes Logging-System: Sinks, Logger und MemorySink (Teil 10) Ein maßgeschneidertes Logging-System mit Sinks, LogScope und Live-Protokoll in der Settings-UI.
  11. Spotify-Integration: Client-Credentials-Flow und Token-Cache (Teil 11) Spotify-Web-API anbinden mit Client-Credentials-Flow, DelegatingHandler und automatischem Token-Cache.
  12. Retry und Resilienz: Linearer Backoff für HTTP-Anfragen (Teil 12) Transiente HTTP-Fehler abfangen mit linearem Backoff und einem eigenen Retry-Handler.
  13. Audio-Wiedergabe: MediaPlayer, Playlist und PlaybackState (Teil 13) Audio abspielen mit MediaPlayer und MediaPlaybackList — inklusive Persistenz des Wiedergabestatus.
  14. SyncService: IServiceScopeFactory in Singleton-Services (Teil 14) Scoped Services in Singletons nutzen mit IServiceScopeFactory, IProgress und Fuzzy-Matching.
  15. Import-Flow: ImportService und Keyed Services (Teil 15) Serien importieren mit dem ImportService — Provider-Abstraktion über Keyed Services.
  16. Lokalisierung in WinUI 3: Deutsch und Englisch mit .resw-Dateien (Teil 16) Mehrsprachigkeit mit .resw-Ressourcendateien, x:Uid und ILocalizationService.
  17. Ein Abonnement-Flag: Kleines Feld, große Wirkung (Teil 17) IsSubscribed als bool statt eigene Tabelle — warum ein einfaches Flag die richtige Architekturentscheidung ist.
  18. Dashboard-ViewModel: Services kombinieren und Gruppen-Layout (Teil 18) Mehrere DataServices im ViewModel kombinieren — Karten, Gruppen und CompletedCheck.
  19. Lokale Mediathek: Drei-Spalten-Navigation mit Auswahl-Kaskade (Teil 19) Drei-Spalten-Layout mit Lazy Cover-Loading, Favoriten-Stern und Tag-Manager-Navigation.
  20. Suche und Import: Ergebnis-ViewModels und Import-Status (Teil 20) Suchergebnisse als ViewModels mit Import-Button, BitmapImage aus URL und paralleler Suche.
  21. Player-Seite: FolderPicker, ID3-Cover und Slider-Antifeedback (Teil 21) Audio-Player mit FolderPicker-Interop, ID3-Tag-Cover und Slider-Seeking ohne Rücksprung.
  22. Einstellungen mit Tabs: TabView und Verbindungstest (Teil 22) Einstellungsseite mit TabView, Verbindungstest per Command-Pattern und Theme-Farbkacheln.
  23. StatusBar als Singleton: Globaler Zustand ohne N+1 (Teil 23) Ein Singleton-ViewModel für die Statusleiste — globaler Zustand ohne N+1-Problem.
  24. Tag-Manager: Audio-Metadaten lesen, schreiben und nachschlagen (Teil 24) TagLib# und MusicBrainz-API für Audio-Tags — mit SemaphoreSlim Rate-Limiting und Auto-Lookup.
  25. Log-Viewer: DispatcherTimer, IDisposable und NumberBox (Teil 25) Live-Protokoll in den Einstellungen mit DispatcherTimer, Datei-Auswahl und ViewModel-Cleanup.
  26. Cover-Suche: Fünf Anbieter parallel abfragen (Teil 26) CompositeCoverSearchService — parallele Cover-Suche bei fünf Anbietern mit Fallback-Kette.
  27. Online-Folgencheck: iTunes API vs. lokale Ordner (Teil 27) Neue Folgen erkennen durch Abgleich der iTunes-API mit lokalen Ordnern — mit In-Memory-Cache.
  28. SQLite professionell optimieren: PRAGMAs, Indizes und Partial Indexes (Teil 28) SQLite-Performance maximieren mit WAL-Modus, Komposit-Indizes und EF-Core-Interceptor.
  29. Online-Mediathek: Akkordeon-Layout und Provider-Suche (Teil 29) Akkordeon-Layout mit dynamischer Grid-Teilung und Inline-Provider-Suche.
  30. Cover-Architektur: Blobs von Metadaten trennen (Teil 30) CoverImages-Tabelle, Drei-Schichten-Zugriff und SQL-basierte Cover-Kopie zwischen Serien.
  31. UserControls in WinUI 3: SeriesTileControl und DependencyProperties (Teil 31) Wiederverwendbare Kachel-Controls mit DependencyProperties und AccordionSplitHelper.
  32. Hintergrund-Services: PeriodicTimer und CancellationToken (Teil 32) BackgroundCoverService mit PeriodicTimer, sauberem Shutdown und IServiceScopeFactory.
  33. Startup-Validierung: Splash-Screen und StartupResult (Teil 33) StartupValidator prüft beim App-Start Datenbank, Konfiguration und Online-Verfügbarkeit.
  34. Favoriten und Überwachung: Feature-Flags auf Serien-Covers (Teil 34) IsFavorite und IsWatched als Overlay-Buttons auf Kacheln — mit DependencyProperties.
  35. Cache-Verwaltung und Datenbankpflege in den Einstellungen (Teil 35) Verwaltungs-Tab mit Flag-basiertem Cache-Clear, Bibliotheks-Reset und kaskadierendem Purge.