Von WinForms oder WPF zu Qt: Wann lohnt sich die Migration?
Eine Migration von WinForms oder WPF zu Qt ist sinnvoll, wenn sie ein konkretes Hindernis für die Weiterentwicklung des Produkts beseitigt, etwa eine fehlende Version für Kunden mit Linux oder macOS. Bleibt die Anwendung auf Windows und geht es um eine langsame Suche, umständliche Bedienung oder hohe Änderungskosten, sollten Sie die Migration zunächst mit einer Modernisierung der bestehenden Anwendung vergleichen. Qt allein garantiert weder mehr Leistung noch niedrigere Kosten.
Für Produktverantwortliche zählt vor allem, welchen Nutzen das Unternehmen aus dem Umbau zieht. Eine neue Gestaltung der Fenster kann dazugehören, erklärt diesen Nutzen aber noch nicht. Besser ist ein konkreter Ausgangspunkt: Ein Nutzer soll eine Aufgabe auf einem anderen Betriebssystem erledigen, ein anderes Gerät bedienen oder einen umständlichen Arbeitsschritt nicht mehr ständig wiederholen müssen.
Wann es sich lohnt, bei WinForms oder WPF zu bleiben
WinForms und WPF dienen zur Entwicklung von Windows-Anwendungen. Diese Beschränkung auf eine Plattform bedeutet nicht, dass jede damit entwickelte Anwendung ersetzt werden muss. WPF bietet umfangreiche Möglichkeiten für die Benutzeroberfläche. Microsoft beschreibt zudem die Modernisierung von WPF-Anwendungen auf .NET, einschließlich der Kompatibilität vorhandener Bibliotheken und des bestehenden Codes.
Wenn die Beschäftigten weiterhin Windows nutzen, sollten Sie auch eine Verbesserung der vorhandenen Anwendung prüfen. Dazu können eine schnellere Suche, ein übersichtlicheres Formular oder die Trennung aufwendiger Verarbeitung von der Bedienoberfläche gehören, damit diese weiter reagiert. Zunächst muss die Ursache des Problems feststehen. Eine neue Oberfläche beseitigt keine Verzögerung in einem externen System, auf dessen Antwort die Anwendung wartet.
Vergleichen Sie beide Varianten anhand desselben erwarteten Ergebnisses. Sonst erscheinen ein Angebot für eine kleine Korrektur und eines für den Umbau des gesamten Produkts als Alternativen, obwohl sie ganz unterschiedliche Arbeiten umfassen. Berücksichtigen Sie auch Funktionen, deren Weiterentwicklung während der Migration warten muss.
Was Qt beim Wechsel auf weitere Betriebssysteme bietet
Qt unterstützt Windows, Linux und macOS in bestimmten Konfigurationen. Die Liste unterstützter Plattformen hängt von der Qt-Version, dem Betriebssystem und den verwendeten Modulen ab. Dadurch lassen sich Teile der Anwendung gemeinsam für mehrere Plattformen entwickeln. Das gesamte Produkt muss dennoch auf jeder Zielplattform geprüft werden.
Klären Sie vor einer Kostenschätzung, welche Betriebssysteme Ihre Kunden tatsächlich brauchen. „Vielleicht irgendwann macOS“ ist eine andere Grundlage als ein Auftrag, für den das Produkt auf bestimmten Rechnern laufen muss. Prüfen Sie im zweiten Fall auch Drucker, Scanner, Anmeldung, Berichte und andere Bestandteile der täglichen Arbeit. Dass eine Qt-Oberfläche verfügbar ist, bestätigt noch nicht die Kompatibilität dieser Abhängigkeiten.
Mehrere Betriebssysteme zu unterstützen bedeutet auch, neue Versionen für sie bereitzustellen. Qt beschreibt eigene Verfahren für die Bereitstellung auf den einzelnen Plattformen. Installation, Aktualisierung und ein Test auf einem Nutzerrechner ohne Entwicklungswerkzeuge gehören deshalb ebenfalls zum Arbeitsumfang.
Oberfläche und fachliche Regeln getrennt betrachten
Eine WinForms- oder WPF-Oberfläche verwendet andere Komponenten als eine Qt-Oberfläche. Qt bietet dafür Qt Widgets und Qt Quick. Bei der Migration muss festgelegt werden, wie das benötigte Verhalten umgesetzt wird. Eine ähnlich aussehende Schaltfläche oder Tabelle bedeutet nicht, dass alle Funktionen gleich arbeiten.
Bewerten Sie Berechnungen, Freigaberegeln, Datenverarbeitung und Verbindungen zu anderen Systemen gesondert. Prüfen Sie, ob Teile der .NET-Logik außerhalb der neuen Oberfläche erhalten bleiben können, sofern ihre Abhängigkeiten und die Kommunikation dies zulassen. Dabei müssen auch die Installation und das Verhalten bei einer nicht verfügbaren Verbindung geprüft werden. Gehen Sie weder davon aus, dass alles neu geschrieben werden muss, noch davon, dass der gesamte Code ohne Aufwand erhalten bleiben kann.
Lassen Sie sich vom Anbieter zeigen, was bleibt, was geändert werden muss und was noch nicht bewertet werden konnte. Zur letzten Gruppe können proprietäre Gerätebibliotheken oder ein umfangreiches Berichtswerkzeug gehören. Deren Prüfung kann für die Entscheidung wichtiger sein als ein neuer Startbildschirm.
Ein Versuch, der eine wichtige offene Frage klärt
Angenommen, ein Unternehmen hat einen Gerätekonfigurator auf WPF-Basis, und ein neuer Kunde benötigt eine Linux-Version. Die Anwendung sendet Einstellungen, empfängt ein Ergebnis und erstellt ein PDF-Protokoll. Das ist ein hypothetisches Beispiel zur Bewertung einer Migration, kein Kundenprojekt.
Der erste Versuch sollte diesen vollständigen Ablauf auf dem Zielsystem abbilden. Ein in Qt angezeigtes Formular beantwortet noch nicht die Frage, ob der Nutzer seine Aufgabe erledigen kann. Zu prüfen sind die Geräteverbindung, die Kompatibilität der gespeicherten Einstellungen, Ergebnis und Protokoll sowie das Verhalten bei einem Verbindungsabbruch. Läuft die Gerätebibliothek nur unter Windows, beseitigt eine neue Oberfläche dieses Hindernis nicht.
Danach lässt sich entscheiden, ob die Migration fortgesetzt, die Anbindung anders gelöst oder das Projekt gestoppt werden sollte. Das Ziel der ersten Phase ist, eine wichtige offene Frage zu klären und den Arbeitsumfang anzupassen. Sie verpflichtet nicht dazu, an einer einmal gewählten Technologie festzuhalten.
Den laufenden Betrieb während des Umstiegs sichern
Eine schrittweise Migration ist sinnvoll, wenn sich klare Grenzen zwischen alten und neuen Teilen ziehen lassen. Legen Sie fest, welche Version Daten schreibt, ob beide dasselbe Format verarbeiten können und was bei einer Rückkehr zur alten Version mit der seit dem Umstieg erledigten Arbeit geschieht. Das alte Installationsprogramm aufzubewahren reicht nicht aus, um die Datenkompatibilität zu sichern.
Sind Funktionen eng miteinander verbunden, kann die parallele Pflege zweier Versionen teuer werden. Vergleichen Sie diesen Ansatz mit der Vorbereitung einer neuen Version und einem kontrollierten Umstieg der Nutzer. Beide Varianten erfordern Tests anhand typischer Aufgaben, die Bearbeitung von Supportanfragen und eine Person, die über das Zurückziehen einer Version entscheidet.
Diese Absicherung der täglichen Arbeit ist unabhängig von der verwendeten Oberflächenbibliothek wichtig. Bei der Modernisierung der TimeCamp-Desktopanwendung entwickeln wir einen kontrollierten Prozess für Veröffentlichungen und Regressionstests. Diese Tests prüfen, ob Änderungen bestehende Funktionen beeinträchtigen, und decken Zeiterfassung, Projekte und Zeiteinträge ab. Die für die Nutzer wichtigen Aufgaben sollten bestimmen, was bei der Abnahme geprüft wird.
Was in die Entscheidung und das Budget gehört
Das Budget sollte die Analyse der Abhängigkeiten, den Umbau der benötigten Teile, die Prüfung der Datenkompatibilität, Tests auf den Zielsystemen, die Vorbereitung der Veröffentlichungen und die Einarbeitung des Teams umfassen. Hinzu kommt die Pflege der alten Anwendung bis zum Umstieg. Klären Sie außerdem, wer für spätere Korrekturen verantwortlich ist. Ein Angebot, das nur die Nachbildung der Oberflächen umfasst, kann einen erheblichen Teil der Arbeit auslassen.
Prüfen Sie auch die Lizenzbedingungen von Qt. Es gibt kommerzielle und Open-Source-Varianten, deren Bedingungen sich je nach Modul unterscheiden. Gehen Sie weder grundsätzlich von einer kostenlosen Lizenz aus noch davon, dass für jedes Produkt eine Lizenz gekauft werden muss. Entscheidend sind die ausgewählten Komponenten und die Art, wie die Anwendung bereitgestellt wird.
Eine Migrationsentscheidung ist gut vorbereitet, wenn Sie den Kundenbedarf benennen, das Testergebnis für die schwierigste Abhängigkeit vorlegen und die Bedingungen für den Umstieg der Nutzer festlegen können. Lassen sich dieselben Anforderungen mit einer kleineren Änderung an WinForms oder WPF erfüllen, verdient diese Variante einen gleichberechtigten Vergleich.


