sgcHTML vs UniGUI, TMS WEB Core ve IntraWeb: Delphi Web Framework Seçimi

· Bileşenler

Bir Delphi ekibi iş uygulamasını tarayıcıda sunmaya ihtiyaç duyduğunda akla gelen ilk soru hep aynıdır: hangi web framework'ü? 2026 yılında Delphi'ye özgü beş güvenilir seçenek bulunmaktadır: IntraWeb, UniGUI, TMS WEB Core, TMS XData ve sgcHTML. Her biri sorunu farklı biçimde çözmekte ve farklı durumlarda öne çıkmaktadır. Bu yazıda her birini dürüstçe ele alıyor, ardından sgcHTML'nin belirgin bir avantaj sunduğu alanları açıklıyoruz.

IntraWeb — Delphi'nin özgün web framework'ü

IntraWeb 2001'den bu yana kullanılmaktadır. Modeli basittir: VCL formları sunucu taraflı HTML olarak işlenir. Delphi formlarını biliyorsanız bir IntraWeb sayfası oluşturabilirsiniz. Durum sunucuda tutulur; tarayıcı yalnızca ince bir görüntüleme katmanıdır. Eş zamanlı kullanıcı sayısının makul düzeyde olduğu dahili araçlar için bu yaklaşım hâlâ işe yaramaktadır.

IntraWeb'in zorlandığı alan tema oluşturma ve modern düzendir. Kendi HTML ve CSS'ini üretir; bu çıktı Bootstrap ve flexbox öncesi bir dönemden gelmektedir. Duyarlı ve mobil uyumlu bir sayfa elde etmek için kapsamlı CSS geçersiz kılma çalışması gerekmektedir. Üretilen işaretleme ayrıntılıdır ve modern tasarım sistemlerine entegre etmek güçtür. IntraWeb tamamen durumludur: her kullanıcı, ziyaret süresince sunucu tarafında bir oturum nesnesi tutar; bu da yatay ölçeklenebilirliği sınırlar.

UniGUI — olgun, tam özellikli, durumlu

UniGUI, en kapsamlı özellik setine sahip Delphi web framework'üdür. Bileşen paleti son derece geniştir (ızgaralar, grafikler, ağaçlar, haritalar, dosya yükleme, zengin metin düzenleyici, dokunmatik destek) ve tema sistemi olgunlaşmıştır. Arka planda, masaüstü kalitesine yakın cilalı arayüzler üreten güçlü bir JavaScript bileşen kütüphanesi olan Sencha ExtJS kullanılmaktadır.

Takas, karmaşıklık ve durumlu mimaridir. UniGUI oturumları, tam bileşen durumunu sunucuda tutar. Çok sayıda eş zamanlı kullanıcıya sahip yoğun bir uygulama, önemli miktarda bellek ve dikkatli oturum yönetimi gerektirir. ExtJS katmanı güçlü olmakla birlikte Bootstrap değildir; dolayısıyla Bootstrap bilen her yeni çalışanın paralel bir sözcük dağarcığı öğrenmesi gerekir. Lisanslar geliştirici ve sunucu başına alınmaktadır; sunucu başına lisans maliyeti bulut dağıtımları için önem taşımaktadır.

TMS WEB Core — JavaScript'e derlenen istemci taraflı Pascal

TMS WEB Core tam ters yaklaşımı benimser: Object Pascal uygulamanızı WebAssembly destekli bir derleyici kullanarak JavaScript'e derler. Sonuç tamamen tarayıcıda çalışır; Delphi form olaylarınız JavaScript olayları olarak tetiklenir. Kullanıcı arayüzü Bootstrap veya Material Design kullanır; TMS WEB Core ile birlikte giderek genişleyen bir görsel bileşen seti sunulmaktadır.

Bu gerçekten zekice bir teknolojidir ve belirli kullanım senaryoları, özellikle çevrimdışı kapasite veya çok düşük sunucu yükü gerektiren bağımsız tarayıcı uygulamaları için iyi çalışmaktadır. Sınırlama, dağıtım modelidir. Derlenen çıktı, oluşturulması, sürümlenmesi ve sunulması gereken bir dizi statik JavaScript dosyası ve varlıktan oluşmaktadır. Yeni bir özellik eklemek, istemci paketinin yeniden oluşturulmasını ve yeniden dağıtılmasını gerektirir. Daha önce güvenli biçimde sunucuda bulunan iş mantığı artık tarayıcıda çalışır; bu durum hassas hesaplamalar için güvenlik soruları doğurur. Mevcut bir Delphi sunucu taraflı bileşenle (TsgcWebSocketClient, bir FireDAC bağlantısı) entegrasyon, mimari çalışma gerektirir; zira derlenen JavaScript, yerel Delphi birimlerini doğrudan çağıramaz.

TMS XData — REST arka ucu, web kullanıcı arayüzü framework'ü değil

TMS XData, web kullanıcı arayüzü framework'leriyle sıkça karşılaştırıldığı için değinmeye değerdir; ancak bir web kullanıcı arayüzü framework'ü değildir. XData, OpenAPI 3.0 ve JSON kullanarak Delphi hizmet sınıflarından bir REST API'si oluşturur. Ön yüzün ayrıca oluşturulması gerekir: TMS WEB Core, React, Angular veya HTTP konuşan herhangi bir şeyle. XData yaptığı işi mükemmel yapar; yalnızca tarayıcı arayüzü istediğinizde ayrı bir ön yüz teknolojisi ihtiyacını ortadan kaldırmaz.

sgcHTML — standart Bootstrap 5 üzerinde sunucu taraflı bileşenler

sgcHTML yukarıdakilerin tümünden farklı bir konum benimser. Çıktısı standart Bootstrap 5 HTML olan bir sunucu taraflı bileşen kütüphanesidir. Bileşenlerin kendisi Delphi sınıflarıdır (TsgcHTMLComponent_Chart, TsgcHTMLComponent_DataTable vb.); bunları özellikler aracılığıyla yapılandırır ve bir HTML dizesi okursunuz. Bu dize HTTP yanıtınıza gider. Tarayıcı onu Bootstrap kullanarak işler. htmx (14 KB boyutunda bir kütüphane, derleme adımı gerektirmez) etkileşimi yönetir: tıklamalar ve form gönderimleri Delphi işleyicinize döner; işleyici bir HTML parçasıyla yanıt verir ve htmx sayfanın ilgili bölümünü değiştirir.

Mimari durumsuz çalışır. Her istek ihtiyaç duyduğunu oluşturur, HTML'yi döndürür ve tamamlanır. Sunucuda sürdürülecek kullanıcı başına bileşen ağacı yoktur. Yatay ölçeklendirme zahmetsizdir: aynı .exe'nin iki örneğinin önüne bir yük dengeleyici koymanız yeterlidir.

Yan yana karşılaştırma

Özellik IntraWeb UniGUI TMS WEB Core sgcHTML
Mimari Durumlu sunucu taraflı formlar Durumlu ExtJS oturumu İstemci taraflı Pascal→JS Durumsuz sunucu taraflı HTML
Çıktı işaretlemesi Özel HTML + CSS ExtJS JSON/HTML Standart Bootstrap Standart Bootstrap 5
Etkileşim Tam sayfa yenileme veya AJAX ExtJS AJAX Tarayıcıda çalışır htmx parçaları + WebSocket
Gerçek zamanlı WebSocket push Hayır (eklenti) Sınırlı JS WebSocket API aracılığıyla Evet — birinci sınıf (sgcWebSockets)
Ölçeklenebilirlik Oturum durumuyla sınırlı Oturum durumuyla sınırlı Durumsuz (statik dosyalar) Durumsuz, yatay
Yazdığınız JavaScript Hiç Minimal Hiç (Pascal'dan derlenir) Hiç
npm / Node.js gerektirir mi Hayır Hayır Evet (derleme adımı) Hayır
Tek ikili dağıtım Evet Evet Hayır (JS paketi + varlıklar) Evet
DataSet bağlama Evet Evet JS köprüsü aracılığıyla Evet (doğrudan TDataSet/TDataSource)
Kullanıcı arayüzü bileşen sayısı ~40 80+ 50+ 60+
Mobil/duyarlı Kısmi Evet (ExtJS Touch) Evet (Bootstrap) Evet (Bootstrap 5)
.NET sürümü Hayır Hayır Hayır Evet (.NET 6+)

sgcHTML'nin belirgin avantajları

Gerçek zamanlı gösterge panelleri. sgcHTML, sgcWebSockets üzerine inşa edildiğinden HTML sayfalarına hizmet veren aynı sunucu WebSocket bağlantılarını da yönetir. Bir hisse senedi fiyatı güncellemesi, yeni bir sensör okuması veya tamamlanan bir üretim işlemi, tek bir Broadcast çağrısıyla bağlı her tarayıcı sekmesine HTML parçası olarak gönderilebilir. Yoklama yok, ayrı bir push altyapısı yok, ek lisans yok. IntraWeb ve UniGUI'nin her ikisinde de sınırlı WebSocket desteği bulunmakta olup ek entegrasyon çalışması gerektirmektedir. TMS WEB Core, tarayıcının yerel WebSocket API'sini kullanabilir; ancak gelen iletileri işlemek için istemci taraflı JavaScript mantığı gerektirir.

Özelleştirme yükü olmaksızın standart işaretleme. Çıktı Bootstrap 5 HTML olduğundan Bootstrap bilen her tasarımcı onu stillendirebilir. Temalar standart Bootstrap temalarıdır; yüzlerce ücretsiz ve ücretli tema mevcuttur ve anında uygulanır. IntraWeb ve UniGUI, ayrı bir stillendirme sistemi öğrenmeyi gerektiren framework'e özgü işaretleme üretir.

Durumsuz ve yatay olarak ölçeklenebilir. Her sgcHTML isteği bağımsızdır. Sunucuda kullanıcı başına oturum nesnesi bulunmaz. Aynı çalıştırılabilirin yük dengelemeli iki örneği isteklere birbirinin yerine geçerek yanıt verir. IntraWeb ve UniGUI, istekleri oturumu tutan belirli sunucu örneğine yönlendirir; bu durum bulut dağıtımlarını karmaşıklaştırır.

Tek çalıştırılabilir dağıtım. Bootstrap CSS, Chart.js ve htmx, Delphi ikili dosyasının içinde gömülü kaynaklar olarak yer alır. sgcHTML'yi dağıtmak, tek bir .exe kopyalamak anlamına gelir. TMS WEB Core, ayrıca sürümlenmesi ve sunulması gereken bir JavaScript paketi ile varlıklar üretir.

Derleme zinciri yok. npm yok, webpack yok, Babel yok, Node.js yok. Delphi projenizi derler ve gönderirsiniz. Bu, Node.js araç zinciri kurulumunun BT onayı gerektirdiği düzenlenmiş ortamlarda ve şirket içi dağıtımlarda büyük önem taşımaktadır.

Doğrudan kod karşılaştırması: veri ızgarası

Farkı somutlaştırmak için, sgcHTML'de FireDAC sorgusundan aranabilir ve sayfalandırılmış bir veri ızgarasının nasıl işleneceği aşağıda gösterilmektedir:

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;

Sonuç; sıralama göstergeleri, arama kutusu ve dışa aktarma düğmesine sahip duyarlı, aranabilir ve sayfalandırılmış bir Bootstrap tablosudur. Tarayıcı, ilk sayfa için ek sunucu gidiş gelişi olmaksızın bunu işler. Filtreleme ve sayfalandırma, tüm sayfayı değil yalnızca tablo parçasını değiştirmek için htmx kullanır.

Alternatifleri ne zaman tercih etmeli

sgcHTML her zaman doğru seçim değildir. Yüzlerce form ve köklü bir tema sistemi içeren büyük bir IntraWeb veya UniGUI uygulamasına sahipseniz geçiş yapmak pek mantıklı olmaz. UniGUI, Excel'e eşdeğer veya üstün derin ızgara yeteneklerine (dondurulmuş sütunlar, hücre düzenleyiciler, satır gruplama, pivot) ihtiyaç duyduğunuzda ya da güç kullanıcılara yönelik bir arka ofis aracı için ExtJS'nin cilasını istediğinizde daha iyi bir seçimdir. TMS WEB Core, sunucu olmadan tamamen tarayıcıda çalışan bir uygulama ihtiyacınız olduğunda veya CDN üzerinden statik dosyalar olarak tek sayfalık bir uygulama dağıtmak istediğinizde doğru tercihtir.

sgcHTML şu durumlarda en güçlü seçimdir:

sgcHTML'yi deneme

60'tan fazla bileşenin tamamını kapsayan ve özellik kısıtlaması bulunmayan ücretsiz deneme sürümüne esegece.com/products/sgchtml/download adresinden ulaşabilirsiniz. İndirme paketi, bileşen paletini gerçekçi senaryolarda sergileyen dört çalışır demo uygulama (ERP, Yönetici Konsolu, Canlı İzleme ve Müşteri Portalı) içermektedir.

Sorularınız mı var ya da belirli bir mevcut proje ile karşılaştırmak mı istiyorsunuz? Bizimle iletişime geçin. Kodu yazan kişilerden yanıt alacaksınız.