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:
- Mevcut bir Delphi arka ucunun yanı sıra yeni bir web arayüzü oluşturuyor ve ayrı bir JavaScript projesi yönetmek istemiyorsunuz.
- Uygulamanın sunucudan canlı veri göndermesi gerekiyor (borsa ekranları, lojistik gösterge panelleri, izleme, sohbet).
- Ekibinizin tasarımcılarının standart Bootstrap araçlarıyla tema uygulayabileceği, duyarlı ve mobil uyumlu bir Bootstrap 5 arayüzüne ihtiyaç duyuyorsunuz.
- Dağıtımın hiçbir dış bağımlılığı olmayan tek bir çalıştırılabilir olması gerekiyor.
- Delphi ile birlikte .NET (C#) hedefleniyor ve her iki platformda aynı bileşen API'sini kullanmak istiyorsunuz.
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.
