Der Siegeszug der Web-Technologie in den vergangenen 20 Jahren beeinflußte die Software-Entwicklung maßgeblich. Er veränderte die Art und Weise, wie Dienste angeboten, Anwendungen und HMIs implementiert, Daten serialisiert, übertragen und verarbeitet werden, stark. Ein zeitgemäßes Framework muss dieser Entwicklung Rechnung tragen.
Qt ist ein etabliertes C++-Framework mit langer Historie und vielfältigen Einsatzszenarien - auch über sein Kernthema HMI hinaus. Qt wird vor diesem Hintergrund in drei Abschnitten beleuchtet:
Die Nutzung von Web-fokusierten Diensten und APIs aus Qt-Anwendungen heraus - Traditionelle Anwendungen, die Daten mit Web-basierten Diensten austauschen, sind heute der Standard. Dazu wird die Nutzung von REST und/oder WebSocket-APIs in Qt diskutiert. Dabei werden auch Themen wie SSL, Authentifikation und Autorisierung betrachtet.
Die Implementierung von Web-fokusierten Diensten und APIs mit Hilfe von Qt - In einer Reihe von typischen Szenarien stellt eine Qt-Anwendung selbst Dienste für Web-basierte Anwendungen bereit: unter anderem die Nutzung von Qt zur Umsetzung eines Backends für ein Web-basiertes HMI auf einem Embedded-System, die Einrichtung von Test-Schnittstellen an einer Qt-Anwendung (Test-Teams bevorzugen oft Scripting-Sprachen und nutzen Testframework die gut mit REST-APIs funktionieren) oder einem Zugang von existierenden C++/Qt-Anwendungen für Web-basierte Dienste. Das neue QHttpServer-Modul und die bereits länger verfügbare QWebSocketServer-API werden herausgearbeitet. Auch der server-seitige SSL-Einsatz wird diskutiert.
HMI-Entwicklung - In einer Reihe von Szenarien muss das HMI in einem Webbrowser laufen. Dabei kann zwischen zwei Ansätzen unterschieden werden: das HMI ist tatsächlich mit HTML5/CSS umgesetzt, oder ein Qt-implementiertes HMI soll in einem Webbrowser ausgeführt werden. Im ersten Fall stellt Qt mit der Qt-Webengine eine einbettbare Browser-Komponente: QWebChannels leistet dann eine enge Kopplung zwischen dem HMI und der in Qt/C++ geschriebenen Anwendungslogik. Im zweiten Fall werden verschiedene Wege betrachtet, auf denen die Ausgabe der Qt-Anwendung in einen Webbrowser geleitet wird (Webgl-streaming, VNC, Qt for WebAssembly).
Typische Szenarien, ihre Probleme und Lösungsansätze mit Qt-Werkzeugen, werden für alle drei Bereiche vorgestellt. Insbesondere werden Stärken und Schwächen von Qt in diesem Kontext beleuchtet. (ct)