sgcHTTP Serwer HTTP, HTTP/2 i gRPC w Delphi. Google Cloud też.

Serwer HTTP i pięć komponentów klienckich. TsgcHTTPServer publikuje endpointy HTTP i pliki statyczne z Twojej własnej aplikacji. TsgcHTTP2Client mówi w HTTP/2, z multipleksowanymi strumieniami przez jedno połączenie TLS i kompresją nagłówków HPACK. TsgcGRPCClient to zbudowany na nim klient gRPC, do wywołań unarnych i strumieniowych Protocol Buffers. Trzy kolejne klasy sięgają do Google Cloud przez zwykłe HTTPS: Pub/Sub, Calendar i Firebase Cloud Messaging.

Samodzielny pakiet sgcWebSockets, ze środowiskiem uruchomieniowym Core w zestawie. Zobacz cennik →
  • Serwer HTTP
  • HTTP/2
  • gRPC
  • Google Cloud
  • HPACK i ALPN
  • Delphi 7 do 13
  • C++ Builder
  • 3Komponenty na palecie: serwer HTTP, klient HTTP/2 i klient gRPC
  • 5Klas klienckich łącznie
  • 3Usługi Google Cloud: Pub/Sub, Calendar i FCM
  • 1Instalator samodzielny, środowisko Core w zestawie
  • 100%Kod źródłowy w każdej licencji
Zobacz, jak działa

Zobacz sgcHTTP w dwie minuty.

Szybki start z narracją i napisami: klient HTTP/2 wysyła wiele żądań przez jedno połączenie, a następnie wywołanie gRPC jedzie tym samym transportem, wszystko z poziomu Delphi. Nic się nie pobiera, dopóki nie naciśniesz odtwarzania.

Szybki start sgcHTTP

Wywołaj endpoint HTTP/2 i wykonaj wywołanie gRPC, z poziomu Delphi.

  1. Utwórz klienta HTTP/2Utwórz TsgcHTTP2Client, obsłuż OnHTTP2Response i wywołaj Get. Protokół h2 jest negocjowany podczas uzgadniania TLS przez ALPN.
  2. Wiele żądań, jedno połączenieŻądania dzielą jedno połączenie TCP jako niezależne strumienie, więc jedna wolna odpowiedź nie blokuje pozostałych czekających za nią.
  3. gRPC na tym samym transporciePrzypisz klienta HTTP/2 do klienta gRPC i wywołaj metodę według usługi i nazwy. Wiadomości jadą jako Protocol Buffers poprzedzone długością.
  4. Cztery wzorce RPCUnarne, strumieniowanie serwera, strumieniowanie klienta i strumieniowanie dwukierunkowe, każde z własną metodą w TsgcGRPCClient.
Dwa komponenty na palecie

Klient HTTP/2 i gRPC jadący na nim.

Oba komponenty są zadeklarowane w module sgcHTTP, a TsgcGRPCClient niesie własne połączenie HTTP/2 przez swoją właściwość Client.

Klient HTTP/2 w szybkim starcie sgcHTTP: kod Delphi obok sześciu żądań w locie przez jedno gniazdo

Multipleksowane strumienie przez jedno połączenie TLS

TsgcHTTP2Client mówi w HTTP/2 (RFC 9113): wiele żądań dzieli jedno połączenie TCP jako niezależne strumienie. Nagłówki są kompresowane HPACK, a h2 jest negocjowany podczas uzgadniania TLS przez ALPN. Pokryty jest każdy czasownik: Get, Post, Put, Patch, Delete i Options, każdy z wywołaniem synchronicznym i bliźniaczym Async.

gRPC w szybkim starcie sgcHTTP: TsgcGRPCClient używa TsgcHTTP2Client jako transportu, z wymienionymi czterema wzorcami RPC

RPC unarne i strumieniowe na kliencie HTTP/2

TsgcGRPCClient dziedziczy połączenie multipleksowane i dokłada na nim format transmisji gRPC. Call i CallAsync obsługują RPC unarne, ServerStreamingCall obsługuje strumień odpowiedzi na jedno żądanie, a OpenClientStream i OpenBidiStream obsługują strumieniowanie po stronie klienta oraz dwukierunkowe. RetryPolicy, Interceptors i ServiceConfig dodają zachowanie ponawiania i logikę przekrojową bez dotykania miejsc wywołań.

Jeden serwer, pięć klas klienckich

Dwie zależności, nie pięć.

Pięć klas dzieli się wyraźnie według tego, czego potrzebują pod spodem. HTTP/2 i gRPC potrzebują ALPN, co oznacza sgcCustomIndy. Google Cloud nie potrzebuje niczego poza HTTPS i kontem usługi, co dołączone środowisko Core już zapewnia. Serwer HTTP pochodzi z samego tego środowiska.

Serwer HTTP

TsgcHTTPServer publikuje endpointy HTTP z Twojej własnej aplikacji. Ustaw Port, obsłuż OnCommandGet, ustaw Active, a każde żądanie trafi do Twojego kodu. OnCommandOther obsługuje czasowniki takie jak PUT i DELETE. Jest dostarczany z dołączonym środowiskiem uruchomieniowym Core.

HTTP/2

TsgcHTTP2Client multipleksuje niezależne strumienie przez jedno połączenie TLS, kompresuje nagłówki HPACK i negocjuje h2 przez ALPN. Connect, Get, Post, Put, Patch, Delete i Options, synchronicznie lub Async.

gRPC

TsgcGRPCClient jedzie na kliencie HTTP/2: wiadomości Protocol Buffers poprzedzone długością w strumieniach HTTP/2, z RPC unarnymi, ze strumieniowaniem serwera, strumieniowaniem klienta i dwukierunkowymi, a także z polityką ponawiania i interceptorami.

Google Cloud, zwykłe HTTPS

TsgcHTTPGoogleCloud_PubSub_Client, TsgcHTTPGoogleCloud_Calendar_Client i TsgcHTTPGoogleCloud_FCM_Client sięgają do Pub/Sub, Calendar i Firebase Cloud Messaging, uwierzytelniane kontem usługi Google. Żaden z nich nie wymaga sgcCustomIndy.

Server push i fragmentowane odpowiedzi

Zdarzenia pokazują cykl życia połączenia: OnHTTP2Connect, OnHTTP2Response, OnHTTP2ResponseFragment dla fragmentowanych odpowiedzi, OnHTTP2PushPromise dla server push, OnHTTP2GoAway i OnHTTP2Disconnect. Nic z cyklu życia strumienia nie jest przed tobą ukryte.

Jedna zależność dla dwóch, żadna dla trzech

Klient HTTP/2 i klient gRPC są zbudowane na sgcCustomIndy, który obejmuje ten sam zakres platform co samo sgcWebSockets. Klienty Google Cloud to zwykłe HTTPS, więc działają wszędzie tam, gdzie działa środowisko uruchomieniowe Core. Od Delphi 7 po RAD Studio 13, także w C++ Builder.

Pełny kod źródłowy w pudełku

Każda licencja zawiera pełny kod źródłowy serwera HTTP, wszystkich pięciu klientów oraz dołączonego środowiska uruchomieniowego, więc implementacje na poziomie protokołu możesz przejść krok po kroku we własnym debuggerze. Wdrażanie jest bez opłat licencyjnych.

Kod

Serwer HTTP, HTTP/2 i gRPC, obok siebie.

Utwórz komponent, ustaw port lub wskaż mu host, podepnij zdarzenie i działaj. Ten sam kod kompiluje się w Delphi od 7 do 13 oraz w C++ Builder.

uses
  sgcHTTP;
var
  HTTP2: TsgcHTTP2Client;
begin
  // HTTP/2: multiplexed requests over one TLS connection
  HTTP2 := TsgcHTTP2Client.Create(nil);
  HTTP2.Host := 'https://api.example.com';
  HTTP2.OnHTTP2Response := HTTP2Response;
  HTTP2.Active := True;

  HTTP2.GetAsync('/v1/status');
end;

procedure TForm1.HTTP2Response(Sender: TObject;
  const Connection: TsgcHTTP2ConnectionClient;
  const Request: TsgcHTTP2RequestProperty;
  const Response: TsgcHTTP2ResponseProperty);
begin
  Memo1.Lines.Add(Response.DataString);
end;
uses
  sgcHTTP;
var
  GRPC: TsgcGRPCClient;
begin
  // gRPC: built on the HTTP/2 client, unary and streaming RPC
  GRPC := TsgcGRPCClient.Create(nil);
  GRPC.Client.Host := 'https://grpc.example.com';
  GRPC.OnGRPCResponse := GRPCResponse;

  GRPC.CallAsync('example.OrderService', 'GetOrder', RequestBytes);
end;

procedure TForm1.GRPCResponse(Sender: TObject;
  const aResponse: TsgcGRPCResponse);
begin
  Memo1.Lines.Add(aResponse.DataString);
end;
uses
  sgcHTTP_Server;
var
  Server: TsgcHTTPServer;
begin
  // Serwer HTTP: endpointy i pliki statyczne
  Server := TsgcHTTPServer.Create(nil);
  Server.Port := 8080;
  Server.DocumentRoot := 'C:\www';
  Server.OnCommandGet := ServerCommandGet;
  Server.Active := True;
end;

procedure TForm1.ServerCommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo;
  AResponseInfo: TIdHTTPResponseInfo);
begin
  if ARequestInfo.Document = '/api/status' then
  begin
    AResponseInfo.ContentType := 'application/json';
    AResponseInfo.ContentText := '{"status":"ok"}';
  end;
end;
  1. Utwórz klientaKlienty są w module sgcHTTP, serwer w sgcHTTP_Server. TsgcGRPCClient niesie własne połączenie HTTP/2 przez swoją właściwość Client.
  2. Wskaż hostWystarczy host https://. ALPN negocjuje h2 podczas uzgadniania TLS, a HPACK kompresuje nagłówki.
  3. Podepnij zdarzenie odpowiedziOnHTTP2Response i OnGRPCResponse przekazują zdekodowane ciało odpowiedzi wraz z żądaniem i połączeniem.
  4. Wyślij, synchronicznie lub nieKażdy czasownik i każde RPC ma wywołanie blokujące i bliźniaczy wariant Async, więc wątek interfejsu pozostaje wolny.

Ten sam kształt w Object Pascalu i w C++ Builder. Pełna matryca funkcji →

Zanim kupisz

Dwie rzeczy, które warto wiedzieć wcześniej.

Czego sgcHTTP potrzebuje od ciebie, a czego nie. Obie odpowiedzi są krótkie i obie są na tej stronie, a nie drobnym drukiem.

Zależności dla każdego klienta
klasa                               wymaga sgcCustomIndy
TsgcHTTPServer                      nie, jest w środowisku Core
TsgcHTTP2Client                     tak, dla ALPN
TsgcGRPCClient                      tak, jedzie na TsgcHTTP2Client
TsgcHTTPGoogleCloud_PubSub_Client   nie, zwykłe HTTPS
TsgcHTTPGoogleCloud_Calendar_Client no, plain HTTPS
TsgcHTTPGoogleCloud_FCM_Client      no, plain HTTPS

HTTP/2 negocjuje h2 przez ALPN podczas uzgadniania TLS.
  Standardowa biblioteka Indy dostarczana z RAD Studio
  nie obsługuje ALPN, więc zarówno HTTP/2, jak i gRPC
  są zbudowane na sgcCustomIndy.

sgcHTTP jest samodzielny

Środowisko uruchomieniowe sgcWebSockets Core jest w zestawie: serwer HTTP, stos klienta HTTP/TLS, przez który każdy komponent wysyła swoje żądania, oraz warstwa JSON, która dekoduje odpowiedzi Google Cloud. Jeden instalator, pełny kod źródłowy w pakiecie.

HTTP/2 i gRPC wymagają sgcCustomIndy

Negocjacja ALPN nie jest obsługiwana przez standardową bibliotekę Indy, więc TsgcHTTP2Client i, co za tym idzie, TsgcGRPCClient są zbudowane na sgcCustomIndy zamiast niej. Jest zawsze dołączony przy zamówieniu sgcHTTP, a pokazana cena już go obejmuje.

Google Cloud potrzebuje tylko HTTPS

Trzej klienci Google Cloud uwierzytelniają się za pomocą identyfikatora projektu, adresu e-mail klienta i klucza prywatnego konta usługi Google oraz wywołują API REST przez zwykły stos HTTPS środowiska Core. Bez biblioteki natywnej i bez sgcCustomIndy.

Delphi i C++ Builder

sgcHTTP obsługuje Delphi 7 do RAD Studio 13 oraz C++ Builder. Te same komponenty są też w sgcWebSockets Enterprise, więc istniejąca licencja Enterprise lub All-Access może już cię obejmować. Instalator próbny to wersja próbna sgcWebSockets All-Access, więc serwer HTTP i wszystkie pięć klientów możesz wypróbować już dziś.

sgcHTTP implementuje opublikowane interfejsy HTTP/2, gRPC i REST Google Cloud, zamiast opakowywać SDK producenta, więc strumienie, nagłówki, RPC i powiadomienia push są pełnoprawnymi metodami i zdarzeniami, a pełny kod źródłowy oznacza, że nic pośrodku nie jest czarną skrzynką.

Część sgcWebSockets

Pojedynczy pakiet sgcWebSockets, licencjonowany osobno.

sgcHTTP zawiera środowisko uruchomieniowe sgcWebSockets Core, na którym jest zbudowany, a dodatek sgcCustomIndy potrzebny dla HTTP/2 i gRPC jest zawsze dołączony. Każda licencja zawiera pełny kod źródłowy i wdrażanie bez opłat licencyjnych.

Single

Licencja dla 1 programisty. Użycie na jednej maszynie naraz.

€398

Team

Licencje dla 2 programistów. Użycie na dwóch maszynach naraz.

€648

Site

Nieograniczona liczba programistów. Wszystkie maszyny firmy.

€1,048

Komponenty klienckie HTTP/2, gRPC i Google Cloud dla Delphi i C++ Builder, ze środowiskiem uruchomieniowym sgcWebSockets Core w zestawie. Masz już sgcWebSockets Enterprise? Te same komponenty są także w nim.

Zobacz cennik i licencje
REFERENCJE

Co mówią programiści

Zaufali nam programiści Delphi, C++ Builder, Lazarus i .NET na całym świecie.

Wasza biblioteka sgcWebSockets jest bardzo przydatna i łatwa w konfiguracji. Tak trzymać!
Simone Moretti Programista Delphi
sgcWebSockets jest niesamowity, a wasze wsparcie jest najlepsze!
Christian Meyer Założyciel i CTO
Bardzo dziękuję za pomoc i wsparcie, uwielbiam wasze komponenty.
Mark Steinfeld CTO

Nowoczesne HTTP, gRPC i Google Cloud z natywnego kodu.

Serwer HTTP, multipleksowane HTTP/2, strumieniowe gRPC i trzej klienci Google Cloud, ze środowiskiem uruchomieniowym sgcWebSockets Core w zestawie i pełnym kodem źródłowym w pudełku.

Więcej od eSeGeCe

Inne produkty eSeGeCe

sgcHTTP dzieli konwencje z pozostałymi bibliotekami komponentów eSeGeCe dla Delphi, C++ Builder i .NET. Dostarczane są z pełnym kodem źródłowym i wdrażane bez opłat licencyjnych.

sgcWebSockets

WebSocket, HTTP/2, MQTT, AMQP, WebRTC, AI oraz ponad 30 integracji API dla Delphi, C++ Builder, Lazarus i .NET. Jej edycja Enterprise zawiera także gRPC.

sgcREST

Serwer REST, serwer OpenAPI oraz komponenty klienta OpenAPI dla Delphi i C++ Builder. Publikuj API REST na podstawie kontraktu OpenAPI 3.x albo korzystaj z dowolnego API opisanego w OpenAPI.

sgcAuth

Klient OAuth2, klient JWT i obsługa WebAuthn dla Delphi i C++ Builder. Produkt samodzielny, z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core.

sgcMQ

Komponenty klienckie MQTT, AMQP 0.9.1 i 1.0, Apache Kafka oraz STOMP dla Delphi i C++ Builder. Produkt samodzielny, z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core.

sgcSocial

Komponenty klienckie Telegram i WhatsApp Business dla Delphi i C++ Builder. Produkt samodzielny, z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core.

sgcAI

Komponenty AI, LLM i MCP dla Delphi i C++ Buildera. Siedmiu dostawców LLM w jednym komponencie, a do tego MCP, embeddingi i mowa.

sgcHTML

Serwerowe komponenty HTML i UI oparte na Bootstrap 5 i htmx dla Delphi, C++ Builder i .NET.

sgcQUIC

Surowy transport QUIC oraz klient i serwer HTTP/3, z WebTransport. Dodatek do sgcWebSockets Enterprise.

sgcOpenAPI

Parser OpenAPI 3.x, natywny generator SDK w Pascalu, komponent serwera OpenAPI oraz ponad 1 195 gotowych SDK chmurowych.

sgcSign

XAdES, PAdES, CAdES i ASiC dla dokumentów, Authenticode, ClickOnce, NuGet i VSIX dla kodu.

sgcPDF

Twórz, edytuj, przeglądaj, podpisuj, cenzuruj i weryfikuj pliki PDF w czystym Object Pascalu, bez DLL do wdrożenia. Licencjonowany osobno.

sgcBiometrics

Windows Hello, czytniki linii papilarnych i Windows Biometric Framework dla Delphi i C++ Builder.

sgcIndy

Zaktualizowane komponenty Indy TCP/IP z nowoczesnym TLS, IPv6 i HTTP/2 od Delphi 7 do 13.

Najnowsze wpisy na blogu

Zobacz wszystkie wpisy →

Oglądasz widok serwer HTTP, HTTP/2 i gRPC eSeGeCe.

Pokaż mi inne ujęcie →
30-dniowa gwarancja zwrotu pieniędzyNie jesteś zadowolony? Poproś o pełny zwrot pieniędzy w ciągu 30 dni od zakupu. Zobacz politykę zwrotów