sgcWebSockets vs Indy — 2026'da Hangisi Seçilmeli

· İncelemeler

İki kütüphane, iki farklı iş

Hemen hemen her Delphi geliştiricisi bir noktada Indy kullanmıştır. IDE ile kutudan çıkar, 1990'ların sonundan beri vardır ve bir kuşak Delphi ağ kodu TIdHTTP, TIdTCPClient, TIdSMTP ve benzerleri üzerine kuruludur. sgcWebSockets, Indy ilk tasarlandığından bu yana ortaya çıkan protokollere (WebSocket, HTTP/2, HTTP/3 / QUIC, MQTT 5, AMQP 1.0, SSE, WAMP, WebRTC, MCP) ve geniş bir REST API entegrasyon kataloğuna odaklanan çok daha yeni ticari bir kütüphanedir.

Embarcadero forumlarındaki ve Stack Overflow'daki en yaygın soru, “Indy ücretsizken neden sgcWebSockets için ödeme yapayım?” sorusunun bir varyasyonudur. Kısa yanıt, farklı sorunları çözdükleri ve birçok gerçek projede sonunda ikisini de kullanacağınızdır. Bu makale, uygulamanıza hangisinin (veya hangi kombinasyonun) uyduğuna karar verebilmeniz için 2026'daki pratik farkları anlatır.

Her kütüphane gerçekte ne yapar

Indy, uzun bir klasik İnternet protokolleri listesine sahip genel amaçlı bir TCP/UDP araç setidir: HTTP/1.1, FTP, SMTP, POP3, IMAP, NNTP, DNS, IRC, Telnet, Whois ve ayrıca bir TCP sunucu çerçevesi. Tasarımı bağlantı başına iş parçacığı ve bloke eden G/Ç'dir. Standart Indy'de yerel bir WebSocket istemcisi veya sunucusu yoktur — birini eklemeniz gerekir ve birkaç topluluk projesi tam olarak bunu karışık sonuçlarla yapar.

sgcWebSockets, modern istemci/sunucu senaryolarına yönelik, odaklanmış, protokol açısından zengin bir kütüphanedir. HTTP/2, QUIC üzerinden HTTP/3, MQTT, AMQP, STOMP, SSE, WAMP, P2P/WebRTC, IoT (CoAP, AWS IoT, Azure IoT), uçtan uca şifreleme ve 30+ API sarmalayıcısı (OpenAI, Anthropic, Google, AWS, Azure, Binance, Coinbase, Kraken, Telegram, WhatsApp vb.) için isteğe bağlı eklentilerle bir çekirdek TsgcWebSocketClient / TsgcWebSocketHTTPServer çifti etrafında düzenlenmiştir.

Önemli ve sıklıkla gözden kaçan bir ayrıntı: sgcWebSockets, taşıma arka uçlarından biri olarak dahili olarak Indy kullanır. Birkaç bileşenin TCP/TLS altyapısı, altta bir Indy TIdTCPClient / TIdHTTPServer'dır, dolayısıyla sgcWebSockets'i kurmak Indy'nin yerini almaz — onun üzerine inşa eder. Kütüphane ayrıca Indy'nin en uygun olmadığı senaryolar için alternatif taşımalar (Synapse tarzı, ICS, SChannel) sunar.

Özellik bazında karşılaştırma

ÖzellikIndy (standart)sgcWebSockets
HTTP/1.1 istemcisiEvet (TIdHTTP)Evet (TsgcHTTPComponentClient, Indy veya ICS arka ucunu kullanabilir)
HTTP/1.1 sunucusuEvet (TIdHTTPServer)Evet (TsgcWebSocketHTTPServer, HTTP + WS'yi aynı bağlantı noktasında ele alır)
WebSocket istemci/sunucuYerel destek yokTam RFC 6455, permessage-deflate, alt protokoller, autobahn-test edilmiş
HTTP/2 (h2 + h2c)HayırEvet, özel HPACK + çerçeve katmanı
HTTP/3 / QUICHayırEvet (msquic tabanlı)
MQTT 3.1.1 ve 5.0HayırEvet, istemci ve aracı
AMQP 1.0 / 0.9.1HayırEvet
STOMP, SSE, WAMPHayırEvet
WebRTC / P2P / STUN / TURNHayırEvet
CoAP ve IoT bulutu (AWS, Azure)HayırEvet
OpenAI, Anthropic, Gemini, MCPHayırEvet, özel bileşenler
FTP / SMTP / POP3 / IMAPEvetHayır (bunlar için Indy kullanın)
Ücretsiz / ticariÜcretsiz, MIT tarzıTicari, Free dahil çeşitli sürümler
Delphi sürümleriD7 ve üzeri (fork'a göre değişir)D7'den D13'e kadar
Aktif bakımTopluluk (GitHub'da IndyProject)Satıcı, aylık sürümler

Indy'nin hâlâ kazandığı yer

Projeniz klasik bir İnternet istemcisiyse (HTTP üzerinden bir dosya indirmek, bir form göndermek, bir SMTP e-postası göndermek, IMAP üzerinden posta almak, eski bir FTP sunucusuyla iletişim kurmak) standart Indy doğru yanıttır. Ücretsizdir, IDE ile birlikte gelir, API tanıdıktır ve başka bir şeye ihtiyacınız yoktur. Aynı şey hobi TCP sunucuları ve Indy'nin yerel olarak sunduğu protokoller (NNTP, IRC, Telnet, Whois) için de geçerlidir. Bu kullanım durumları için ücretli bir kütüphane eklemek aşırıya kaçmaktır.

Indy ayrıca, zaten Indy türlerini kullanan kodla birlikte çalışmanız gerektiğinde de açık seçimdir — örneğin, bir TIdSSLIOHandlerSocketOpenSSL veya bir TIdHTTPServerCommandHandler bekleyen bileşenler.

sgcWebSockets'in doğru araç olduğu yer

Modern web yığınını içeren her şey sgcWebSockets ile önemli ölçüde daha kolaydır. Somut olarak:

Performans ve ölçeklendirme

Indy'nin bağlantı başına iş parçacığı modeli basit ve doğrudur, ancak bağlam değiştirme darboğaz haline gelmeden önce tipik bir Windows sunucusunda pratik verimi birkaç bin eşzamanlı bağlantı civarında sınırlar. sgcWebSockets, uyumluluk için aynı Indy arka ucunu ve ayrıca Windows'ta süreç başına on binlerce eşzamanlı WebSocket bağlantısında kıyaslanmış IOCP tabanlı bir sunucu taşıması sunar. Saf HTTP verimi için fark daha küçüktür, ancak uzun ömürlü bağlantılar (WebSocket, MQTT, SSE) için mimari fark önemlidir.

Boştaki bağlantı başına bellek ayak izi de IOCP taşımasıyla daha düşüktür çünkü soket başına özel bir işletim sistemi iş parçacığı yoktur. Linux'ta tablo, sgcWebSockets'in gönderdiği Indy fork'u aracılığıyla epoll tabanlı sunucularla benzerdir.

Bakım ve sürüm temposu

Indy, IndyProject GitHub deposunda küçük bir gönüllü grubu tarafından sürdürülür. Sürümler yavaştır ancak kod tabanı kararlıdır. Kritik düzeltmeler (TLS uyumluluğu, modern OpenSSL bağlamaları) gelir ancak her zaman hızlı değil.

sgcWebSockets, eSeGeCe'den aylık sürümleri, herkese açık bir geçmiş dosyası ve doğrudan satıcı desteği olan ticari bir üründür. Yeni Delphi sürümleri genellikle ilk gün desteklenir — Delphi 13 ilk betadan itibaren desteklenmiştir — ve yeni protokol revizyonları (MQTT 5.0.1, HTTP/3 final, MCP spesifikasyon güncellemeleri) yıllar yerine günler içinde gelir.

Lisans ve fiyatlandırma

Indy ücretsizdir ve Delphi ile gelir. sgcWebSockets ticaridir ancak ticari olmayan kullanım için bir Free Edition'a ve ayrıca giderek daha geniş protokol kapsamına sahip ücretli sürümlere (Standard, Professional, Enterprise, All-Access) sahiptir. Çoğu ticari proje, tek bir dağıtılmış müşteriyle tek geliştiricilik bir Professional lisansını haklı çıkarabilir.

Basit bir karar kuralı

Pragmatik bir 2026 genel kuralı:

Kapanış düşünceleri

Indy hiçbir yere gitmiyor — her Delphi araç kutusundaki güvenilir çekiçtir. Ancak 2026 internetini tanımlayan protokoller (WebSocket, HTTP/2/3, MQTT, WebRTC, AI API'leri) Indy tasarlandığında basitçe yoktu. sgcWebSockets bu boşluğu, yararlı olduğunda Indy üzerine inşa eden ve gerektiğinde onun yerini alan odaklanmış, aktif olarak sürdürülen, ticari olarak desteklenen bir kütüphaneyle doldurur. Modern arka uçları hedefleyen yeni projeler için soru artık Indy mi yoksa sgcWebSockets mı? değil — onları nasıl birleştiririm?