sgcWebSockets 2026.10 yayınlandı. Bu sürümde üç ana hat var: sgcHTML, bir iş web uygulamasının ihtiyaç duyduğu ve artık elle yazmanıza gerek kalmayan parçaları kazandı; kriptografi tek bir harici kütüphane bile eklemeden kuantum sonrasına geçti; yeni Enterprise kimlik doğrulama bileşenleri de oturum açma ekranını devraldı.
Web Uygulamaları: Sıkıcı Kısımlar, Halloldu
Oturumlar, giriş ve CSRF. Yeni TsgcHTMLAuth bileşeni ve oturum depoları çerezi korur, giriş ve çıkış isteklerine yanıt verir, boşta kalan oturumları kapatır ve başarısız girişleri sınırlar. CSRF token'ı bir meta etiketinde taşınır, htmx bunu her isteğe kendiliğinden ekler, ve sunucu bunu taşımayan bir post'u reddeder.
FAuth := TsgcHTMLAuth.Create(Self);
FAuth.SessionStore := TsgcHTMLSessionStore_Memory.Create(Self);
FAuth.CookieName := 'app_session';
FEngine.Auth := FAuth;
Rota gibi okunan rotalar. Yol parametreleri, bir metot filtresi ve başlıklara, çerezlere ve gövdeye erişim:
with FRouter.Routes.Add do
begin
Path := '/customers/{id}/edit';
Methods := [hrmGet, hrmPost];
RequireLogin := True;
RequireRoles := 'admin,sales';
end;
Test edebileceğiniz sayfalar. DispatchDirect, arkasında hiçbir soket olmadan bir isteği yanıtlar ve yeni bir unit, üretilen HTML'i okuyup id, sınıf, etiket veya niteliğe göre öğeleri bulur ve bir sayfayı kaydedilmiş bir kopyayla karşılaştırır; böylece işaretlemedeki istenmeyen bir değişiklik bir müşteri yerine bir test tarafından fark edilir.
Bir uygulama gibi hissettiren navigasyon. Sayfalar tam bir yeniden yükleme olmadan değişir ve kaydırma konumunu ve kullanıcının o an yazmakta olduğunu korur; bir yükleme çubuğu, bağlantı koptuğunda bir iletişim kutusu ve bir istek başarısız olduğunda bir mesaj vardır. Tüm bunlar varsayılan olarak kapalıdır.
Dört Öne Çıkan Özellik
Bunların her birinin sonda bağlantısı verilen kendi yazısı var, o yüzden burada sadece ne olduğunu bulacaksınız:
- MCP Apps. Bir paragraf yerine bir sayfayla yanıt veren, ChatGPT, Claude veya VS Code içinde render edilen ve diğer her sgcHTML sayfasıyla aynı bileşenlerden inşa edilen bir MCP aracı.
- AI sayfa üretici. Bir sayfayı tarif edin ya da tasarımcıya bir ekran görüntüsü verin; o da kayıtlı bileşenlerinizden, kabul edebileceğiniz ya da reddedebileceğiniz bir aday olarak sayfayı inşa etsin.
- CRUD bileşeni. Bir TDataSet üzerinde ya da kendi SQL'iniz üzerinde, bir IDE sihirbazı ve bir komut satırı üreticisiyle birlikte, liste, arama, sayfalama, form, silme ve tek bir veri kümesinin yazma yolu.
- AI Data Pack. Bir grid'e, bir veri tablosuna veya bir pivota sade bir dille soru sorun; hiç API anahtarı olmadığında bile yanıt veren kural tabanlı bir ayrıştırıcıyla.
İki Yoldan Push
Server sent events artık bir WebSocket yerine güncellemeleri taşıyabiliyor, bağlantı kesikken kaçırılanları yeniden oynatabiliyor ve sıradan HTTP sunucusuyla da çalışıyor. Web Push, kapalı olan bir tarayıcıya bile ulaşıyor. Bunlarla birlikte bir bildirim gelen kutusu ve bir tercihler tablosu geliyor, ve bildirim bileşeni belirli bir kullanıcının hangi kanalı alacağına karar veriyor.
Delphi İçin Bir EventSource İstemcisi
Yeni TsgcSSEClient, herhangi bir Server-Sent Events akışını tüketir ve her sürümde bulunur. Kendi kendine yeniden bağlanır ve Last-Event-ID gönderir, böylece sunucu akışın kaldığı yerden devam eder. Sunucu tarafından gönderilen retry: alanına uyulur, OnEvent size olay türünü, verileri ve kimliği verir, ReconnectOptions ise geri çekilme (backoff) ve jitter ekler. TLS, proxy ve kimlik doğrulama, bileşenin kullandığı HTTP istemcisini size veren OnBeforeConnect içinde ayarlanır.
FSSE := TsgcSSEClient.Create(Self);
FSSE.URL := 'https://example.com/events';
FSSE.ReconnectOptions.Backoff := True;
FSSE.ReconnectOptions.MaxInterval := 30000;
FSSE.ReconnectOptions.Jitter := 0.2;
FSSE.OnEvent := DoSSEEvent;
FSSE.Open;
procedure TForm1.DoSSEEvent(Sender: TObject; const aEvent: TsgcSSEEvent);
begin
Memo1.Lines.Add(aEvent.EventType + ': ' + aEvent.Data);
end;
Arkasındaki ayrıştırıcı, TsgcSSEParser, herkese açıktır. Herhangi bir text/event-stream'in baytlarını istediğiniz boyutta parçalar halinde ona besleyin; bu tam olarak bir LLM akış yanıtının veya bir MCP Streamable HTTP yanıtının ne olduğudur.
FParser := TsgcSSEParser.Create;
FParser.OnEvent := DoSSEEvent;
FParser.Feed('event: delta' + #10 + 'data: {"text":"Hel"}' + #10#10);
Yeni bir demo, Demos\20.HTTP_Protocol\17.SSE_Client_Component, bunu uçtan uca gösterir.
AI: Üzerine Hareket Edebileceğiniz Yanıtlar
TsgcAIChat, yeni ChatJSON metodu aracılığıyla OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok ve Mistral üzerinde sizin sağladığınız bir şemayı izleyen JSON isteyebiliyor; bu metot yanıtı ayrıştırıyor ve okunamadığında ayrıştırma hatasını ekleyerek bir kez daha soruyor. Sohbet bileşeni artık görüntü de gönderip alıyor, ve BaseUrl artık yalnızca Ollama tarafından değil her sağlayıcı tarafından dikkate alınıyor, böylece bunlardan herhangi biri bir proxy'ye veya yerel bir ağ geçidine yönlendirilebiliyor.
Belge Çıkarımı: PDF'den Doğrulanmış JSON'a
Yeni TsgcAIDocumentExtractor, bir PDF veya görüntü ile bir JSON şeması alıyor ve o şemaya göre denetlenmiş JSON'u geri veriyor. OpenAI, Anthropic ve Gemini PDF'yi doğrudan okuyor, diğer görme modelleri ise görüntüleri okuyor. Yerleşik ön ayarlar faturaları, makbuzları ve kimlik belgelerini kapsıyor (dpInvoice, dpReceipt, dpIDCard), ve her alan bir güven puanıyla geliyor, böylece OnLowConfidence size MinConfidence'ın altındaki hangi değerlerin bir kez daha gözden geçirilmeyi hak ettiğini bildiriyor. Yanıt doğrulanmadığında, bileşen hataları ekleyerek bir kez daha soruyor (ValidationRetries).
FExtractor := TsgcAIDocumentExtractor.Create(Self);
FExtractor.AIChat := AIChat1;
FExtractor.Preset := dpInvoice;
FExtractor.MinConfidence := 0.8;
FExtractor.OnLowConfidence := DoLowConfidence;
Memo1.Lines.Text := FExtractor.ExtractFile('invoice.pdf');
if FExtractor.LastResult.FieldConfidence('total') < 0.8 then
ShowMessage('Check the total by hand');
Bir TsgcAIOCRTesseract veya kurulacak hiçbir şey olmadan Windows 10 ve sonrasına yerleşik OCR'ı kullanan bir TsgcAIOCRWindows bağlayın ve OCRMode'u domFallback veya domAlways olarak ayarlayın; metin önce yerel olarak tanınır, böylece Ollama üzerinde çalışan yalnızca metin tabanlı bir model bile çıkarımı yapabilir. Kendi istemleriniz için, TsgcAIChat artık ChatWithDocument, ChatWithDocumentBase64, ChatWithAttachments ve ChatJSONWithAttachments'a sahip; bunlar TsgcAIChatAttachments listesinde tutulan bir veya birden fazla dosyayı mesajla birlikte gönderir.
Dinleyen, Karşılık Veren ve Araçları Çağıran Bir Sesli Ajan
Yeni TsgcAIVoiceAgent, dinleyen, kullanıcının sırasını bitirdiğini algılayan, kendi sesiyle yanıt veren ve araçlarınızı çağıran tek bir bileşendir; bunu OpenAI Realtime veya Gemini Live üzerinden yapar. WebSocket konuşur, veya OpenAI ile WebRTC, ve Windows, Android ve iOS üzerinde çalışır. Sıralar sunucu VAD'ı, semantik VAD, istemci tarafı bir VAD veya elle algılanır (vtdServerVAD, vtdSemanticVAD, vtdClientVAD, vtdManual). BargeIn ile kullanıcı araya girebilir, ve ajan konuşmayı durdurup yanıtını kesildiği noktada budar. OnTranscript, hem kullanıcının hem de ajanın canlı transkriptlerini sağlar.
FAgent := TsgcAIVoiceAgent.Create(Self);
FAgent.Provider := vapOpenAI;
FAgent.OpenAIOptions.ApiKey := 'sk-...';
FAgent.Instructions := 'You are the shop assistant. Keep answers short.';
FAgent.TurnDetection.Mode := vtdSemanticVAD;
FAgent.BargeIn := True;
oTool := FAgent.Tools.Add;
oTool.Name := 'find_product';
oTool.Description := 'Looks up a product by name';
oTool.Parameters :=
'{"type":"object","properties":{"name":{"type":"string"}}}';
FAgent.OnTranscript := DoTranscript;
FAgent.OnToolCall := DoToolCall;
FAgent.Start;
procedure TForm1.DoToolCall(Sender: TObject; const aCallId, aName,
aArguments: string; var aResult: string; var aHandled: Boolean);
begin
if aName = 'find_product' then
begin
aResult := FindProduct(aArguments);
aHandled := True;
end;
end;
Araçlar OnToolCall'dan gelir, ve bir TsgcWSAPI_Client_MCP, MCPClient'a atandığında o MCP sunucusunun araçları modele otomatik olarak sunulur. Telefoni için Audio.Format, 8 kHz'de G.711 mu-law veya A-law'a geçer (vafG711ULaw, vafG711ALaw). Sesli ajan, Delphi 7'den Delphi 13'e kadar ve .NET için kullanılabilir, ve yeni bir demo onu bir TDataSet üzerinden çalışan sesli bir mağaza asistanına dönüştürür.
Kriptografi: Object Pascal ile Kuantum Sonrası
ML-KEM (FIPS 203), ML-DSA (FIPS 204) ve SLH-DSA (FIPS 205), X-Wing hibrit anahtar kapsülleme, kuantum sonrası X.509 sertifikaları ve sertifika otoriteleri, ve ML-DSA ile imzalanan JWT'ler. Tüm bunlar sgcCrypto paketinde Object Pascal ile, hiçbir harici kütüphane olmadan yazıldı ve NIST'in bilinen yanıt vektörlerine karşı doğrulandı.
Bunun üzerinde, yine saf Pascal ile yazılmış bir yerel TLS 1.3 ve TLS 1.2 motoru bulunuyor: bir istemci ya da sunucu, OpenSSL veya SChannel olmadan TLS konuşuyor, RFC 10024'ün hibrit kuantum sonrası gruplarını müzakere ediyor, ve ALPN, S N I, istemci sertifikaları ve işletim sisteminin güven deposunun isteğe bağlı kullanımını destekliyor. TLS 1.2, henüz TLS 1.3 yapamayan eşler için oradadır; varsayılan olarak ileri gizlilikli AES-GCM ve ChaCha20-Poly1305 paketleriyle, genişletilmiş ana sır ve düşürme korumasıyla gelir, ve TLSOptions.Version izin verilen en düşük sürümü belirler. Hibrit gruplar yalnızca TLS 1.3'te kalır.
Klasik taraf da aynı geçişte güçlendirildi: kör edilmiş sabit zamanlı RSA, sabit zamanlı eliptik eğri skaler çarpımı ve Ed25519, tablo kullanmayan AES ve GHASH, içe aktarılan özel anahtarların kendi ortak yarılarına karşı doğrulanması, ve minimal olmayan DER imzalarının reddedilmesi.
Kimlik Doğrulama: Herkesin Sorduğu Oturum Açma
Yeni bir kimlik doğrulama bileşenleri grubu, oturum açma ekranı hakkında her müşterinin sorduğu soruları yanıtlıyor. Enterprise ve All-Access sürümlerinde ve sgcAuth paketinde yer alıyor, aynı bileşenler sgcWebSockets .NET içinde de var.
- Passkeys. WebAuthn sunucusu kullanıcıyı hiçbir kullanıcı adı yazılmadan oturuma alır, passkey'leri tarayıcının kendi otomatik doldurma listesinde sunar, kullanıcı başına birden fazla passkey tutar, eşitlenen bir passkey ile tek cihaza bağlı olanı ayırt eder ve kimlik bilgilerinin kendi veritabanınızda durması için bir olay tetikler.
- SAML tekli oturum açma.
TsgcSAMLServiceProvider, uygulamanızı Entra ID, Okta, AD FS, Google Workspace, Keycloak veya başka herhangi bir kimlik sağlayıcı için SAML 2.0 servis sağlayıcısına dönüştürür. - Active Directory ve LDAP.
TsgcLDAPClient, kullanıcıları dizin parolalarıyla LDAPS veya StartTLS üzerinden doğrular ve iç içe gruplar dahil grup üyeliklerini okur. - Kimlik doğrulayıcı uygulama kodları.
TsgcTOTPAuthenticator, Google Authenticator, Microsoft Authenticator ve benzerlerinin kodlarını üretir ve doğrular; QR kodu için kayıt bağlantısı, tekrar kullanıma karşı koruma ve kurtarma kodları ile birlikte gelir. - OpenID Connect.
TsgcHTTP_OIDC_Client, keşif belgesi üzerinden herhangi bir OpenID sağlayıcıyla oturum açtırır ve kendi API'nize ulaşan ID token'ları ile bearer token'ları doğrular. - Parola saklamadan e-posta.
TsgcMailOAuth2, SMTP, IMAP ve POP3'ün artık beklediği Microsoft 365 ve Gmail OAuth2 token'larını alır ve yeniler.
Belirtilmeye Değer Düzeltmeler
- RSA ve ECDSA anahtarlarıyla JWT imzalama ve doğrulama, ve OpenSSL statik olarak bağlandığında 32 bit uygulamalarda oluşan bellek bozulması.
- Bir PFX dosyası kullanan her bağlantıda özel anahtarın bir kopyasını Windows anahtar deposunda bırakan ve güncel Windows sürümlerinde istemci sertifikasını göndermeyen SChannel işleyicisi.
- Windows deposundan bir sertifika kullanan eşzamanlı SChannel bağlantılarının el sıkışmayı başaramaması.
- OAuth2 sunucusunun RSA anahtarlarıyla imzalanmış DPoP kanıtlarını reddetmesi.
- İmzası URL güvenli şekilde kodlanmamış CloudFront imzalı URL'leri.
.NET
.NET kütüphanesi de aynı hızda ilerliyor: ASP.NET Core için bir ClaimsPrincipal köprüsüyle kimlik doğrulama ve oturumlar, yönlendirici, test yardımcıları, SPA navigasyonu, yerel bir uç noktaya sahip SSE taşıması, yapılandırılmış çıktı, her iki OCR motoruna sahip belge çıkarımı, gerçek zamanlı sesli ajan, AI Data Pack, Web Push, MCP Apps, adaptörleriyle CRUD bileşeni ve yeni TsgcSSEClient; hepsi Delphi ile aynı API adlarıyla.
ASP.NET Core için Razor Tag Helper'lar. sgcHTML artık bir MVC veya Razor Pages uygulamasına Telerik UI ve DevExpress'in yaptığı gibi uyuyor. <sgc-grid>, <sgc-form>, <sgc-autocomplete>, <sgc-dialog> ve <sgc-chart> gibi Tag Helper'lar ile Html.Sgc() altındaki fluent karşılıkları, sunucuda Bootstrap 5 işler ve controller'larınızla htmx üzerinden konuşur, JavaScript framework'ü gerekmez. Grid, bir IQueryable üzerinde sayfalama, sıralama, filtreleme, arama ve XLSX ile PDF'e dışa aktarma yapar, böylece EF Core hepsini SQL olarak çalıştırır:
<sgc-grid name="orders" key="Id" items="Model"
asp-action="Read" asp-export-action="Export" export="xlsx,pdf"
page-size="15" sortable="true" filterable="true"
searchable="true" push-url="true">
<sgc-column field="Reference" searchable="true" />
<sgc-column field="Customer" searchable="true" />
<sgc-column field="OrderDate" title="Date" format="{0:yyyy-MM-dd}" filter="range" />
<sgc-column field="Total" format="{0:N2}" align="right" filter="range" />
</sgc-grid>
// OrdersController
public IActionResult Read(SgcDataRequest request) => this.SgcGrid(request, Rows());
Girişler asp-for ile bağlanır ve ModelState hatalarını gösterir, this.SgcCloseDialog("edit-order", refresh: "orders") ise bir düzenleme diyalogunu kapatıp gridi yeniler. Diğerlerinde olmayan kısım sunucudan itmedir: live="true" olan bir grafik, bir arka plan servisi hub.BroadcastChartAsync(...) çağırdığında açık her tarayıcıda yeniden çizilir, sgcHTML WebSocket üzerinden ve SignalR kodu olmadan. esegece.sgcHTML.AspNetCore NuGet paketiyle gelir, Community sürümü dahil, 22.RazorMvc demosu ise tanıdık sipariş örneğinin onunla yeniden kurulmuş halidir.
Yükseltme
Yeni olan her şey eklemelidir ve varsayılan olarak kapalıdır. Yeni unit'leri ekleyin, paketlerinizi yeniden derleyin, ve mevcut bir uygulama tam olarak eskisi gibi davranmaya devam edecek.
Uzun Sürümler
- Delphi Uygulamanızı ChatGPT ve Claude İçinde Çalıştırın
- Bir Ekran Görüntüsünü Delphi Web Sayfasına Dönüştürün
- OpenSSL DLL'leri Olmadan Delphi TLS 1.3
- Beş Dakikada Delphi Web CRUD Sayfası
- Delphi Grid'inize Sade İngilizce ile Soru Sorun
- Delphi'den Kapalı Bir Tarayıcıya Ulaşın
- Passkeys, SAML SSO, LDAP ve TOTP 2FA ile Delphi'de Giriş
- Entra ID, Okta ve AD FS ile Delphi'de SAML Tekli Oturum Açma
İzleyin
Bununla ilgili kısa bir video, eSeGeCe kanalında yer alıyor.
Sorularınız, geri bildiriminiz veya taşıma konusunda yardıma mı ihtiyacınız var? İletişime geçin — kodu yazan kişilerden yanıt alacaksınız.
