sgcHTTP Funktionsmatrix

Alles, was sgcHTTP kann, aufgeschlüsselt nach dem HTTP-Server, dem FastCGI / SCGI Gateway, dem HTTP/2-Client, dem gRPC-Client und den drei Google-Cloud-Clients. Jede Fähigkeit arbeitet in Delphi und C++ Builder identisch, und jede Lizenz enthält den vollständigen Quellcode. Für diesen Launch sind noch keine Komponenten-Unterseiten veröffentlicht, jeder Eintrag unten ist auf dieser Seite in sich abgeschlossen.

HTTP-Server

Endpunkte, statische Dateien, Sitzungen, TLS

FastCGI / SCGI Gateway

PHP & Python hinter deinem Server

HTTP/2-Client

Gemultiplexte Streams, HPACK, ALPN

gRPC-Client

Unary- & Streaming-RPC

Google Cloud

Pub/Sub, Calendar & FCM

Standards & Plattformen

Delphi 7 bis 13, C++ Builder

sgcHTTP ist in sich geschlossen. Es bringt die sgcWebSockets Core Runtime mit, es ist also kein Add-on. Der HTTP-Server, TsgcHTTPServer, ist Teil dieser Runtime.

HTTP/2 und gRPC brauchen sgcCustomIndy. Beide Klassen brauchen ALPN für die TLS-Protokollaushandlung, was die Standard-Indy-Bibliothek nicht unterstützt, sie bauen also stattdessen auf sgcCustomIndy auf. Es ist immer in deiner Bestellung enthalten, und der angezeigte sgcHTTP-Preis deckt es bereits ab. Die drei Google-Cloud-Clients sind reines HTTPS und brauchen es nicht. Das gilt auch für das FastCGI / SCGI Gateway, das mit der Standard-Indy-Bibliothek arbeitet, die mit RAD Studio ausgeliefert wird.

Sieben Klassen, drei Units

Vier Komponenten auf der Palettenseite SGC HTTP und drei reine Code-Klassen für Google Cloud. Der HTTP-Server ist in der Unit sgcHTTP_Server der mitgelieferten Core Runtime deklariert, das FastCGI / SCGI Gateway in der Unit sgcHTTP_Gateway, alles andere in der Unit sgcHTTP.

KomponenteKlasseAuf der Palette?Beschreibung
HTTP-ServerTsgcHTTPServerJaHTTP-Server: Anfrage-Ereignisse, statische Dateien aus einem Document Root, Kompression, Keep-Alive, Sitzungen, Uploads, TLS und Authentifizierung. Wird mit der Core Runtime ausgeliefert.
FastCGI / SCGI GatewayTsgcHTTPGatewayJaLeitet Anfragen, die der HTTP-Server empfängt, über TCP an FastCGI- und SCGI-Anwendungsserver weiter, etwa PHP-FPM oder einen Python-SCGI-Server. Unit sgcHTTP_Gateway. Standard-Indy, kein sgcCustomIndy nötig.
HTTP/2 ClientTsgcHTTP2ClientJaNativer HTTP/2-Client: gemultiplexte Streams, HPACK-Header-Kompression, ALPN-Aushandlung. Braucht sgcCustomIndy.
gRPC ClientTsgcGRPCClientJagRPC-Client, aufgebaut auf dem HTTP/2-Client: Unary-, Server-Streaming-, Client-Streaming- und bidirektionale RPC. Braucht sgcCustomIndy.
Google Cloud Pub/SubTsgcHTTPGoogleCloud_PubSub_ClientNein, reine Code-KlasseGoogle Cloud Pub/Sub REST API: Topics, Subscriptions, Snapshots, Publish und Pull. Reines HTTPS auf Core.
Google Cloud CalendarTsgcHTTPGoogleCloud_Calendar_ClientNein, reine Code-KlasseGoogle Calendar API v3: Kalender und Ereignisse, erstellen, aktualisieren, auflisten, löschen. Reines HTTPS auf Core.
Google Cloud FCMTsgcHTTPGoogleCloud_FCM_ClientNein, reine Code-KlasseFirebase Cloud Messaging HTTP v1 API: eine Push-Benachrichtigungs-Payload mit einem Aufruf senden. Reines HTTPS auf Core.

Endpunkte, statische Dateien, Sitzungen

TsgcHTTPServer veröffentlicht HTTP-Endpunkte und statische Dateien aus deiner eigenen Anwendung. Es ist dieselbe Engine wie der sgcWebSockets-WebSocket-Server, nur ohne den WebSocket-Teil, und er wird mit der mitgelieferten Core Runtime ausgeliefert.

FähigkeitAPIHinweise
LauschenPort, Bindings, ActiveSetze den Port oder binde an bestimmte Adressen, und aktiviere dann den Server.
AnfragenOnCommandGet, OnCommandOtherJede Anfrage erreicht deinen Code mit ihren Request- und Response-Objekten. OnCommandOther deckt Verben wie PUT und DELETE ab.
Statische DateienDocumentRootLiefert statische Dateien aus dem Ordner aus, auf den du es richtest.
KompressionHTTPCompressionOptionen für die Antwortkompression.
VerbindungenKeepAlive, MaxConnectionsHält Verbindungen zwischen Anfragen offen und begrenzt, wie viele gleichzeitig offen sind.
SitzungenSessionState, AutoStartSession, SessionTimeOut, OnSessionStart, OnSessionEndServerseitige Sitzungen mit Timeout, plus Start- und Ende-Ereignisse.
AnfragelimitsMaxRequestBodySizeBegrenzt die Größe eines Request-Bodys.
UploadsHTTPUploadFilesSpeichert hochgeladene Dateien in einem Verzeichnis deiner Wahl.
TLSSSL, SSLOptionsLiefere HTTPS mit deinem eigenen Zertifikat aus.
AuthentifizierungAuthentication, OnAuthenticationPrüfe Zugangsdaten in deinem eigenen Code, bevor eine Anfrage bedient wird.
ThreadsThreadPool, ThreadPoolOptionsVerwendet Worker-Threads aus einem Pool wieder, statt pro Verbindung einen zu erzeugen.
RuntimesgcWebSockets CoreDeklariert in der Unit sgcHTTP_Server der mitgelieferten Core Runtime, auf der Palettenseite SGC HTTP.

PHP- und Python-Anwendungen hinter deinem Server

TsgcHTTPGateway leitet Anfragen, die TsgcHTTPServer oder TsgcWebSocketHTTPServer empfängt, über TCP an FastCGI- und SCGI-Anwendungsserver weiter. Es übernimmt die Aufgabe von Apache mod_proxy_fcgi und mod_proxy_scgi oder von nginx fastcgi_pass und scgi_pass, sodass PHP- und Python-Anwendungen von deinem Delphi-Server bedient werden, ohne Apache oder nginx davor.

FähigkeitAPIHinweise
BackendsFastCGI, SCGIPHP über PHP-FPM oder php-cgi -b, und Python-Anwendungen, die von einem SCGI- oder FastCGI-Server bedient werden, zum Beispiel flup.
AnfragenProcessRufe es aus den Ereignissen OnCommandGet und OnCommandOther des Servers auf. Es liefert true, wenn ein Handler gepasst hat und die Antwort gefüllt ist, und false, wenn dein eigener Code die Anfrage beantwortet.
HandlerHandlers.AddHandlers.Add('*.php', 'fcgi://127.0.0.1:9000') oder Handlers.Add('/app/', 'scgi://127.0.0.1:4000'). Ein Handler passt nach Erweiterung (*.php), nach Präfix (/app/) oder nach exaktem Pfad.
Handler-EinstellungenPath, URL, Protocol, Host, Port, DocumentRoot, EnabledRichte jeden Handler mit einer einzigen URL oder mit Protokoll, Host und Port auf sein Backend aus und setze das Document Root des Backends.
CGI-UmgebungSCRIPT_NAME, PATH_INFO, SCRIPT_FILENAME, QUERY_STRING, REMOTE_ADDR, HTTPSAufgebaut nach RFC 3875, wobei jeder Request-Header als HTTP_*-Variable weitergegeben wird.
Zusätzliche VariablenEnvironment, OnBeforeRequestFüge Variablen pro Handler über Environment hinzu, oder pro Anfrage in OnBeforeRequest.
AntwortenCGI-AntwortParst den Status-Header, Location-Weiterleitungen, die Antwort-Header und den Body. Mehrere Set-Cookie-Header bleiben alle erhalten.
Gateway-FehlerOnError502 Bad Gateway, 503 Service Unavailable, wenn das FastCGI-Backend überlastet ist, und 504 Gateway Timeout, jeweils in OnError gemeldet.
Backend-FehlerOnStdErrLiefert die stderr-Ausgabe, die das FastCGI-Backend sendet.
VerbindungenConnectTimeout, ReadTimeout, KeepAlive, MaxIdleConnectionsTimeouts pro Handler, dazu ein optionaler Keep-Alive-Verbindungspool für FastCGI (FCGI_KEEP_CONN), standardmäßig aus. SCGI öffnet pro Anfrage eine Verbindung.
FastCGI-RolleResponderDie FastCGI-Rolle Responder. Anfragen werden nicht auf einer Verbindung gemultiplext.
SicherheitEingebautEin Proxy-Request-Header wird nie als HTTP_PROXY weitergegeben (httpoxy), Pfade mit .. werden mit 403 abgelehnt, und Header-Namen mit Unterstrichen werden ignoriert.
EinschränkungenTCP, gepuffertNur TCP-Backends, Unix-Domain-Sockets werden noch nicht unterstützt. Der Backend-Prozess muss bereits laufen, das Gateway startet ihn nicht. Antworten werden gepuffert, daher wird Streaming wie Server-Sent Events nicht unterstützt.
AbhängigkeitStandard-IndyArbeitet mit der Indy-Bibliothek, die mit RAD Studio ausgeliefert wird, kein sgcCustomIndy nötig. Windows und Linux.
Unit & DemosgcHTTP_GatewayAuf der Palettenseite SGC HTTP. Die Demo liegt in Demos\20.HTTP_Protocol\18.FastCGI_SCGI_Gateway.

Gemultiplexte Anfragen, HPACK, ALPN

TsgcHTTP2Client spricht HTTP/2 (RFC 9113) über eine einzige TLS-Verbindung, ausgehandelt per ALPN, weshalb es auf sgcCustomIndy aufbaut.

FähigkeitAPIHinweise
VerbindungHost, Port, ActiveEine TLS-Verbindung trägt jeden gemultiplexten Anfrage-Stream.
VerbindenConnect, ConnectAsyncÖffnet die Verbindung und stellt im selben Aufruf optional eine Anfrage.
LesenGet, GetAsyncSynchroner Aufruf oder Fire-and-Forget mit der Antwort per Ereignis.
SchreibenPost, PostAsync, Put, PutAsync, Patch, PatchAsyncAnfrage-Bodys sind Streams, Uploads müssen also nicht in den Speicher passen.
Delete & OptionsDelete, DeleteAsync, Options, OptionsAsyncDer Rest der HTTP-Verb-Menge, dieselbe synchrone/asynchrone Paarung.
AntwortenOnHTTP2ResponseLiefert das Anfrage- und das Antwortobjekt zusammen, einschließlich Response.DataString und Status.
Chunked BodiesOnHTTP2ResponseFragmentFeuert bei jedem Fragment einer chunked Antwort, noch vor dem abschließenden OnHTTP2Response.
Server PushOnHTTP2PushPromiseMacht per HTTP/2 vom Server gepushte Ressourcen sichtbar, sobald sie eintreffen.
Verbindungs-LebenszyklusOnHTTP2Connect, OnHTTP2Disconnect, OnHTTP2GoAway, OnHTTP2RSTStreamDie Connect-, Disconnect- und Stream-Reset-Signale, die HTTP/2 definiert.
SettingsHTTP2Options, SettingsDie lokalen HTTP/2-SETTINGS-Frame-Werte, die an die Gegenstelle gesendet werden.
ZuverlässigkeitWatchDog, HeartBeat, ThrottleAuto-Reconnect, Keep-Alive und Anfrage-Drosselung, geteilt mit dem übrigen sgc-HTTP-Stack.
Auth & TLSAuthentication, TLSOptions, OnHTTP2AuthorizationGängige Authentifizierungsschemata und TLS-Konfiguration, dazu ein Hook für benutzerdefinierte Authorization-Header.
AbhängigkeitsgcCustomIndyALPN handelt das h2-Protokoll während des TLS-Handshakes aus; die Standard-Indy-Bibliothek kann das nicht.

Unary, Server, Client und bidirektionales Streaming

TsgcGRPCClient trägt Protocol-Buffers-Payloads über die gemultiplexten Streams des HTTP/2-Clients, es deckt also alle vier gRPC-Aufrufformen ab.

FähigkeitAPIHinweise
TransportClientEine TsgcHTTP2Client-Instanz; der gRPC-Client reitet darauf, statt eine eigene Verbindung zu öffnen.
Unary-RPCCall, CallAsync, CallStringEine Anfrage, eine Antwort. Call blockiert und liefert eine TsgcGRPCResponse; CallAsync liefert sie über OnGRPCResponse.
Server-StreamingServerStreamingCallEine Anfrage, ein Antwort-Stream, geliefert über OnGRPCStreamMessage bis OnGRPCStreamEnd.
Client-StreamingOpenClientStream, SendStreamMessage, CloseClientStream, CloseClientStreamAsyncEin Anfrage-Stream, eine finale Antwort, wenn der Stream schließt.
Bidirektionales StreamingOpenBidiStream, SendBidiMessage, CloseBidiStreamBeide Seiten streamen unabhängig über denselben Aufruf.
AbbruchCancelCallBricht einen laufenden Aufruf über seine Stream-ID ab.
AntwortenOnGRPCResponse, OnGRPCStreamMessage, OnGRPCStreamEndTsgcGRPCResponse trägt StatusCode, Data/DataString, Headers und Trailers.
FehlerOnGRPCError, OnGRPCExceptiongRPC-Statuscode-Fehler und Transport-Ebene-Exceptions, getrennt geliefert.
MetadatenDefaultMetadata, OnGRPCBeforeRequestAufruf- und Standard-gRPC-Metadaten-Header.
ResilienzRetryPolicy, Interceptors, ServiceConfigRetry-Verhalten, eine übergreifende Interceptor-Kette und Service-Konfiguration, ohne einzelne Aufrufstellen anzufassen.
ObservabilityMetricsCollectorSammelt Aufruf-Metriken für den Client.
AbhängigkeitsgcCustomIndyVom HTTP/2-Client geerbt, auf dem er aufbaut; ALPN wird auf dieselbe Weise benötigt.

Pub/Sub, Calendar und Push-Benachrichtigungen

Drei reine Code-Klassen, authentifiziert mit einem Google-Service-Konto und über reines HTTPS erreicht. Keine davon braucht sgcCustomIndy.

FähigkeitAPIHinweise
AuthentifizierungGoogleCloudOptions.JWT, OnAuthToken, OnAuthTokenErrorService-Konto-JWT: Projekt-ID, Client-E-Mail und privater Schlüssel. Dieselbe Form über alle drei Clients hinweg.
Pub/Sub: Publish & PullPublish, Pull, Acknowledge, SeekTsgcHTTPGoogleCloud_PubSub_Client. Sende Nachrichten an ein Topic, hole ab und bestätige von einer Subscription.
Pub/Sub: TopicsCreateTopic, DeleteTopic, GetTopic, ListTopicsVerwalte Topics direkt aus dem Code.
Pub/Sub: SubscriptionsCreateSubscription, DeleteSubscripton, ListSubscriptions, ModifyAckDeadlineSubscriptionVollständiger Subscription-Lebenszyklus, einschließlich Ack-Deadline- und Push-Config-Änderungen.
Pub/Sub: SnapshotsCreateSnapshot, DeleteSnapshot, ListSnapshotsErstelle einen Snapshot des Bestätigungsstatus einer Subscription für spätere Wiederholung.
Calendar: KalenderNewCalendar, UpdateCalendar, DeleteCalendar, LoadCalendarsTsgcHTTPGoogleCloud_Calendar_Client. Umhüllt die Kalenderliste der Google Calendar API v3.
Calendar: EreignisseNewEvent, UpdateEvent, DeleteEvent, LoadEventsErstelle, ändere und entferne Ereignisse in einem gegebenen Kalender.
Calendar: SynchronisierungLoadCalendarsChanged, LoadEventsChanged, OnGetCalendar, OnGetCalendarEventInkrementelle Synchronisierungs-Hooks für Kalender und Ereignisse, die sich seit der letzten Synchronisierung geändert haben.
FCM: PushSendMessageTsgcHTTPGoogleCloud_FCM_Client. Ein Aufruf sendet eine Firebase-Cloud-Messaging-v1-Payload an ein Projekt.
TLS und LoggingTLSOptions, LogFileGeteilt über alle drei Google-Cloud-Clients.

APIs, Compiler und Zielplattformen

Öffentliche Standards auf der Leitung, und derselbe Quellcode über jeden unterstützten Compiler hinweg.

BereichDetail
HTTP-ServerHTTP-Anfragen und -Antworten, statische Dateien, Sitzungen und HTTPS über TsgcHTTPServer.
FastCGI / SCGIDie FastCGI-Responder-Rolle und SCGI über TCP, mit der nach RFC 3875 aufgebauten CGI-Umgebung, über TsgcHTTPGateway.
HTTP/2RFC 9113, mit HPACK-Header-Kompression und ALPN-Protokollaushandlung.
gRPCProtocol-Buffers-Payloads über HTTP/2-Streams, gemäß dem gRPC-Wire-Protokoll.
Google CloudDie Pub/Sub-REST-API, die Google Calendar API v3 und die Firebase Cloud Messaging HTTP v1 API, alle authentifiziert mit einem Google-Service-Konto.
PlattformenWindows Win32, Windows Win64, Linux64, macOS, iOS und Android für alle fünf Client-Klassen. Das FastCGI / SCGI Gateway läuft unter Windows und Linux.
AbhängigkeitDer HTTP/2- und der gRPC-Client brauchen sgcCustomIndy für ALPN. Die Google-Cloud-Clients brauchen nur die mitgelieferte Core Runtime. Das FastCGI / SCGI Gateway arbeitet mit der Standard-Indy-Bibliothek, die mit RAD Studio ausgeliefert wird, und braucht kein sgcCustomIndy.
CompilerDelphi und C++ Builder 7 bis 13.
EditionenHTTP/2, gRPC und das FastCGI / SCGI Gateway sind außerdem ab der Enterprise-Edition in sgcWebSockets enthalten, und die Google-Cloud-Clients ab Standard. Der HTTP-Server ist Teil der Core Runtime, daher enthält ihn auch jede sgcWebSockets-Edition.
LizenzierungEigenständig. Die sgcWebSockets Core Runtime ist mitgeliefert und der vollständige Quellcode ist enthalten.
Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Baue mit sgcHTTP

Lade die kostenlose Testversion herunter und veröffentliche deinen ersten HTTP-Endpunkt und mach deinen ersten HTTP/2- oder gRPC-Aufruf aus Delphi oder C++ Builder.