Lernen Sie, wie moderne verteilte C++-Anwendungen mit Qt 6, ZeroMQ und Protocol Buffers konzipiert, entwickelt und getestet werden. Dieser fünftägige Kurs verbindet aktuelle C++-Entwicklungspraktiken mit grafischen Benutzeroberflächen, asynchroner Kommunikation, effizienter Datenserialisierung, automatisierten Tests und containerisierten Linux-Workflows. Die Teilnehmenden entwickeln schrittweise eine verteilte Anwendung, die aus einer Qt-basierten Benutzeroberfläche und miteinander kommunizierenden Backend-Komponenten besteht. Sie lernen, wartbaren C++-Code zu strukturieren, Ressourcen sicher zu verwalten, nebenläufige Aufgaben zu koordinieren und strukturierte Nachrichten zwischen Prozessen und Diensten auszutauschen. Der Kurs ist weitgehend unabhängig von bestimmten Nebenversionen der eingesetzten Software und von einer einzelnen Linux-Distribution konzipiert. Die Beispiele können mit C++17 oder C++20 unter Ubuntu, Rocky Linux oder einer anderen unterstützten Linux-Distribution umgesetzt werden.
Sie lernen, wie wartbare C++-Anwendungen entwickelt werden, die grafische Benutzeroberflächen, nebenläufige Verarbeitung und verteilte Kommunikation miteinander verbinden. Sie verwenden CMake für die Verwaltung von Projekten und Abhängigkeiten, entwickeln Benutzeroberflächen mit Qt Widgets, erhalten eine Einführung in Qt Quick und QML, implementieren ZeroMQ-Nachrichtenmuster und definieren effiziente Nachrichtenverträge mit Protocol Buffers.
• Moderne Sprach- und Ressourcenverwaltungskonzepte aus C++17 oder C++20 anwenden
• Anwendungen und Bibliotheken mit target-basiertem CMake strukturieren
• Desktop-Benutzeroberflächen mit Qt Widgets entwickeln
• Grundlagen von Qt Quick und QML verstehen
• Signale, Slots, Event Loops und das Qt-Objektmodell effektiv einsetzen
• Sichere Nebenläufigkeit und asynchrone Verarbeitung implementieren
• Verteilte Kommunikation mit ZeroMQ-Nachrichtenmustern gestalten
• Nachrichtenverträge mit Protocol Buffers definieren, generieren und weiterentwickeln
• Automatisierte Unit-, Komponenten- und Integrationstests erstellen
• Anwendungen in containerisierten Linux-Umgebungen entwickeln, erstellen und diagnostizieren
• Praktische Kenntnisse der C++-Grundlagen
• Vertrautheit mit Klassen, Vererbung, Funktionen und Containern der Standardbibliothek
• Grundkenntnisse in Linux und im Umgang mit Kommandozeilenwerkzeugen
• Allgemeine Kenntnisse zu Netzwerken und verteilten Anwendungen sind von Vorteil
• Vorkenntnisse in Qt, ZeroMQ oder Protocol Buffers sind nicht erforderlich
*Wir passen den Kursaufbau und die Inhalte an Ihre spezifischen Anforderungen und relevanten Anwendungsfälle an.
Tag 1: Modernes C++ und die Entwicklungsumgebung
Modul 1: Architektur verteilter C++-Anwendungen
• Merkmale von Desktop-, Client-Server- und verteilten Anwendungen
• Präsentations-, Domänen-, Kommunikations- und Infrastrukturkomponenten voneinander trennen
• Prozesse, Threads, Dienste und Nachrichtengrenzen verstehen
• Eine wartbare Projekt- und Repository-Struktur etablieren
Modul 2: Moderne Praktiken mit C++17 und C++20
• Automatische Ressourcenverwaltung mit RAII anwenden
• Smart Pointer und eindeutige Besitzmodelle verwenden
• Mit Move-Semantik, Lambda-Ausdrücken und modernen Standardbibliothekstypen arbeiten
• Optionale Werte, Varianten, Ranges und weitere ausgewählte Sprachfunktionen einsetzen
Modul 3: Projekte mit CMake erstellen
• Targets für Anwendungen, Bibliotheken und Tests erstellen
• Include-Pfade, Compilerfunktionen und verknüpfte Abhängigkeiten verwalten
• Projekte mit mehreren Verzeichnissen und wiederverwendbarer CMake-Konfiguration organisieren
• Anwendungsbestandteile generieren, installieren und paketieren
Modul 4: Linux-Entwicklung und Toolchain-Konfiguration
• Compiler, Build-Werkzeuge, Qt und externe Abhängigkeiten konfigurieren
• Mit GCC oder Clang und distributionsunabhängigen Projekteinstellungen arbeiten
• Build-Presets sowie getrennte Entwicklungs- und Release-Konfigurationen verwenden
• Reproduzierbare Umgebungen für Ubuntu, Rocky Linux oder eine andere unterstützte Distribution vorbereiten
Tag 2: Anwendungsentwicklung mit Qt 6
Modul 5: Qt-Architektur und zentrale Konzepte
• QObject, Parent-Child-Besitzverhältnisse und Metaobjektfunktionen verstehen
• Komponenten über Signale und Slots verbinden
• Mit Event Loop, Ereignissen und eingereihten Operationen arbeiten
• Zentrale Qt-Typen, Container, Timer und Anwendungsdienste verwenden
Modul 6: Benutzeroberflächen mit Qt Widgets entwickeln
• Fenster, Dialoge, Steuerelemente und Layouts erstellen
• Benutzeroberflächen mit Qt Designer und generierten Formularen gestalten
• Aktionen, Menüs, Symbolleisten und Benutzerinteraktionen verwalten
• Benutzeroberflächencode von der Anwendungslogik trennen
Modul 7: Anwendungsdesign mit Model/View
• Modelle, Views, Delegates und Auswahlen verstehen
• Standardmodelle für Listen, Tabellen und Baumstrukturen verwenden
• Benutzerdefinierte Modelle für Anwendungsdaten entwickeln
• Benutzeroberflächen bei Änderungen der zugrunde liegenden Daten effizient aktualisieren
Modul 8: Benutzerdefinierte Oberflächen und Anwendungsverhalten
• Wiederverwendbare und angepasste Widgets erstellen
• Painting, Geometrie und Eingabeereignisse behandeln
• Einstellungen, Ressourcen, Übersetzungen und Anwendungszustände verwalten
• Reaktionsfähige Fehlerbehandlung und verständliches Benutzerfeedback entwickeln
Tag 3: Qt Quick, Nebenläufigkeit und automatisierte Tests
Modul 9: Einführung in Qt Quick und QML
• Deklarative Entwicklung von Benutzeroberflächen verstehen
• Komponenten, Eigenschaften, Bindings und Layouts in QML erstellen
• Mit Qt Quick Controls und visuellen Zuständen arbeiten
• Geeignete Einsatzbereiche von Qt Widgets und Qt Quick vergleichen
Modul 10: C++ und QML verbinden
• C++-Objekte und Datenmodelle für QML verfügbar machen
• C++-Funktionen aus deklarativen Oberflächen aufrufen
• Über Eigenschaften, Signale und Methoden kommunizieren
• Eine klare Trennung zwischen Benutzeroberfläche und Anwendungslogik erhalten
Modul 11: Moderne Nebenläufigkeit und asynchrone Verarbeitung
• Threads, Aufgaben, Futures und ereignisgesteuerte Operationen vergleichen
• Thread-Besitzverhältnisse und Objektaffinität in Qt verwalten
• Daten sicher zwischen Worker- und Benutzeroberflächenkomponenten austauschen
• Race Conditions, Deadlocks, blockierte Event Loops und unsichere Objektzugriffe vermeiden
Modul 12: Automatisierte Tests und Debugging
• Unit- und Komponententests für C++- und Qt-Code erstellen
• Qt Test, CTest und Test-Targets in das Projekt integrieren
• Signale, asynchrones Verhalten und Benutzeroberflächenkomponenten testen
• Debugger, Sanitizer, Protokollierung und Diagnoseinformationen einsetzen
Tag 4: Verteilte Nachrichtenkommunikation mit ZeroMQ
Modul 13: ZeroMQ-Architektur und Kommunikationsgrundlagen
• Kontexte, Sockets, Nachrichten und Transportmechanismen verstehen
• Innerhalb eines Prozesses, zwischen Prozessen und über TCP kommunizieren
• ZeroMQ-Sockets mit konventionellen Netzwerk-Sockets vergleichen
• Verbindungsaufbau, Warteschlangen und asynchrone Zustellung verwalten
Modul 14: Zentrale Nachrichtenmuster
• Request-Reply-Kommunikation implementieren
• Informationen mit Publish-Subscribe verteilen
• Arbeit mit Push-Pull-Pipelines aufteilen
• Muster anhand der Kommunikations- und Skalierungsanforderungen auswählen
Modul 15: Erweitertes Routing und Zuverlässigkeit
• Dealer-Router-Muster für die asynchrone Anfrageverarbeitung einsetzen
• Mit mehrteiligen Nachrichten und Nachrichtenumschlägen arbeiten
• Timeouts, Wiederholungsversuche, erneute Verbindungen und kontrolliertes Beenden verwalten
• Warteschlangengrenzen, Backpressure und Bedingungen für Nachrichtenverluste verstehen
Modul 16: ZeroMQ in Qt-Anwendungen integrieren
• ZeroMQ-Verarbeitung mit ereignisgesteuerten Qt-Anwendungen koordinieren
• Kommunikationsaufgaben vom Thread der Benutzeroberfläche isolieren
• Empfangene Daten über threadsichere Signale und Slots bereitstellen
• Kommunikationsdienste mit eindeutigen Lebenszyklus- und Besitzregeln gestalten
Tag 5: Protocol Buffers, Container und integrierte Entwicklung
Modul 17: Protocol Buffers für C++-Anwendungen
• Strukturierte Nachrichten in Protokolldefinitionsdateien festlegen
• C++-Code über CMake generieren und integrieren
• Nachrichten serialisieren und deserialisieren
• Enumerationen, wiederholte Felder, Maps und alternative Feldgruppen verwenden
Modul 18: Nachrichtenverträge und Schemaentwicklung
• Stabile Nachrichten für verteilte Komponenten entwickeln
• Feldnummern, Standardwerte und optionale Informationen verwalten
• Schemata unter Beibehaltung der Kompatibilität weiterentwickeln
• Protocol-Buffers-Nachrichten mit ZeroMQ-Umschlägen und Routinginformationen kombinieren
Modul 19: Containerisierte Linux-Entwicklung und Integrationstests
• Reproduzierbare Build- und Laufzeitcontainer erstellen
• Compiler, Qt-Bibliotheken und Anwendungsabhängigkeiten in Container-Images verwalten
• Kommunizierende Anwendungskomponenten in einer isolierten Umgebung starten
• Prozessgrenzen, Nachrichtenverträge und Fehlerszenarien testen
Modul 20: Verteilte End-to-End-Anwendung
• Eine Qt-Benutzeroberfläche mit nebenläufiger Backend-Verarbeitung verbinden
• Protocol-Buffers-Nachrichten über ZeroMQ austauschen
• Automatisierte Tests, Protokollierung und kontrollierte Fehlerbehandlung anwenden
• Die vollständige Anwendung in einer containerisierten Linux-Umgebung erstellen, ausführen und diagnostizieren
Praxisnahes Lernen mit erfahrenen Trainern an Ihrem Standort für Organisationen.
Neue Fähigkeiten erlernen, angeleitet von erfahrenen Trainern von überall.