sgcHTTP matrice des fonctionnalités

Tout ce que fait sgcHTTP, réparti sur le serveur HTTP, la passerelle FastCGI / SCGI, le client HTTP/2, le client gRPC et les trois clients Google Cloud. Chaque capacité fonctionne de la même façon en Delphi et en C++ Builder, et chaque licence est livrée avec le code source complet. Les sous-pages par composant ne sont pas encore publiées pour ce lancement, chaque entrée ci-dessous est autonome sur cette page.

Serveur HTTP

Points d'accès, fichiers statiques, sessions, TLS

Passerelle FastCGI / SCGI

PHP & Python derrière ton serveur

Client HTTP/2

Flux multiplexés, HPACK, ALPN

Client gRPC

RPC unaires et en streaming

Google Cloud

Pub/Sub, Calendar et FCM

Standards et plateformes

Delphi 7 à 13, C++ Builder

sgcHTTP est autonome. Il est livré avec le runtime sgcWebSockets Core inclus, ce n'est donc pas un complément. Le serveur HTTP, TsgcHTTPServer, fait partie de ce runtime.

HTTP/2 et gRPC ont besoin de sgcCustomIndy. Les deux classes exigent ALPN pour la négociation du protocole TLS, que la bibliothèque Indy standard ne prend pas en charge, elles sont donc bâties sur sgcCustomIndy à la place. Il est toujours inclus dans ta commande, et le prix sgcHTTP affiché le couvre déjà. Les trois clients Google Cloud sont en HTTPS pur et n'en ont pas besoin. La passerelle FastCGI / SCGI non plus, elle fonctionne avec l'Indy standard livré avec RAD Studio.

Sept classes, trois unités

Quatre composants sur la page de palette SGC HTTP et trois classes pur code Google Cloud. Le serveur HTTP est déclaré dans l'unité sgcHTTP_Server du runtime Core inclus, la passerelle FastCGI / SCGI dans l'unité sgcHTTP_Gateway, tout le reste dans l'unité sgcHTTP.

ComposantClassePalette ?Description
Serveur HTTPTsgcHTTPServerOuiServeur HTTP : événements de requête, fichiers statiques depuis une racine de documents, compression, keep-alive, sessions, uploads, TLS et authentification. Livré avec le runtime Core.
Passerelle FastCGI / SCGITsgcHTTPGatewayOuiTransmet les requêtes reçues par le serveur HTTP à des serveurs d'applications FastCGI et SCGI via TCP, comme PHP-FPM ou un serveur Python SCGI. Unité sgcHTTP_Gateway. Indy standard, sans sgcCustomIndy.
Client HTTP/2TsgcHTTP2ClientOuiClient HTTP/2 natif : flux multiplexés, compression d'en-têtes HPACK, négociation ALPN. Nécessite sgcCustomIndy.
Client gRPCTsgcGRPCClientOuiClient gRPC bâti sur le client HTTP/2 : RPC unaires, en streaming serveur, en streaming client et bidirectionnels. Nécessite sgcCustomIndy.
Google Cloud Pub/SubTsgcHTTPGoogleCloud_PubSub_ClientNon, pur codeAPI REST Google Cloud Pub/Sub : sujets, abonnements, instantanés, publication et récupération. HTTPS pur sur le Core.
Google Cloud CalendarTsgcHTTPGoogleCloud_Calendar_ClientNon, pur codeAPI Google Calendar v3 : agendas et événements, création, modification, liste, suppression. HTTPS pur sur le Core.
Google Cloud FCMTsgcHTTPGoogleCloud_FCM_ClientNon, pur codeAPI HTTP v1 Firebase Cloud Messaging : envoie une charge utile de notification push en un seul appel. HTTPS pur sur le Core.

Points d'accès, fichiers statiques, sessions

TsgcHTTPServer publie des points d'accès HTTP et des fichiers statiques depuis ta propre application. C'est le même moteur que le serveur WebSocket de sgcWebSockets, sans la partie WebSocket, et il est livré avec le runtime Core inclus.

CapacitéAPINotes
ÉcoutePort, Bindings, ActiveRègle le port, ou lie des adresses précises, puis active le serveur.
RequêtesOnCommandGet, OnCommandOtherChaque requête arrive dans ton code avec ses objets de requête et de réponse. OnCommandOther couvre les verbes comme PUT et DELETE.
Fichiers statiquesDocumentRootRenvoie les fichiers statiques du dossier vers lequel tu le pointes.
CompressionHTTPCompressionOptions de compression des réponses.
ConnexionsKeepAlive, MaxConnectionsGarde les connexions ouvertes entre les requêtes, et plafonne le nombre de connexions ouvertes en même temps.
SessionsSessionState, AutoStartSession, SessionTimeOut, OnSessionStart, OnSessionEndSessions côté serveur avec un délai d'expiration, plus des événements de début et de fin.
Limites de requêteMaxRequestBodySizePlafonne la taille d'un corps de requête.
UploadsHTTPUploadFilesEnregistre les fichiers uploadés dans un répertoire de ton choix.
TLSSSL, SSLOptionsSers du HTTPS avec ton propre certificat.
AuthentificationAuthentication, OnAuthenticationValide les identifiants dans ton propre code avant qu'une requête soit servie.
ThreadsThreadPool, ThreadPoolOptionsRéutilise les threads de travail d'un pool au lieu d'en créer un par connexion.
RuntimesgcWebSockets CoreDéclaré dans l'unité sgcHTTP_Server du runtime Core inclus, sur la page de palette SGC HTTP.

Des applications PHP et Python derrière ton serveur

TsgcHTTPGateway transmet les requêtes reçues par TsgcHTTPServer ou TsgcWebSocketHTTPServer à des serveurs d'applications FastCGI et SCGI via TCP. Il fait le travail d'Apache mod_proxy_fcgi et mod_proxy_scgi ou de nginx fastcgi_pass et scgi_pass, si bien que les applications PHP et Python sont servies depuis ton serveur Delphi, sans Apache ni nginx devant.

CapacitéAPINotes
BackendsFastCGI, SCGIPHP avec PHP-FPM ou php-cgi -b, et applications Python servies par un serveur SCGI ou FastCGI, par exemple flup.
RequêtesProcessAppelle-le depuis les événements OnCommandGet et OnCommandOther du serveur. Il renvoie true quand un handler correspond et que la réponse est remplie, et false quand ton propre code répond à la requête.
HandlersHandlers.AddHandlers.Add('*.php', 'fcgi://127.0.0.1:9000') ou Handlers.Add('/app/', 'scgi://127.0.0.1:4000'). Un handler correspond par extension (*.php), par préfixe (/app/) ou par chemin exact.
Réglages du handlerPath, URL, Protocol, Host, Port, DocumentRoot, EnabledOriente chaque handler vers son backend avec une seule URL, ou avec protocole, hôte et port, et règle la racine de documents du backend.
Environnement CGISCRIPT_NAME, PATH_INFO, SCRIPT_FILENAME, QUERY_STRING, REMOTE_ADDR, HTTPSConstruit selon RFC 3875, chaque en-tête de requête étant transmis comme variable HTTP_*.
Variables supplémentairesEnvironment, OnBeforeRequestAjoute des variables par handler via Environment, ou par requête dans OnBeforeRequest.
RéponsesRéponse CGIAnalyse l'en-tête Status, les redirections Location, les en-têtes de réponse et le corps. Plusieurs en-têtes Set-Cookie sont tous conservés.
Erreurs de passerelleOnError502 Bad Gateway, 503 Service Unavailable quand le backend FastCGI est surchargé, et 504 Gateway Timeout, chacune signalée dans OnError.
Erreurs du backendOnStdErrLivre la sortie stderr envoyée par le backend FastCGI.
ConnexionsConnectTimeout, ReadTimeout, KeepAlive, MaxIdleConnectionsDélais par handler, plus un pool de connexions keep-alive optionnel pour FastCGI (FCGI_KEEP_CONN), désactivé par défaut. SCGI ouvre une connexion par requête.
Rôle FastCGIResponderLe rôle FastCGI Responder. Les requêtes ne sont pas multiplexées sur une connexion.
SécuritéIntégréeUn en-tête de requête Proxy n'est jamais transmis comme HTTP_PROXY (httpoxy), les chemins contenant .. sont rejetés avec 403, et les noms d'en-têtes avec des underscores sont ignorés.
LimitesTCP, tamponnéBackends TCP uniquement, les sockets de domaine Unix ne sont pas encore pris en charge. Le processus backend doit déjà tourner, la passerelle ne le lance pas. Les réponses sont mises en tampon, le streaming comme les server-sent events n'est donc pas pris en charge.
DépendanceIndy standardFonctionne avec la bibliothèque Indy livrée avec RAD Studio, sans sgcCustomIndy. Windows et Linux.
Unité & démosgcHTTP_GatewaySur la page de palette SGC HTTP. La démo se trouve dans Demos\20.HTTP_Protocol\18.FastCGI_SCGI_Gateway.

Requêtes multiplexées, HPACK, ALPN

TsgcHTTP2Client parle HTTP/2 (RFC 9113) sur une seule connexion TLS, négociée avec ALPN, c'est pourquoi il est bâti sur sgcCustomIndy.

CapacitéAPINotes
ConnexionHost, Port, ActiveUne seule connexion TLS porte chaque flux de requête multiplexé.
Connexion initialeConnect, ConnectAsyncOuvre la connexion et émet une requête optionnelle dans le même appel.
LectureGet, GetAsyncAppel synchrone ou tir-et-oublie avec la réponse délivrée par événement.
ÉcriturePost, PostAsync, Put, PutAsync, Patch, PatchAsyncLes corps de requête sont des flux, les envois n'ont donc pas à tenir en mémoire.
Delete et OptionsDelete, DeleteAsync, Options, OptionsAsyncLe reste du jeu de verbes HTTP, avec la même paire synchrone/async.
RéponsesOnHTTP2ResponseDélivre ensemble les objets requête et réponse, y compris Response.DataString et le statut.
Corps fragmentésOnHTTP2ResponseFragmentSe déclenche à l'arrivée de chaque fragment d'une réponse fragmentée, avant l'OnHTTP2Response final.
Push serveurOnHTTP2PushPromiseExpose les ressources poussées par le serveur HTTP/2 à leur arrivée.
Cycle de vie de la connexionOnHTTP2Connect, OnHTTP2Disconnect, OnHTTP2GoAway, OnHTTP2RSTStreamLes signaux de connexion, déconnexion et réinitialisation de flux définis par HTTP/2.
RéglagesHTTP2Options, SettingsLes valeurs de la trame SETTINGS HTTP/2 locale envoyées au pair.
FiabilitéWatchDog, HeartBeat, ThrottleReconnexion automatique, maintien de connexion et limitation de débit, partagés avec le reste de la pile HTTP sgc.
Authentification et TLSAuthentication, TLSOptions, OnHTTP2AuthorizationSchémas d'authentification standards et configuration TLS, plus un point d'accroche pour des en-têtes d'autorisation personnalisés.
DépendancesgcCustomIndyALPN négocie le protocole h2 pendant la poignée de main TLS ; la bibliothèque Indy standard ne peut pas le faire.

Streaming unaire, serveur, client et bidirectionnel

TsgcGRPCClient transporte des charges utiles Protocol Buffers sur les flux multiplexés du client HTTP/2, il couvre donc les quatre formes d'appel gRPC.

CapacitéAPINotes
TransportClientUne instance TsgcHTTP2Client ; le client gRPC repose dessus plutôt que d'ouvrir sa propre connexion.
RPC unaireCall, CallAsync, CallStringUne requête, une réponse. Call bloque et renvoie un TsgcGRPCResponse ; CallAsync la délivre via OnGRPCResponse.
Streaming serveurServerStreamingCallUne requête, un flux de réponses délivrées via OnGRPCStreamMessage jusqu'à OnGRPCStreamEnd.
Streaming clientOpenClientStream, SendStreamMessage, CloseClientStream, CloseClientStreamAsyncUn flux de requêtes, une réponse finale à la fermeture du flux.
Streaming bidirectionnelOpenBidiStream, SendBidiMessage, CloseBidiStreamLes deux côtés diffusent indépendamment sur le même appel.
AnnulationCancelCallAnnule un appel en cours par son identifiant de flux.
RéponsesOnGRPCResponse, OnGRPCStreamMessage, OnGRPCStreamEndTsgcGRPCResponse porte StatusCode, Data/DataString, Headers et Trailers.
ErreursOnGRPCError, OnGRPCExceptionErreurs de code de statut gRPC et exceptions de niveau transport, délivrées séparément.
MétadonnéesDefaultMetadata, OnGRPCBeforeRequestEn-têtes de métadonnées gRPC par appel et par défaut.
RésilienceRetryPolicy, Interceptors, ServiceConfigComportement de réessai, chaîne d'intercepteurs transversale et configuration de service, sans toucher aux points d'appel individuels.
ObservabilitéMetricsCollectorCollecte les métriques d'appel du client.
DépendancesgcCustomIndyHéritée du client HTTP/2 sur lequel il est bâti ; ALPN est requis de la même façon.

Pub/Sub, Calendar et notifications push

Trois classes pur code, authentifiées avec un compte de service Google et atteintes en HTTPS pur. Aucune n'a besoin de sgcCustomIndy.

CapacitéAPINotes
AuthentificationGoogleCloudOptions.JWT, OnAuthToken, OnAuthTokenErrorJWT de compte de service : id de projet, e-mail client et clé privée. Forme partagée par les trois clients.
Pub/Sub : publier et récupérerPublish, Pull, Acknowledge, SeekTsgcHTTPGoogleCloud_PubSub_Client. Envoie des messages vers un sujet, récupère et accuse réception depuis un abonnement.
Pub/Sub : sujetsCreateTopic, DeleteTopic, GetTopic, ListTopicsGère les sujets directement depuis le code.
Pub/Sub : abonnementsCreateSubscription, DeleteSubscripton, ListSubscriptions, ModifyAckDeadlineSubscriptionCycle de vie complet de l'abonnement, y compris les changements de délai d'accusé de réception et de configuration push.
Pub/Sub : instantanésCreateSnapshot, DeleteSnapshot, ListSnapshotsCapture l'état d'accusé de réception d'un abonnement pour une relecture ultérieure.
Calendar : agendasNewCalendar, UpdateCalendar, DeleteCalendar, LoadCalendarsTsgcHTTPGoogleCloud_Calendar_Client. Encapsule la liste d'agendas de l'API Google Calendar v3.
Calendar : événementsNewEvent, UpdateEvent, DeleteEvent, LoadEventsCrée, modifie et supprime des événements sur un agenda donné.
Calendar : synchronisationLoadCalendarsChanged, LoadEventsChanged, OnGetCalendar, OnGetCalendarEventPoints d'accroche de synchronisation incrémentale pour les agendas et événements modifiés depuis la dernière synchronisation.
FCM : pushSendMessageTsgcHTTPGoogleCloud_FCM_Client. Un seul appel envoie une charge utile Firebase Cloud Messaging v1 à un projet.
TLS et journalisationTLSOptions, LogFilePartagés par les trois clients Google Cloud.

API, compilateurs et cibles

Des standards publics sur le fil, et le même source sur chaque compilateur pris en charge.

DomaineDétail
Serveur HTTPRequêtes et réponses HTTP, fichiers statiques, sessions et HTTPS avec TsgcHTTPServer.
FastCGI / SCGILe rôle FastCGI Responder et SCGI via TCP, avec l'environnement CGI construit selon RFC 3875, avec TsgcHTTPGateway.
HTTP/2RFC 9113, avec compression d'en-têtes HPACK et négociation de protocole ALPN.
gRPCCharges utiles Protocol Buffers sur des flux HTTP/2, selon le protocole de câble gRPC.
Google CloudL'API REST Pub/Sub, l'API Google Calendar v3, et l'API HTTP v1 Firebase Cloud Messaging, toutes authentifiées avec un compte de service Google.
PlateformesWindows Win32, Windows Win64, Linux64, macOS, iOS et Android pour les cinq classes clientes. La passerelle FastCGI / SCGI fonctionne sous Windows et Linux.
DépendanceLes clients HTTP/2 et gRPC ont besoin de sgcCustomIndy pour ALPN. Les clients Google Cloud n'ont besoin que du runtime Core inclus. La passerelle FastCGI / SCGI fonctionne avec l'Indy standard livré avec RAD Studio et n'a pas besoin de sgcCustomIndy.
CompilateursDelphi et C++ Builder 7 à 13.
ÉditionsHTTP/2, gRPC et la passerelle FastCGI / SCGI sont aussi livrés dans sgcWebSockets à partir d'Enterprise, et les clients Google Cloud à partir de Standard. Le serveur HTTP fait partie du runtime Core, toutes les éditions de sgcWebSockets l'incluent donc aussi.
LicenceAutonome. Le runtime sgcWebSockets Core est inclus et le code source complet est fourni.
Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

Construis avec sgcHTTP

Télécharge l'essai gratuit, publie ton premier point d'accès HTTP et effectue ton premier appel HTTP/2 ou gRPC depuis Delphi ou C++ Builder.