sgcWebSockets 2026.6, kütüphanenin tarihindeki en büyük sürümlerden biridir. Üç yepyeni istemci (yerel bir gRPC istemcisi, bir Apache Kafka istemcisi ve bağımsız bir OpenAPI 3 sunucusu), mobil ve masaüstü uygulamalarınızın OpenSSL olmadan dağıtılmasını sağlayan iki yerel işletim sistemi TLS arka ucu, güvenlik duvarında yalnızca-sınıflandırma yapan bir bot tespit motoru, yapay zeka ajanları için bir MCP stdio aktarımı, bir dizi post-kuantum kripto ilkeli ve WebSocket ile HTTP sunucularında kapsamlı bir güvenlik sağlamlaştırma geçişi getirir.
Bu yazı, her biri için kısa bir Delphi kod parçası ve her özelliğin derinlemesine ele alındığı özel makaleye bir bağlantı içeren, öne çıkanların rehberli bir turudur.
HTTP/2 üzerinde gRPC istemcisi
Yeni TsgcGRPCClient, mevcut TsgcHTTP2Client üzerine inşa edilmiş, dağıtılacak harici bir gRPC çalışma zamanı olmayan yerel bir gRPC istemcisidir. Dört RPC desenini (tekli, sunucu akışı, istemci akışı ve çift yönlü akış), sıkıştırma ve içerik türü için kanal seçeneklerini, varsayılan ve çağrı başına meta verileri, son teslim tarihlerini, üstel geri çekilmeli otomatik yeniden denemeleri, istemci tarafı yük dengelemeyi (Pick First ve Round Robin), gRPC Health Checking, Server Reflection, durdurucuları (interceptor) ve OpenTelemetry metriklerini destekler.
uses
sgcHTTP2, sgcGRPC_Client, sgcGRPC_Classes, sgcGRPC_Types;
var
HTTP2: TsgcHTTP2Client;
GRPC: TsgcGRPCClient;
oResponse: TsgcGRPCResponse;
begin
HTTP2 := TsgcHTTP2Client.Create(nil);
HTTP2.Host := 'grpc.example.com';
HTTP2.Port := 443;
HTTP2.TLS := True;
GRPC := TsgcGRPCClient.Create(nil);
GRPC.Client := HTTP2;
// metadata is sent on every call (auth, tracing...)
GRPC.DefaultMetadata.Add('authorization', 'Bearer eyJ...');
// unary call: the request is your serialized protobuf message as TBytes
oResponse := GRPC.Call('helloworld.Greeter', 'SayHello', RequestBytes);
if oResponse.StatusCode = grpcOK then
Memo1.Text := oResponse.DataString
else
ShowMessage('gRPC error: ' + oResponse.StatusMessage);
end;
Genel istemcinin üzerine, 2026.6, her biri protobuf istek ve yanıt sınıflarına ve hizmet hesabı JWT kimlik doğrulamasına sahip sekiz Google Cloud hizmeti için tipli gRPC arayüzleri sunar: Pub/Sub, Speech-to-Text, Translation, Vision, Natural Language, Cloud Storage, BigQuery Storage ve Vertex AI. Tam anlatım: Delphi için gRPC İstemcisi.
Bağımsız OpenAPI 3 sunucusu
TsgcWSAPIServer_OpenAPI, bir OpenAPI 3 belirtimini çalışan bir REST sunucusuna dönüştürür. Bir belirtim yükleyin (veya RTTI öznitelikleri aracılığıyla bir Delphi sınıfından bir tane oluşturun), onu bir TsgcWebSocketHTTPServer öğesine ekleyin, böylece kutudan çıktığı gibi yönlendirme, istek doğrulama, Swagger UI ve CORS elde edersiniz. Doğrulama hataları otomatik olarak RFC 7807 problem+json döndürür.
uses
sgcWebSocket, sgcWebSocket_Classes,
sgcWebSocket_Server_API_OpenAPI,
sgcHTTP_OpenAPI_Server;
var
WSServer: TsgcWebSocketHTTPServer;
FOpenAPI: TsgcWSAPIServer_OpenAPI;
begin
WSServer := TsgcWebSocketHTTPServer.Create(nil);
WSServer.Port := 8080;
FOpenAPI := TsgcWSAPIServer_OpenAPI.Create(nil);
FOpenAPI.OnRequest := OnOpenAPIRequest;
FOpenAPI.OnValidationError := OnOpenAPIValidationError;
FOpenAPI.OpenAPIOptions.Endpoint.ServeSpec := True;
FOpenAPI.OpenAPIOptions.Endpoint.ServeSwaggerUI := True;
FOpenAPI.OpenAPIOptions.CORS.Enabled := True;
FOpenAPI.OpenAPIOptions.Validation.ValidateRequest := True;
FOpenAPI.LoadFromFile('petstore.json');
FOpenAPI.Server := WSServer;
WSServer.Active := True;
// Swagger UI: http://localhost:8080/docs
// Raw spec: http://localhost:8080/openapi.json
end;
Daha fazla bilgi: Delphi için OpenAPI Sunucusu.
Apache Kafka istemcisi
TsgcWSPClient_Kafka, ikili Kafka kablo protokolünü ham TCP üzerinden konuşan, Java veya librdkafka bağımlılığı olmayan yerel bir Apache Kafka istemcisidir. Mesaj üretip tüketin, abone olun ve yoklayın, tüketici gruplarını, konuları (topic) ve ofsetleri yönetin.
uses
sgcWebSocket, sgcWebSocket_Protocols, sgcKafka_Classes;
var
oClient: TsgcWebSocketClient;
oKafka: TsgcWSPClient_Kafka;
begin
oClient := TsgcWebSocketClient.Create(nil);
oClient.Specifications.RFC6455 := False; // raw TCP, native Kafka protocol
oClient.Host := '127.0.0.1';
oClient.Port := 9092;
oKafka := TsgcWSPClient_Kafka.Create(nil);
oKafka.Client := oClient;
oKafka.KafkaOptions.ClientId := 'my-delphi-app';
oKafka.OnKafkaConnect := OnKafkaConnect;
oKafka.OnKafkaMessage := OnKafkaMessage;
oKafka.OnKafkaProduce := OnKafkaProduce;
oClient.Active := True; // connect to the broker
end;
Daha fazla bilgi: Delphi için Apache Kafka İstemcisi.
Android ve Apple üzerinde yerel TLS, dağıtılacak OpenSSL yok
İki yeni TLS arka ucu, el sıkışmayı OpenSSL yerine işletim sistemi üzerinden çalıştırır, böylece uygulamanız Android'de hiçbir libssl.so / libcrypto.so ve iOS ile macOS'ta hiçbir .dylib dağıtmaz. Her ikisi de platform başına TLSOptions.IOHandler aracılığıyla seçilir ve halihazırda kullandığınız aynı TLSOptions API'sini (özel CA, istemci sertifikası, ALPN) yeniden kullanır.
Android (iohAndroidTLS), TLS'yi JNI aracılığıyla platform javax.net.ssl.SSLEngine üzerinden çalıştırır, ana bilgisayar adı doğrulamasıyla Android sistem güven deposuna karşı doğrular, TLS 1.3 ile anlaşır ve Android 10 ve üzerinde ALPN'yi destekler. RAD Studio XE8+ gerektirir.
uses
sgcWebSocket, sgcWebSocket_Types;
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohAndroidTLS;
WSClient.URL := 'wss://www.esegece.com:2053';
WSClient.Active := True;
Apple (iohAppleTLS), macOS 10.14+ ve iOS 12+ üzerinde TLS 1.3 için otomatik olarak Network.framework'ü seçer ve daha eski sistemlerde Secure Transport (TLS 1.2) öğesine geri döner. SNI ve ana bilgisayar adı doğrulamasıyla sistem güven deposunu kullanır ve özel doğrulama için OnAppleTLSVerifyPeer olayını açığa çıkarır. RAD Studio XE6+ gerektirir.
uses
sgcWebSocket, sgcWebSocket_Types;
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohAppleTLS;
WSClient.URL := 'wss://www.esegece.com:2053';
WSClient.Active := True;
Daha fazla bilgi: Yerel Android TLS ve Yerel Apple TLS.
Güvenlik duvarı bot tespiti
TsgcWebSocketFirewall, bilinen-bot CIDR listelerini, veri merkezi ASN aralıklarını, ileri-onaylı ters DNS (FCrDNS) ve DNSBL aramalarını kullanarak bir istemciyi doğrulanmış bir arama motoru tarayıcısı, bir veri merkezi aralığı veya bir engelleme listesindeki adres olarak sınıflandıran IP tabanlı bir bot tespit modülü kazanır. Yalnızca-sınıflandırma yapar: sonuç, yeni OnBotDetected olayı ve GetBotClassification yöntemi aracılığıyla açığa çıkarılır, böylece güvenlik duvarının sizin yerinize bağlantıları engellemesi yerine onunla ne yapacağınıza siz karar verirsiniz.
TsgcBotClassification = (bcUnknown, bcVerifiedCrawler, bcDatacenter,
bcSuspectedBot, bcBlocklisted, bcHuman);
Bu sürüm ayrıca güvenlik duvarına tam IPv6 getirir: /128'e kadar kara liste ve beyaz liste CIDR eşleştirmesi, GeoLite2 IPv6 ülke blokları, IPv6 bot aralıkları ve ip6.arpa ters DNS / DNSBL. Bir IPv6 CIDR'ın 32 bit matematikle değerlendirildiği (ve bu nedenle her IPv6 istemcisiyle eşleştiği) uzun süredir devam eden bir hata düzeltildi. Daha fazla bilgi: Güvenlik Duvarında Bot Tespiti.
MCP stdio aktarımı
Model Context Protocol sunucusu ve istemcisi artık yeni TsgcAI_MCP_Server_Stdio ana bilgisayarı aracılığıyla standart girdi/çıktı üzerinden çalışabilir, böylece Delphi MCP sunucunuz Claude Code gibi yapay zeka ajanları tarafından yerel bir alt süreç olarak başlatılabilir. Araçlar, tam olarak HTTP sunucusunda olduğu gibi kaydedilir.
uses
SysUtils, sgcAI_MCP_Server, sgcAI_MCP_Classes, sgcAI_MCP_Types;
var
oServer: TsgcAI_MCP_Server_Stdio;
oTool: TsgcAI_MCP_Tool;
begin
oServer := TsgcAI_MCP_Server_Stdio.Create(nil);
try
oServer.ServerInfo.Name := 'MyDelphiServer';
oServer.ServerInfo.Version := '1.0';
oTool := oServer.MCPServer.Tools.AddTool('add', 'Adds two numbers');
oTool.InputSchema.Properties.AddProperty('a', True, aimcpjtNumber);
oTool.InputSchema.Properties.AddProperty('b', True, aimcpjtNumber);
oServer.MCPServer.OnMCPRequestTool := OnRequestTool;
// read JSON-RPC from stdin, write responses to stdout, blocks until EOF
oServer.Run;
finally
oServer.Free;
end;
end.
Daha fazla bilgi: Sunucu ve İstemci için MCP stdio Aktarımı.
Varsayılan olarak sağlamlaştırılmış
2026.6, sunuculardaki bir dizi hizmet reddi (denial-of-service) ve protokol uyumluluğu sorununu kapatır ve yeni sınırları güvenli varsayılanlara sahip özellikler olarak açığa çıkarır.
WebSocket sunucuları artık MaxMessageSize ile mesaj belleğini sınırlar (varsayılan 64 MB, 0 = sınırsız), aşırı büyük mesajları, sonsuz parçalanmayı ve permessage-deflate "zip bombalarını" close 1009 ile reddeder. Yeni SecurityOptions.EnforceWebSocketVersion ve SecurityOptions.ValidateWebSocketKey, RFC 6455 el sıkışmasını doğrular ve her ikisi de varsayılan olarak etkindir.
oServer := TsgcWebSocketServer.Create(nil);
oServer.Port := 80;
// accept messages up to 16 MB, reject anything larger with close 1009
oServer.MaxMessageSize := 16 * 1024 * 1024;
oServer.Active := True;
HTTP sunucusu, MaxRequestBodySize (varsayılan 64 MB) ve StrictRequestParsing (varsayılan True, hem Content-Length hem de Transfer-Encoding taşıyan bir isteği reddeder) ekler. Statik dosya sunumundaki yol geçişi (path traversal) düzeltildi, HTTP/2 Rapid Reset (CVE-2023-44487) bağlantı başına RST_STREAM ve kontrol-çerçevesi sınırlarıyla hafifletildi ve DocumentRoot dosyaları artık tamamen belleğe yüklenmek yerine paylaşılan bir TFileStream ile diskten akıtılır, böylece dosya boyutu veya bağlantı sayısından bağımsız olarak sunucu RAM'i sabit kalır.
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.Port := 80;
oServer.MaxRequestBodySize := 16 * 1024 * 1024; // 16 MB, reject larger with 413
oServer.Active := True;
Daha fazla bilgi: WebSocket Sunucusunu Sağlamlaştırma ve HTTP Sunucusunu Sağlamlaştırma.
Post-kuantum ve AEAD kriptografisi
Hibrit post-kuantum el sıkışmaları oluşturan uygulamalar için, 2026.6, klasik bir P-256 üzerinde KEM olarak ECDH (sgcKEM_ECDH_P256_Encapsulate / Decapsulate) ile birlikte ML-KEM-768 kapsülleme ve kapsül açma (sgcKEM_MLKEM768_Encapsulate / Decapsulate, OpenSSL 3.5+) ekler; bunlar aynı TBytes API biçimini paylaşır, böylece kodunuzu değiştirmeden klasik ve post-kuantum KEM'ler arasında geçiş yapabilirsiniz.
Yeni bir sgcSSL_AEAD birimi, AES-128-GCM, AES-256-GCM ve ChaCha20-Poly1305 için, çağıran tarafından sağlanan 12 baytlık bir nonce ve keyfi AAD ile genel AEAD ilkellerini (sgcAEAD_Encrypt / sgcAEAD_Decrypt) sağlar. sgcAEAD_EncryptPrefixed / sgcAEAD_DecryptPrefixed sarmalayıcıları, Bouncy Castle GCM, JOSE A256GCM, libsodium ve çoğu HPKE tarzı protokol tarafından kullanılan kendi kendine yeten "nonce(12) || ciphertext || tag(16)" blobunu üretir ve tüketir.
uses
sgcSSL_AEAD;
var
vKey, vPlain, vBlob, vOut: TBytes;
begin
// vKey: 32 bytes from KEM Decapsulate + HKDF
vBlob := sgcAEAD_EncryptPrefixed(aeadAES256GCM, vKey, vPlain, nil);
vOut := sgcAEAD_DecryptPrefixed(aeadAES256GCM, vKey, vBlob, nil);
end;
Hesap indirme API'si
eSeGeCe hesabınızdaki yeni bir REST API, doğrudan komut dosyalarından veya CI'den oturum açmanıza, aboneliğinizin size yetki verdiği dosyaları listelemenize ve indirmenize olanak tanır. OpenAPI 3.0 ile tanımlanmıştır ve sgcOpenAPI üzerine inşa edilmiş kullanıma hazır bir Delphi istemcisiyle birlikte gelir.
curl -X POST https://www.esegece.com/api/v1/login \
-H "Content-Type: application/json" \
-d '{"username":"YOUR_USERNAME","password":"YOUR_PASSWORD"}'
Daha fazla bilgi: Hesap API'si ile İndirmelerinizi Otomatikleştirin.
Bu sürümde ayrıca
- Kurulum bir Kaynakları Dahil Et seçeneği kazanır: derlemeden önce
SGC_RESOURCEStanımını kaldırmak ve gömülü JS kaynağını çıkarmak için işaretini kaldırın, böylece uygulama boyutunu azaltırsınız. - MQTT 5.0: katı 5.0 eşlerinin reddedebileceği Subscription Identifier ve Server Reference özellik tanımlayıcıları düzeltildi.
- AMQP 1.0: büyük mesajlar, anlaşılan max-frame-size değerini aştıklarında artık birden fazla çerçeveye bölünür.
- STOMP: varsayılan ayarların giden aralığı 0'da bıraktığı bir kalp atışı (heart-beat) taşkını düzeltildi.
- Server-Sent Events: yedek yeniden deneme değeri artık 1000 ile çarpılmak yerine milisaniye cinsinden gönderilir.
- STUN / TURN: tam 96 bitlik kriptografik olarak rastgele işlem kimliği ve ChannelData uzunluğu artık RFC 5766'ya göre dolguyu (padding) hariç tutar.
- Borsa API'leri: Bybit, Kraken ve MEXC akış abonelikleri için düzeltmeler. Emekliye ayrılan FXCM istemcisi kaldırıldı.
Options.WriteTimeOutartık Linux ve diğer POSIX platformlarında çalışır (SO_SNDTIMEO bir timeval olarak geçirilir), böylece yavaş okuyan bir istemci artık bir sunucu iş parçacığını süresiz olarak engellemez.
Yükseltme
2026.6, mevcut 2026.x projeleri için doğrudan yerine geçen bir yükseltmedir. Sunucu sağlamlaştırması güvenli varsayılanlarla gelir, bu nedenle dikkat edilmesi gereken tek şey 64 MB varsayılan MaxMessageSize / MaxRequestBodySize değeridir: uygulamanız meşru olarak daha büyük yükler değiş tokuş ediyorsa, önceki davranışınıza uymak için sınırı yükseltin (veya sınırsız için 0 olarak ayarlayın).
Aktif aboneliği olan müşteriler, yeni derlemeyi müşteri alanından veya esegece.com/products/websockets/download adresinden indirebilir.
Sorularınız, geri bildirimleriniz veya geçiş yardımı mı gerekiyor? İletişime geçin. Kodu yazan kişilerden bir yanıt alacaksınız.
