sgcHTML vs UniGUI, TMS WEB Core i IntraWeb: Wybór frameworka webowego dla Delphi

· Komponenty

Gdy zespół Delphi musi udostępnić aplikację biznesową w przeglądarce, pierwsze pytanie jest zawsze takie samo: który framework webowy? W 2026 roku istnieje pięć wiarygodnych opcji natywnych dla Delphi: IntraWeb, UniGUI, TMS WEB Core, TMS XData i sgcHTML. Każda z nich rozwiązuje problem inaczej i każda sprawdza się najlepiej w innej sytuacji. W tym wpisie omówiono każdą z nich rzetelnie, a następnie wyjaśniono, gdzie sgcHTML oferuje wyraźną przewagę.

IntraWeb — oryginalny framework webowy dla Delphi

IntraWeb istnieje od 2001 roku. Jego model jest prosty: formularze VCL renderowane po stronie serwera jako HTML. Jeśli znasz formularze Delphi, możesz budować strony w IntraWeb. Stan przechowywany jest na serwerze, a przeglądarka pełni w zasadzie rolę cienkiego klienta wyświetlającego wyniki. W przypadku narzędzi wewnętrznych z niewielką liczbą jednoczesnych użytkowników to podejście nadal sprawdza się dobrze.

Słabością IntraWeb są motywy wizualne i nowoczesny układ stron. Generuje własny HTML i CSS, które powstały przed erą Bootstrap i flexbox. Uzyskanie responsywnej, przyjaznej urządzeniom mobilnym strony wymaga znacznych nadpisań CSS. Wygenerowany kod znaczników jest rozbudowany i trudny do integracji z nowoczesnymi systemami projektowania. IntraWeb jest też całkowicie stanowy: każdy użytkownik przez cały czas wizyty utrzymuje obiekt sesji po stronie serwera, co ogranicza poziome skalowanie.

UniGUI — dojrzały, bogaty w funkcje, stanowy

UniGUI jest najbardziej kompletnym frameworkiem webowym dla Delphi. Paleta komponentów jest ogromna (siatki, wykresy, drzewa, mapy, przesyłanie plików, edytor tekstu sformatowanego, obsługa dotyku), a system motywów jest dojrzały. Pod spodem używa Sencha ExtJS, potężnej biblioteki komponentów JavaScript, która tworzy dopracowane interfejsy zbliżone jakością do natywnego pulpitu.

Kompromisem jest złożoność i architektura stanowa. Sesje UniGUI przechowują pełny stan komponentów na serwerze. Intensywna aplikacja z wieloma jednoczesymi użytkownikami wymaga znacznej ilości pamięci i starannego zarządzania sesjami. Warstwa ExtJS, choć potężna, nie jest Bootstrap, co oznacza, że każdy nowy pracownik znający Bootstrap musi uczyć się równoległego słownictwa. Licencje są naliczane za programistę i za serwer, a składnik kosztów licencji przypadający na serwer ma znaczenie przy wdrożeniach w chmurze.

TMS WEB Core — Pascal po stronie klienta kompilowany do JavaScript

TMS WEB Core przyjmuje odwrotne podejście: kompiluje aplikację Object Pascal do JavaScript przy użyciu kompilatora obsługującego WebAssembly. Wynik działa całkowicie w przeglądarce; zdarzenia formularza Delphi uruchamiają się jako zdarzenia JavaScript. Interfejs użytkownika używa Bootstrap lub Material Design, a TMS WEB Core dostarcza rosnący zestaw komponentów wizualnych.

To naprawdę przemyślana technologia, która dobrze sprawdza się w określonych zastosowaniach, szczególnie w samodzielnych aplikacjach przeglądarkowych wymagających pracy offline lub bardzo małego obciążenia serwera. Ograniczeniem jest model wdrożenia. Skompilowane dane wyjściowe to zestaw statycznych plików JavaScript i zasobów, które muszą być budowane, wersjonowane i serwowane. Dodanie funkcji oznacza przebudowę i ponowne wdrożenie pakietu klienta. Logika biznesowa, która wcześniej bezpiecznie znajdowała się na serwerze, teraz działa w przeglądarce, co rodzi pytania o bezpieczeństwo przy wrażliwych obliczeniach. Integracja z istniejącym komponentem po stronie serwera Delphi (np. TsgcWebSocketClient, połączenie FireDAC) wymaga pracy architektonicznej, ponieważ skompilowany JavaScript nie może bezpośrednio wywoływać natywnych jednostek Delphi.

TMS XData — zaplecze REST, nie framework webowego interfejsu użytkownika

TMS XData warto wspomnieć, ponieważ często jest porównywany z frameworkami webowego interfejsu użytkownika, ale nim nie jest. XData generuje API REST z klas serwisowych Delphi przy użyciu OpenAPI 3.0 i JSON. Front end musi być budowany osobno — w TMS WEB Core, React, Angular lub w czymkolwiek, co obsługuje HTTP. XData świetnie radzi sobie z tym, do czego jest przeznaczony. Po prostu nie eliminuje potrzeby oddzielnej technologii front-endowej, gdy chcesz interfejsu przeglądarkowego.

sgcHTML — komponenty po stronie serwera na standardowym Bootstrap 5

sgcHTML zajmuje inne miejsce niż wszystkie powyższe. Jest biblioteką komponentów po stronie serwera, której wynikiem jest standardowy HTML Bootstrap 5. Same komponenty to klasy Delphi (TsgcHTMLComponent_Chart, TsgcHTMLComponent_DataTable itd.); konfigurujesz je przez właściwości i odczytujesz łańcuch HTML. Ten łańcuch trafia do odpowiedzi HTTP. Przeglądarka renderuje go przy użyciu Bootstrap. htmx (biblioteka o rozmiarze 14 KB, bez kroku budowania) obsługuje interaktywność: kliknięcia i przesłania formularzy wracają do twojego programu obsługi Delphi, który odpowiada fragmentem HTML, a htmx zastępuje odpowiednią sekcję strony.

Architektura jest bezstanowa. Każde żądanie buduje to, czego potrzebuje, zwraca HTML i kończy działanie. Nie ma drzewa komponentów per sesja do utrzymywania. Poziome skalowanie jest trywialne: wystarczy umieścić load balancer przed dwoma instancjami tego samego pliku .exe.

Porównanie obok siebie

Cecha IntraWeb UniGUI TMS WEB Core sgcHTML
Architektura Stanowe formularze po stronie serwera Stanowa sesja ExtJS Pascal po stronie klienta→JS Bezstanowy HTML po stronie serwera
Wynikowy kod znaczników Zastrzeżony HTML + CSS ExtJS JSON/HTML Standardowy Bootstrap Standardowy Bootstrap 5
Interaktywność Pełne przeładowanie strony lub AJAX ExtJS AJAX Działa w przeglądarce Fragmenty htmx + WebSocket
Push WebSocket w czasie rzeczywistym Nie (dodatek) Ograniczony Przez JS WebSocket API Tak — pierwszorzędny (sgcWebSockets)
Skalowalność Ograniczona przez stan sesji Ograniczona przez stan sesji Bezstanowa (pliki statyczne) Bezstanowa, pozioma
JavaScript który piszesz Brak Minimalny Brak (kompilowany z Pascala) Brak
Wymagane npm / Node.js Nie Nie Tak (krok budowania) Nie
Wdrożenie jako jeden plik binarny Tak Tak Nie (pakiet JS + zasoby) Tak
Powiązanie z DataSet Tak Tak Przez pomost JS Tak (bezpośrednio TDataSet/TDataSource)
Liczba komponentów UI ~40 80+ 50+ 60+
Mobilny/responsywny Częściowy Tak (ExtJS Touch) Tak (Bootstrap) Tak (Bootstrap 5)
Edycja .NET Nie Nie Nie Tak (.NET 6+)

Gdzie sgcHTML ma wyraźną przewagę

Pulpity nawigacyjne w czasie rzeczywistym. Ponieważ sgcHTML jest zbudowany na sgcWebSockets, ten sam serwer, który serwuje strony HTML, obsługuje również połączenia WebSocket. Aktualizacja ceny akcji, nowy odczyt czujnika lub ukończony przebieg produkcji może przesłać fragment HTML do każdej połączonej karty przeglądarki jednym wywołaniem Broadcast. Bez odpytywania, bez oddzielnej infrastruktury push, bez dodatkowej licencji. IntraWeb i UniGUI mają ograniczoną obsługę WebSocket wymagającą dodatkowej pracy integracyjnej. TMS WEB Core może używać natywnego API WebSocket przeglądarki, ale wymaga logiki JavaScript po stronie klienta do obsługi przychodzących wiadomości.

Standardowe znaczniki bez narzutu na dostosowywanie. Ponieważ wynikiem jest HTML Bootstrap 5, każdy projektant znający Bootstrap może go stylizować. Motywy to standardowe motywy Bootstrap — istnieją setki darmowych i płatnych motywów, które stosują się natychmiast. IntraWeb i UniGUI generują kod znaczników specyficzny dla danego frameworka, co wymaga nauki odrębnego systemu stylów.

Bezstanowość i poziome skalowanie. Każde żądanie sgcHTML jest niezależne. Na serwerze nie ma obiektu sesji na użytkownika. Dwie instancje tego samego pliku wykonywalnego z load balancerem obsługują żądania zamiennie. IntraWeb i UniGUI kierują żądania z powrotem do konkretnej instancji serwera przechowującej sesję, co komplikuje wdrożenia w chmurze.

Wdrożenie jako jeden plik wykonywalny. CSS Bootstrap, Chart.js i htmx są zasobami osadzonymi wewnątrz pliku binarnego Delphi. Wdrożenie sgcHTML oznacza skopiowanie jednego pliku .exe. TMS WEB Core produkuje pakiet JavaScript i zestaw zasobów, które muszą być wersjonowane i serwowane oddzielnie.

Brak łańcucha narzędzi budowania. Nie ma npm, nie ma webpack, nie ma Babel i nie ma Node.js. Kompilujesz projekt Delphi i wysyłasz. Ma to ogromne znaczenie w środowiskach regulowanych i wdrożeniach lokalnych, gdzie zainstalowanie narzędzi Node.js wymaga zgody działu IT.

Bezpośrednie porównanie kodu: siatka danych

Aby uczynić różnicę konkretną, oto jak renderować przeszukiwalną, paginowaną siatkę danych z zapytania FireDAC w sgcHTML:

uses
  sgcHTML_Component_DataTable;

var
  oTable: TsgcHTMLComponent_DataTable;
begin
  oTable := TsgcHTMLComponent_DataTable.Create(nil);
  oTable.PageBuilder  := oPage.PageBuilder;
  oTable.Section      := 'data';
  oTable.Title        := 'Customers';
  oTable.ShowSearch   := True;
  oTable.ShowExport   := True;
  oTable.LoadFromDataSet(fdqCustomers, 25); // 25 rows per page
  // Read oTable.HTML and include it in your response
end;

Wynikiem jest responsywna, przeszukiwalna, paginowana tabela Bootstrap ze wskaźnikami sortowania, polem wyszukiwania i przyciskiem eksportu. Przeglądarka renderuje ją bez dodatkowych round-tripów do serwera dla pierwszego załadowania strony. Filtrowanie i paginacja używają htmx do zamiany wyłącznie fragmentu tabeli, nie całej strony.

Kiedy wybierać alternatywy

sgcHTML nie zawsze jest właściwym wyborem. Jeśli masz dużą istniejącą aplikację IntraWeb lub UniGUI z setkami formularzy i dobrze ugruntowanym systemem motywów, jej migracja ma niewielki sens. UniGUI jest lepszym wyborem, gdy potrzebujesz zaawansowanych możliwości siatki (zamrożone kolumny, edytory komórek, grupowanie wierszy, tabele przestawne) dorównujących lub przewyższających Excel, albo gdy chcesz dopracowania ExtJS dla narzędzia back-office dla zaawansowanych użytkowników. TMS WEB Core jest właściwym wyborem, gdy potrzebujesz aplikacji działającej offline w przeglądarce bez serwera, lub gdy chcesz dystrybuować jednostronicową aplikację jako pliki statyczne przez CDN.

sgcHTML jest najlepszym wyborem gdy:

Wypróbuj sgcHTML

Bezpłatna wersja próbna ze wszystkimi ponad 60 komponentami i bez ograniczeń funkcji jest dostępna na esegece.com/products/sgchtml/download. Pobrane pliki zawierają cztery działające aplikacje demonstracyjne (ERP, Admin Console, Live Monitor i Customer Portal), które prezentują paletę komponentów w realistycznych scenariuszach.

Masz pytania lub chcesz porównania z konkretnym istniejącym projektem? Skontaktuj się z nami. Odpowiedź otrzymasz od osób, które napisały ten kod.