Migracja z WinForms lub WPF do Qt: kiedy ma sens?
Migracja z WinForms lub WPF do Qt ma sens, gdy usuwa konkretną barierę rozwoju produktu, na przykład brak wersji dla klientów korzystających z Linuxa lub macOS. Jeśli program pozostaje na Windows, a problemem jest wolne wyszukiwanie, trudna obsługa albo koszt kolejnych zmian, warto najpierw porównać migrację z modernizacją obecnej aplikacji. Sam wybór Qt nie gwarantuje szybszego działania ani niższych kosztów.
Dla osoby odpowiedzialnej za produkt najważniejsze jest ustalenie, co firma otrzyma w zamian za przebudowę. Nowy wygląd okien może być częścią zmiany, ale nie opisuje jej wartości. Lepszym punktem wyjścia jest konkretna potrzeba: użytkownik ma wykonać określoną pracę na nowym systemie, obsłużyć inne urządzenie albo przestać powtarzać uciążliwą czynność.
Kiedy warto pozostać przy WinForms lub WPF
WinForms i WPF służą do tworzenia aplikacji dla Windows. To ograniczenie platformy nie oznacza, że każda oparta na nich aplikacja wymaga wymiany. WPF ma rozbudowane możliwości interfejsu, a Microsoft opisuje modernizację aplikacji WPF na .NET, z uwzględnieniem zgodności bibliotek i dotychczasowego kodu.
Jeżeli pracownicy nadal będą korzystać z Windows, przygotuj również wariant naprawy obecnego programu. Może obejmować usprawnienie wyszukiwania, uporządkowanie formularza lub oddzielenie długiego przetwarzania od obsługi ekranu. Najpierw trzeba potwierdzić przyczynę problemu. Przepisanie interfejsu nie usunie opóźnienia po stronie zewnętrznego systemu, na którego odpowiedź aplikacja czeka.
Porównuj oba warianty przy tym samym oczekiwanym wyniku. Inaczej oferta drobnej naprawy i oferta przebudowy całego produktu będą wyglądały jak alternatywy, choć obejmują zupełnie inną pracę. Uwzględnij też funkcje, których rozwój zostanie odłożony na czas migracji.
Co Qt daje przy wyjściu poza Windows
Qt obsługuje Windows, Linux i macOS w określonych konfiguracjach. Lista wspieranych platform zależy od wersji Qt, systemu i użytych modułów. Pozwala to planować wspólny rozwój części aplikacji dla kilku platform, ale wymaga sprawdzenia całego produktu na każdej z nich.
Przed wyceną ustal, które systemy są rzeczywiście potrzebne klientom. „Może kiedyś macOS” jest inną przesłanką niż zamówienie wymagające uruchomienia produktu na konkretnych komputerach. W drugim przypadku sprawdź także drukarki, skanery, logowanie, raporty i inne elementy codziennej pracy. Dostępność samego interfejsu Qt nie potwierdza zgodności tych zależności.
Obsługa kilku systemów obejmuje również dostarczanie nowych wersji. Qt opisuje osobne procedury wdrożenia dla poszczególnych platform. Do zakresu prac powinny więc wejść instalacja, aktualizacja i test uruchomienia na komputerze użytkownika, bez narzędzi programistycznych.
Oddziel przebudowę ekranu od reguł działania
Interfejs WinForms lub WPF i interfejs Qt korzystają z innych komponentów. Qt pozwala budować interfejs z użyciem Qt Widgets lub Qt Quick. Przeniesienie aplikacji wymaga ustalenia, jak odtworzyć potrzebne zachowanie; podobny przycisk czy tabela nie oznaczają zgodności wszystkich funkcji.
Osobno oceń obliczenia, reguły zatwierdzania, obsługę danych i połączenia z innymi systemami. Rozważ pozostawienie części logiki .NET poza nowym interfejsem, jeśli jej zależności i sposób komunikacji na to pozwalają. Taki podział trzeba sprawdzić także pod kątem instalacji i działania przy niedostępności połączenia. Nie zakładaj ani konieczności przepisania wszystkiego, ani bezkosztowego zachowania całego kodu.
Poproś dostawcę o wskazanie, co zostaje, co wymaga zmiany i czego jeszcze nie udało się ocenić. Do tej ostatniej grupy mogą należeć zamknięte biblioteki producentów urządzeń albo rozbudowane narzędzie raportowe. Ich sprawdzenie może mieć większy wpływ na decyzję niż przygotowanie nowego ekranu startowego.
Próba, która rozstrzyga istotną niewiadomą
Załóżmy, że firma ma konfigurator urządzenia w WPF, a nowy odbiorca potrzebuje wersji na Linux. Program wysyła ustawienia, odbiera wynik i tworzy protokół PDF. To hipotetyczna sytuacja do oceny migracji, nie opis realizacji klienta.
Pierwsza próba powinna objąć cały ten przebieg na docelowym systemie. Samo pokazanie formularza w Qt nie odpowiada na pytanie, czy użytkownik wykona pracę. Trzeba sprawdzić połączenie z urządzeniem, zgodność zapisu ustawień, wynik i protokół oraz reakcję na przerwane połączenie. Jeśli biblioteka urządzenia działa tylko na Windows, nowy interfejs nie usuwa tej przeszkody.
Po takiej próbie można podjąć decyzję o dalszej migracji, zmianie sposobu integracji albo zatrzymaniu projektu. Oczekiwanym rezultatem pierwszego etapu jest rozstrzygnięcie ważnej niewiadomej i aktualizacja zakresu, nie obowiązek kontynuowania raz wybranej technologii.
Jak utrzymać pracę podczas zmiany
Migracja etapami jest użyteczna wtedy, gdy można wyznaczyć granice między starą i nową częścią. Ustal, która wersja zapisuje dane, czy obie rozumieją ten sam format i co stanie się z pracą wykonaną po przełączeniu, jeśli trzeba będzie wrócić. Samo zachowanie starego instalatora nie rozwiązuje problemu zgodności danych.
Przy mocno powiązanych funkcjach równoległe utrzymanie dwóch wersji może być kosztowne. Wtedy porównaj je z przygotowaniem nowej wersji i kontrolowanym przełączeniem użytkowników. W obu wariantach potrzebne są próby na typowych zadaniach, obsługa zgłoszeń oraz osoba odpowiedzialna za decyzję o wycofaniu wydania.
Takie zabezpieczenie codziennej pracy ma znaczenie niezależnie od biblioteki interfejsu. Przy modernizacji aplikacji desktopowej TimeCamp rozwijamy kontrolowany proces wydań i testy regresji, czyli sprawdzanie, czy zmiany nie psują istniejących funkcji. Obejmują one śledzenie czasu, projekty i wpisy czasu. To właśnie potrzebne użytkownikom działania powinny wyznaczać zakres odbioru.
Co uwzględnić w decyzji i budżecie
Budżet powinien objąć analizę zależności, przebudowę potrzebnych części, sprawdzenie zgodności danych, testy na docelowych systemach, przygotowanie wydań i naukę zespołu. Dodaj utrzymanie starej aplikacji do czasu przełączenia oraz odpowiedzialność za późniejsze poprawki. Oferta obejmująca wyłącznie odtworzenie ekranów może pomijać znaczną część pracy.
Sprawdź również warunki licencjonowania Qt. Dostępne są warianty komercyjne i open source, ale warunki różnią się między modułami. Nie należy z góry zakładać ani braku kosztu licencji, ani obowiązku jej zakupu w każdym produkcie. Ocena musi dotyczyć wybranych komponentów i sposobu udostępniania aplikacji.
Decyzja o migracji jest dobrze przygotowana, gdy potrafisz wskazać potrzebę klienta, wynik próby najtrudniejszej zależności i warunki przełączenia użytkowników. Jeśli te same potrzeby można spełnić mniejszą zmianą w WinForms lub WPF, taki wariant zasługuje na równoprawne porównanie.


