HTTP/2 Protokolü

Delphi ve C++Builder için yerel HTTP/2 istemcisi ve sunucusu. İkili çerçeveleme, akış çoklama, HPACK başlık sıkıştırması ve ALPN anlaşması — IIS, Apache veya Indy bağımlılığı yok.

İhtiyacınız olan tarafı seçin

İki üretime hazır bileşen, tam HTTP/2 (RFC 9113) iletişim protokolünü uygular. HTTP/2 API'lerini tüketmek için istemciyi, bunları yayımlamak için sunucuyu kullanın — veya ikisini aynı uygulama içinde.

TsgcHTTP2Client

Yerel HTTP/2 istemcisi — tek bir TLS bağlantısı üzerinden çoklanmış GET/POST/PUT/DELETE, HPACK ile sıkıştırılmış başlıklar, ALPN h2 yükseltmesi veya ön bilgi h2c, sunucu-push işleme ve bearer / basic / NTLM kimlik doğrulaması.

HTTP/2 İstemcisini Aç →

TsgcWebSocketHTTPServer

Yerel HTTP/2 sunucusu — aynı WebSocket HTTP sunucusu, tek bir TLS bağlantı noktasında HTTP/1.1, HTTP/2 (h2) ve WebSocket sunar. ALPN anlaşması, akış çoklama, HPACK yanıtları ve isteğe bağlı RFC 8441 HTTP/2 üzerinden WebSocket başlatma.

HTTP/2 Sunucusunu Aç →

sgcWebSockets'te HTTP/2

Hem istemciye hem de WebSocket HTTP sunucusuna bağlanmış birinci sınıf bir HTTP/2 çerçeveleme uygulaması.

Bileşenler

TsgcHTTP2Client
TsgcWebSocketHTTPServer

Platformlar

Windows, macOS, Linux, iOS, Android

Sürümler

İstemci: Standard / Pro / Enterprise
Sunucu: Pro / Enterprise

HTTP/2'nin getirdikleri

HTTP/2'nin HTTP/1.1'e göre tüm kazanımları — ayrı bir web sunucusu başlatmadan, yerel Delphi/C++Builder kodunda.

İkili çerçeveleme

İstekler ve yanıtlar ikili çerçevelere bölünür ve belirleyici bir durum makinesi tarafından ayrıştırılır. Artık metin satırı ayrıştırması veya HTTP/1.1 belirsizliği yok.

Akış çoklama

Onlarca devam eden istek tek bir TCP/TLS bağlantısını paylaşır — HTTP katmanında head-of-line engelleme yok, istek başına ek yuva yok.

HPACK başlık sıkıştırması

Yerleşik HPACK kodlayıcı/kod çözücü (RFC 7541). Tekrarlanan çerezler, kimlik doğrulama token'ları ve content-type başlıkları, ilk istekten sonra neredeyse sıfır bayta mal olur.

ALPN anlaşması

TLS el sıkışması sırasında eş h2 ve http/1.1 sunar; anlaşılan ALPN değeri, hiçbir gidiş-dönüş boşa harcanmadan protokolü seçer.

Ön bilgi h2c

Güvenilir dahili bağlantılar ve service-mesh sidecar'ları için her iki taraf da ALPN'yi atlayıp HTTP2_PriorKnowledge aracılığıyla düz metin üzerinden HTTP/2 başlatabilir.

Sunucu push

Sunucu proaktif olarak PUSH_PROMISE yanıtları gönderebilir; istemci bunları önbelleğe alma için OnHTTP2StreamData aracılığıyla açığa çıkarır. Not: genel web'de kullanımdan kaldırılmış, dahili olarak hâlâ kullanışlıdır.

Akış önceliklendirme

Akış başına öncelik ve bağımlılık ipuçları, kritik yanıtların (kimlik doğrulama, gezinme, JSON-RPC sonuçları) aynı bağlantıdaki toplu aktarımları geçmesine olanak tanır.

Akış kontrolü

Akış başına ve bağlantı başına WINDOW_UPDATE akış kontrolü, büyük bir yanıtın daha küçük olanları aç bırakmasını önler — SETTINGS çerçeveleri aracılığıyla ayarlanabilir.

OpenSSL veya SChannel ile TLS

Windows çekirdek TLS (DLL yok) için TLSOptions.IOHandler değerini iohSChannel veya tam çok platformlu 1.2/1.3 desteği için iohOpenSSL olarak ayarlayın.

HTTP/2'nin parladığı yerler

HTTP/2'nin çoklama ve HPACK tasarruflarının kendini hemen amorti ettiği hazır eklenti senaryoları.

Apple Push Notifications

Apple'ın APNs sağlayıcı API'si HTTP/2 gerektirir. TsgcHTTP2Client, Apple Push bileşenini token tabanlı kimlik doğrulamayla uçtan uca yönetir.

Firebase Cloud Messaging

Google'ın FCM HTTP v1 API'si HTTP/2 üzerinden çalışır. Aynı bileşen, service-account JWT oluşturma ile FCM'yi güçlendirir.

Modern REST ve JSON API'leri

Çoğu bulut API'si (Stripe, GitHub, Cloudflare, Google, Azure…) varsayılan olarak HTTP/2 konuşur — çoklanmış istemciler paralel çağrılarda gecikmeyi azaltır.

Hizmetten hizmete trafik

Sidecar mesh arkasındaki dahili mikrohizmetler, tek bir yuva üzerinden yüzlerce RPC akışını çoklamak için HTTP/2 ön bilgisini (h2c) kullanır.

Tek bağlantı noktasında WebSocket + HTTP/2

TsgcWebSocketHTTPServer, tek bir TLS uç noktasında HTTP/1.1, HTTP/2 ve WebSocket sunar — ALPN her bağlantıyı otomatik olarak yönlendirir.

HTTP/2 üzerinden RFC 8441 WebSocket

WebSocket çerçevelerini HTTP/2 akışları içinde tünellemeyi tercih eden istemciler için sunucuda Specifications.RFC8441 etkinleştirin.

Birkaç satırda istemci ve sunucu

Bileşeni bırakın, TLS'yi ayarlayın, başlayın. ALPN, el sıkışma sırasında sizin için h2 üzerinde anlaşır.

uses
  sgcHTTP, sgcHTTP2;

var
  HTTP2: TsgcHTTP2Client;
begin
  HTTP2 := TsgcHTTP2Client.Create(nil);
  HTTP2.TLSOptions.IOHandler := iohSChannel; // or iohOpenSSL
  HTTP2.TLSOptions.Version   := tls1_2;

  // Add custom headers (compressed by HPACK)
  HTTP2.Request.CustomHeaders.Add('authorization: Bearer eyJ...');

  // GET over HTTP/2 (ALPN negotiates h2)
  Memo1.Text := HTTP2.Get('https://api.example.com/v1/items');
  ShowMessage(IntToStr(HTTP2.Response.Status));
end;
uses
  sgcWebSocket;

var
  Server: TsgcWebSocketHTTPServer;
begin
  Server := TsgcWebSocketHTTPServer.Create(nil);
  Server.Port := 443;
  Server.SSL  := True;
  Server.SSLOptions.CertFile := 'cert.pem';
  Server.SSLOptions.KeyFile  := 'key.pem';

  // HTTP/1.1, HTTP/2 and WebSocket on the same TLS port
  Server.Specifications.HTTP    := True;
  Server.Specifications.HTTP2   := True;
  Server.Specifications.RFC6455 := True;

  Server.Active := True;
end;
// uses: sgcHTTP, sgcHTTP2
TsgcHTTP2Client *HTTP2 = new TsgcHTTP2Client(this);
HTTP2->TLSOptions->IOHandler = iohSChannel;
HTTP2->Request->CustomHeaders->Add("authorization: Bearer eyJ...");
Memo1->Text = HTTP2->Get("https://api.example.com/v1/items");

Spesifikasyonlar ve referanslar

Bu bileşenlerin uyguladığı protokoller için yetkili kaynaklar.

Belgeler ve Demolar

Bileşen sayfalarına, çevrimiçi yardıma ve deneme içinde gelen kullanıma hazır demo projesine doğrudan bağlanın.

HTTP/2 İstemcisi — TsgcHTTP2Client Bileşen sayfası: istemci için özellikler, kod örnekleri ve TLS seçenekleri.
HTTP/2 Sunucusu — TsgcWebSocketHTTPServer Bileşen sayfası: HTTP/2'yi tek bir TLS bağlantı noktasında HTTP/1.1 ve WebSocket ile birlikte nasıl etkinleştireceğiniz.
Çevrimiçi Yardım — HTTP/2 HTTP/2 bileşenleri için tam özellik, metot ve olay referansı.
Demo Projesi — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client Kullanıma hazır örnek proje. sgcWebSockets paketi içinde gelir — aşağıdan denemeyi indirin.
Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz.

HTTP/2 Kullanmaya Hazır mısınız?

Ücretsiz denemeyi indirin ve Delphi uygulamalarınıza çoklanmış HTTP/2 istemci ve sunucu trafiği ekleyin.