Delphi HTTP/3 İstemcisi | QUIC & WebTransport Bileşenleri | eSeGeCe

Delphi HTTP/3 İstemcisi — Pascal için QUIC ve WebTransport

Delphi ve C++Builder için çalışan bir HTTP/3 yığını: TsgcHTTP3Client; QPACK üst bilgi sıkıştırması, Alt-Svc keşfi, sunucu push ve Extended CONNECT tünelleriyle RFC 9114 isteklerini QUIC üzerinden gönderir. Ham QUIC taşıma bileşenleri ve WebTransport oturumları aynı paketin parçasıdır ve bir HTTP/3 sunucusu tabloyu tamamlar.

Aynı HTTP semantiği, yeni taşıma

HTTP/3 (RFC 9114); zaten bildiğiniz metotları, durum kodlarını ve üst bilgileri korur ve TCP'yi, TLS 1.3'ü yerleşik olarak içeren UDP tabanlı bir taşıma olan QUIC ile değiştirir.

Bir Delphi HTTP/3 istemcisi, uygulamanıza modern web'in yöneldiği taşımayı kazandırır. QUIC (RFC 9000), taşıma ve TLS el sıkışmalarını tek bir gönderimde birleştirir, taşıma düzeyindeki hat başı engellemesini ortadan kaldırır (kaybolan bir paket yalnızca verisini taşıdığı akışları duraklatır) ve bağlantı kimlikleri sayesinde ağ değişikliklerinden sağ çıkar, böylece bir bağlantı bir cihazı Wi-Fi'dan mobil veriye kadar izleyebilir. Üst bilgiler, HPACK'in HTTP/3 karşılığı olan QPACK (RFC 9204) ile sıkıştırılır.

sgcWebSockets, QUIC'i OpenSSL 3.5'teki yerel QUIC desteği aracılığıyla sürer. Motor, OpenSSL kitaplığı yüklendiğinde otomatik olarak algılanır: birlikte gelen OpenSSL 3.5 ikili dosyalarıyla, bağlantı başına birden çok akışı destekleyen ve bileşenlerin etrafında inşa edildiği motor olan qmBuiltin motorunu elde edersiniz. quictls tarzı OpenSSL derlemeleri için, bağlantı başına tek bir akışla sınırlı bir qmCustom yolu vardır.

HTTP/3 istemcisi

TsgcHTTP3Client: engelleyici ve asenkron istekler, Alt-Svc, push, tüneller

HTTP/3 sunucusu

TsgcHTTP3Server: istekleri QUIC üzerinden sunar, TsgcQUICServer'dan türer

Ham QUIC

TsgcQUICClient / TsgcQUICServer: HTTP semantiği olmadan QUIC akışları

Standartlar

RFC 9000 (QUIC), RFC 9114 (HTTP/3), RFC 9204 (QPACK), RFC 9220 (Extended CONNECT)

HTTP/3 istemcisi neler yapabilir

On HTTP metodu ve olaylar ile metotlar olarak sunulan HTTP/3'e özgü mekanizmalar.

Tüm fiiller

GET, HEAD, POST, PUT, DELETE, PATCH, OPTIONS, TRACE, CONNECT ve yeni IETF QUERY metodu; her biri engelleyici bir çağrı olarak, çoğu ayrıca asenkron bir varyantla birlikte.

Alt-Svc keşfi

Sunucular, HTTP/3 kullanılabilirliğini Alt-Svc üst bilgisi (RFC 7838) aracılığıyla duyurur. İstemci bunu ayrıştırır ve OnAltSvc aracılığıyla sunar, böylece ne zaman geçiş yapılacağına uygulamanız karar verir.

Sunucu push

İstemci, itilen yanıtların denetimini elinde tutar: SetMaxPushId ile bir sınır duyurun, OnPushPromise aracılığıyla bildirim alın ve CancelPush ile reddedin.

Extended CONNECT

RFC 9220, başka bir protokolü bir istek akışı üzerinden tüneller. Sunucu desteği duyurduğunda ExtendedConnect tüneli açar; ardından TunnelSend ve OnTunnelData baytları taşır.

WebTransport

Extended CONNECT üzerinden anlaşılan ve uygulamaya QUIC akışlarını doğrudan veren oturumlar; düşük gecikmeli çift yönlü trafik için tasarlanmıştır. Akış tabanlıdır; datagramlar, birlikte gelen QUIC motorunda taşınmaz.

QPACK sıkıştırması

QUIC'in sıra dışı teslimatı için tasarlanmış RFC 9204 üst bilgi sıkıştırması; dinamik tablo güncellemeleri, özel kodlayıcı ve kod çözücü akışlarında taşınır.

0-RTT yetenekli el sıkışma

QUIC, taşımayı ve TLS 1.3'ü tek bir gönderimde birleştirir; yeni bir bağlantı tek bir gidiş dönüşte tamamlanır ve devam ettirilen bir oturum, ilk gönderimde 0-RTT verisi taşıyabilir.

Bağlantı geçişi

QUIC bağlantıları, adres dörtlüsü yerine bağlantı kimliğiyle tanımlanır, bu nedenle istemcinin ağ değiştirmesinden sağ çıkar.

Çoklu akışlar

Dahili motorda EnableMultiStream ve OpenStream, tek bir bağlantıya birden çok bağımsız QUIC akışı yerleştirir; bu, WebTransport'un üzerine kurulduğu temeldir.

HTTP/3 üzerinden bir GET isteği

Bir ana bilgisayara ve bağlantı noktasına bağlanın, ardından istekleri gönderin. Varsayılan bağlantı noktası 443'tür.

var
  oClient: TsgcHTTP3Client;
  vBody: string;
begin
  oClient := TsgcHTTP3Client.Create(nil);
  oClient.OnResponse := OnResponseHandler;
  oClient.OnAltSvc   := OnAltSvcHandler;

  oClient.Connect('www.example.com', 443);
  vBody := oClient.Get('https://www.example.com/');
  oClient.Disconnect;
end;
TsgcHTTP3Client* oClient = new TsgcHTTP3Client(NULL);
oClient->OnResponse = OnResponseHandler;
oClient->OnAltSvc   = OnAltSvcHandler;

oClient->Connect("www.example.com", 443);
String vBody = oClient->Get("https://www.example.com/");
oClient->Disconnect();
var oClient = new TsgcHTTP3Client();
oClient.OnResponse += OnResponseHandler;
oClient.OnAltSvc   += OnAltSvcHandler;

oClient.Connect("www.example.com", 443);
var vBody = oClient.Get("https://www.example.com/");
oClient.Disconnect();

Delphi'de bir HTTP/3 sunucusu

Sunucu bir UDP bağlantı noktasına bağlanır, bir sertifika ve anahtar yükler ve her istek için bir olay tetikler. HTTP/3 desteği, kitaplığın HTTP sunucusu tarafında da mevcuttur.

var
  oServer: TsgcHTTP3Server;
begin
  oServer := TsgcHTTP3Server.Create(nil);
  oServer.Port := 443;
  oServer.QUICOptions.SSLOptions.CertFile := 'cert.pem';
  oServer.QUICOptions.SSLOptions.KeyFile  := 'key.pem';
  oServer.OnH3Request := OnH3RequestHandler;
end;

Sürüm ve çalışma zamanı gereksinimleri

HTTP/3, QUIC ve WebTransport yalnızca All-Access sürümüne özeldir. Bileşenler, Indy tabanlı kitaplık çekirdeğini ve üzerine kuruldukları yerel QUIC desteğini sağlayan OpenSSL 3.5 veya üzerini gerektirir.

WebTransport ayrıca dahili OpenSSL QUIC motorunu (qmBuiltin) gerektirir, çünkü bir oturum tek bir QUIC bağlantısında birden çok akışa ihtiyaç duyar. Sunucu bileşenleri de yalnızca dahili motorda çalışır. Bir istemci, bir sunucunun HTTP/3 konuştuğunu varsayamayacağından, yalnızca h2 duyuran kaynaklar için HTTP/2 istemcisini elinizin altında bulundurun. Alt-Svc olayı, HTTP/3'ün ne zaman kullanılabilir olduğunu size söyler.

Derinlemesine incelemeler

Delphi HTTP/2 istemcisi & sunucusu

TCP tabanlı kardeş: çoğullanmış akışlar, HPACK, sunucu push ve WebSocket-over-HTTP/2.

HTTP bileşenleri

Tam HTTP ailesi: HTTP/2, OAuth2, JWT, gRPC, push hizmetleri ve daha fazlası.

Delphi karşılaştırma kılavuzu

sgcWebSockets'in diğer Delphi ağ kitaplıklarıyla nasıl karşılaştırıldığı, kaynak gösterimli.

WebSocket bileşeni

HTTP/3 ve QUIC (RFC 9220), HTTP/2 (RFC 8441) ve HTTP/1.1 (RFC 6455) üzerinden WebSocket.

Blog: HTTP QUERY metodu

HTTP/1.1, HTTP/2 ve HTTP/3 istemcilerinde yeni IETF fiili, kodla birlikte.

Sürümler

Standard'dan All-Access'e her sgcWebSockets sürümünün içerdikleri.

Best value: All-AccessEvery eSeGeCe product, Premium Support included, from €1,059/year.
See All-Access pricing

HTTP/3'ü Delphi'den bugün deneyin

Denemeyi indirin ve HTTP/3 istemcisini kendi sunucunuza veya HTTP/3 etkin herhangi bir kaynağa karşı çalıştırın.