sgcHTTP Matryca funkcji

Wszystko, co robi sgcHTTP, rozpisane na serwer HTTP, bramę FastCGI / SCGI, klienta HTTP/2, klienta gRPC oraz trzy klienty Google Cloud. Każda funkcja działa tak samo w Delphi i C++ Builder, a każda licencja zawiera pełny kod źródłowy. Podstrony komponentów nie są jeszcze opublikowane przy tej premierze, każdy wpis poniżej jest samodzielny na tej stronie.

Serwer HTTP

Punkty końcowe, pliki statyczne, sesje, TLS

Brama FastCGI / SCGI

PHP i Python za Twoim serwerem

Klient HTTP/2

Multipleksowane strumienie, HPACK, ALPN

Klient gRPC

RPC unarne i strumieniowe

Google Cloud

Pub/Sub, Calendar i FCM

Standardy i platformy

Delphi od 7 do 13, C++ Builder

sgcHTTP jest samowystarczalny. Jest dostarczany z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core, więc nie jest dodatkiem. Serwer HTTP, TsgcHTTPServer, jest częścią tego środowiska.

HTTP/2 i gRPC potrzebują sgcCustomIndy. Obie klasy wymagają ALPN do negocjacji protokołu TLS, czego standardowa biblioteka Indy nie obsługuje, więc są zamiast tego zbudowane na sgcCustomIndy. Jest zawsze wliczony w twoje zamówienie, a wyświetlana cena sgcHTTP już go obejmuje. Trzy klienty Google Cloud to zwykłe HTTPS i go nie potrzebują. Nie potrzebuje go także brama FastCGI / SCGI, która działa ze standardowym Indy dostarczanym z RAD Studio.

Siedem klas, trzy moduły

Cztery komponenty na stronie palety SGC HTTP oraz trzy klasy Google Cloud dostępne wyłącznie z kodu. Serwer HTTP jest zadeklarowany w module sgcHTTP_Server dołączonego środowiska Core, brama FastCGI / SCGI w module sgcHTTP_Gateway, wszystko pozostałe w module sgcHTTP.

KomponentKlasaPaleta?Opis
Serwer HTTPTsgcHTTPServerTakSerwer HTTP: zdarzenia żądań, pliki statyczne z katalogu głównego dokumentów, kompresja, keep-alive, sesje, przesyłanie plików, TLS i uwierzytelnianie. Dostarczany ze środowiskiem Core.
Brama FastCGI / SCGITsgcHTTPGatewayTakPrzekazuje żądania odebrane przez serwer HTTP do serwerów aplikacji FastCGI i SCGI przez TCP, takich jak PHP-FPM lub serwer Python SCGI. Moduł sgcHTTP_Gateway. Standardowe Indy, sgcCustomIndy nie jest potrzebny.
Klient HTTP/2TsgcHTTP2ClientTakNatywny klient HTTP/2: multipleksowane strumienie, kompresja nagłówków HPACK, negocjacja ALPN. Wymaga sgcCustomIndy.
Klient gRPCTsgcGRPCClientTakKlient gRPC zbudowany na kliencie HTTP/2: RPC unarne, strumieniowane po stronie serwera, po stronie klienta i dwukierunkowe. Wymaga sgcCustomIndy.
Google Cloud Pub/SubTsgcHTTPGoogleCloud_PubSub_ClientNie, tylko kodAPI REST Google Cloud Pub/Sub: tematy, subskrypcje, migawki, publikowanie i pobieranie. Zwykłe HTTPS na Core.
Google Cloud CalendarTsgcHTTPGoogleCloud_Calendar_ClientNie, tylko kodGoogle Calendar API v3: kalendarze i wydarzenia, tworzenie, aktualizacja, listowanie, usuwanie. Zwykłe HTTPS na Core.
Google Cloud FCMTsgcHTTPGoogleCloud_FCM_ClientNie, tylko kodFirebase Cloud Messaging HTTP v1 API: wyślij ładunek powiadomienia push jednym wywołaniem. Zwykłe HTTPS na Core.

Punkty końcowe, pliki statyczne, sesje

TsgcHTTPServer publikuje punkty końcowe HTTP i pliki statyczne z twojej własnej aplikacji. To ten sam silnik co serwer WebSocket sgcWebSockets, bez części WebSocket, i jest dostarczany z dołączonym środowiskiem uruchomieniowym Core.

FunkcjaAPIUwagi
NasłuchiwaniePort, Bindings, ActiveUstaw port albo powiąż serwer z wybranymi adresami, a następnie aktywuj serwer.
ŻądaniaOnCommandGet, OnCommandOtherKażde żądanie trafia do twojego kodu wraz z obiektami żądania i odpowiedzi. OnCommandOther obsługuje metody takie jak PUT i DELETE.
Pliki statyczneDocumentRootZwraca pliki statyczne z folderu, na który go wskażesz.
KompresjaHTTPCompressionOpcje kompresji odpowiedzi.
PołączeniaKeepAlive, MaxConnectionsUtrzymuj połączenia otwarte między żądaniami i ogranicz, ile ich może być otwartych jednocześnie.
SesjeSessionState, AutoStartSession, SessionTimeOut, OnSessionStart, OnSessionEndSesje po stronie serwera z limitem czasu oraz zdarzeniami rozpoczęcia i zakończenia.
Limity żądańMaxRequestBodySizeOgranicza rozmiar treści żądania.
Przesyłanie plikówHTTPUploadFilesZapisuje przesłane pliki w wybranym przez ciebie katalogu.
TLSSSL, SSLOptionsObsługuj HTTPS z własnym certyfikatem.
UwierzytelnianieAuthentication, OnAuthenticationWeryfikuj dane logowania we własnym kodzie, zanim żądanie zostanie obsłużone.
WątkiThreadPool, ThreadPoolOptionsWykorzystuj ponownie wątki robocze z puli zamiast tworzyć jeden na połączenie.
ŚrodowiskosgcWebSockets CoreZadeklarowany w module sgcHTTP_Server dołączonego środowiska Core, na stronie palety SGC HTTP.

Aplikacje PHP i Python za Twoim serwerem

TsgcHTTPGateway przekazuje żądania odebrane przez TsgcHTTPServer lub TsgcWebSocketHTTPServer do serwerów aplikacji FastCGI i SCGI przez TCP. Pełni zadanie Apache mod_proxy_fcgi i mod_proxy_scgi albo nginx fastcgi_pass i scgi_pass, więc aplikacje PHP i Python są serwowane z Twojego serwera Delphi, bez Apache ani nginx z przodu.

MożliwośćAPIUwagi
BackendyFastCGI, SCGIPHP przez PHP-FPM lub php-cgi -b oraz aplikacje Python obsługiwane przez serwer SCGI lub FastCGI, na przykład flup.
ŻądaniaProcessWywołuj go ze zdarzeń serwera OnCommandGet i OnCommandOther. Zwraca true, gdy pasował handler i odpowiedź jest wypełniona, oraz false, gdy na żądanie odpowiada Twój własny kod.
HandleryHandlers.AddHandlers.Add('*.php', 'fcgi://127.0.0.1:9000') lub Handlers.Add('/app/', 'scgi://127.0.0.1:4000'). Handler dopasowuje się po rozszerzeniu (*.php), po prefiksie (/app/) lub po dokładnej ścieżce.
Ustawienia handleraPath, URL, Protocol, Host, Port, DocumentRoot, EnabledWskaż każdemu handlerowi jego backend jednym adresem URL albo protokołem, hostem i portem, oraz ustaw katalog główny dokumentów backendu.
Środowisko CGISCRIPT_NAME, PATH_INFO, SCRIPT_FILENAME, QUERY_STRING, REMOTE_ADDR, HTTPSBudowane zgodnie z RFC 3875, a każdy nagłówek żądania jest przekazywany jako zmienna HTTP_*.
Dodatkowe zmienneEnvironment, OnBeforeRequestDodawaj zmienne dla każdego handlera przez Environment albo dla każdego żądania w OnBeforeRequest.
OdpowiedziOdpowiedź CGIParsuje nagłówek Status, przekierowania Location, nagłówki odpowiedzi i treść. Wszystkie nagłówki Set-Cookie są zachowywane.
Błędy bramyOnError502 Bad Gateway, 503 Service Unavailable, gdy backend FastCGI jest przeciążony, oraz 504 Gateway Timeout, każdy zgłaszany w OnError.
Błędy backenduOnStdErrDostarcza dane stderr wysyłane przez backend FastCGI.
PołączeniaConnectTimeout, ReadTimeout, KeepAlive, MaxIdleConnectionsLimity czasu dla każdego handlera oraz opcjonalna pula połączeń keep-alive dla FastCGI (FCGI_KEEP_CONN), domyślnie wyłączona. SCGI otwiera jedno połączenie na żądanie.
Rola FastCGIResponderRola Responder FastCGI. Żądania nie są multipleksowane w jednym połączeniu.
BezpieczeństwoWbudowaneNagłówek żądania Proxy nigdy nie jest przekazywany jako HTTP_PROXY (httpoxy), ścieżki zawierające .. są odrzucane z kodem 403, a nagłówki z podkreśleniami w nazwie są ignorowane.
OgraniczeniaTCP, buforowanieObsługiwane są tylko backendy TCP, gniazda domeny Unix nie są jeszcze wspierane. Proces backendu musi już działać, brama go nie uruchamia. Odpowiedzi są buforowane, więc strumieniowanie, takie jak server-sent events, nie jest obsługiwane.
ZależnośćStandardowe IndyDziała z biblioteką Indy dostarczaną z RAD Studio, sgcCustomIndy nie jest potrzebny. Windows i Linux.
Moduł i demosgcHTTP_GatewayNa stronie palety SGC HTTP. Demo znajduje się w Demos.HTTP_Protocol8.FastCGI_SCGI_Gateway.

Multipleksowane żądania, HPACK, ALPN

TsgcHTTP2Client mówi w HTTP/2 (RFC 9113) przez jedno połączenie TLS, negocjowane przez ALPN, dlatego jest zbudowany na sgcCustomIndy.

MożliwośćAPIUwagi
PołączenieHost, Port, ActiveJedno połączenie TLS przenosi każdy multipleksowany strumień żądań.
Nawiązanie połączeniaConnect, ConnectAsyncOtwiera połączenie i opcjonalnie wysyła żądanie w tym samym wywołaniu.
OdczytGet, GetAsyncWywołanie synchroniczne albo fire-and-forget z odpowiedzią dostarczaną przez zdarzenie.
ZapisPost, PostAsync, Put, PutAsync, Patch, PatchAsyncTreści żądań to strumienie, więc przesyłane dane nie muszą mieścić się w pamięci.
Delete i OptionsDelete, DeleteAsync, Options, OptionsAsyncReszta zestawu czasowników HTTP, ten sam schemat synchroniczny/asynchroniczny.
OdpowiedziOnHTTP2ResponseDostarcza obiekty żądania i odpowiedzi razem, w tym Response.DataString i status.
Treści fragmentowane (chunked)OnHTTP2ResponseFragmentUruchamia się przy nadejściu każdego fragmentu odpowiedzi typu chunked, przed finalnym OnHTTP2Response.
Server pushOnHTTP2PushPromiseUjawnia zasoby wypychane przez serwer HTTP/2 (server push) w miarę ich nadejścia.
Cykl życia połączeniaOnHTTP2Connect, OnHTTP2Disconnect, OnHTTP2GoAway, OnHTTP2RSTStreamSygnały połączenia, rozłączenia i resetu strumienia zdefiniowane przez HTTP/2.
UstawieniaHTTP2Options, SettingsWartości lokalnej ramki SETTINGS protokołu HTTP/2 wysyłane do peera.
NiezawodnośćWatchDog, HeartBeat, ThrottleAutomatyczne ponowne łączenie, keep-alive i ograniczanie liczby żądań, wspólne z resztą stosu sgc HTTP.
Uwierzytelnianie i TLSAuthentication, TLSOptions, OnHTTP2AuthorizationStandardowe schematy uwierzytelniania i konfiguracja TLS, a także hak do niestandardowych nagłówków autoryzacji.
ZależnośćsgcCustomIndyALPN negocjuje protokół h2 podczas uzgadniania TLS; standardowa biblioteka Indy nie potrafi tego zrobić.

RPC unarne, strumieniowane po stronie serwera, klienta i dwukierunkowe

TsgcGRPCClient przenosi ładunki Protocol Buffers przez multipleksowane strumienie klienta HTTP/2, dzięki czemu obejmuje wszystkie cztery kształty wywołań gRPC.

MożliwośćAPIUwagi
TransportClientInstancja TsgcHTTP2Client; klient gRPC jeździ na niej, zamiast otwierać własne połączenie.
RPC unarneCall, CallAsync, CallStringJedno żądanie, jedna odpowiedź. Call blokuje i zwraca TsgcGRPCResponse; CallAsync dostarcza ją przez OnGRPCResponse.
Strumieniowanie po stronie serweraServerStreamingCallJedno żądanie, strumień odpowiedzi dostarczanych przez OnGRPCStreamMessage aż do OnGRPCStreamEnd.
Strumieniowanie po stronie klientaOpenClientStream, SendStreamMessage, CloseClientStream, CloseClientStreamAsyncStrumień żądań, jedna ostateczna odpowiedź po zamknięciu strumienia.
Strumieniowanie dwukierunkoweOpenBidiStream, SendBidiMessage, CloseBidiStreamObie strony strumieniują niezależnie w ramach tego samego wywołania.
AnulowanieCancelCallAnuluje trwające wywołanie po identyfikatorze jego strumienia.
OdpowiedziOnGRPCResponse, OnGRPCStreamMessage, OnGRPCStreamEndTsgcGRPCResponse niesie StatusCode, Data/DataString, Headers i Trailers.
BłędyOnGRPCError, OnGRPCExceptionBłędy kodu statusu gRPC i wyjątki na poziomie transportu, dostarczane osobno.
MetadaneDefaultMetadata, OnGRPCBeforeRequestNagłówki metadanych gRPC, domyślne i dla poszczególnych wywołań.
OdpornośćRetryPolicy, Interceptors, ServiceConfigZachowanie ponawiania, przekrojowy łańcuch przechwytywaczy (interceptorów) i konfiguracja usługi, bez dotykania poszczególnych miejsc wywołań.
ObserwowalnośćMetricsCollectorZbiera metryki wywołań dla klienta.
ZależnośćsgcCustomIndyOdziedziczona po kliencie HTTP/2, na którym jest zbudowany; ALPN jest wymagany w ten sam sposób.

Pub/Sub, Calendar i powiadomienia push

Trzy klasy dostępne wyłącznie z kodu, uwierzytelniane kontem usługi Google i osiągane przez zwykłe HTTPS. Żadna z nich nie potrzebuje sgcCustomIndy.

MożliwośćAPIUwagi
UwierzytelnianieGoogleCloudOptions.JWT, OnAuthToken, OnAuthTokenErrorJWT konta usługi: identyfikator projektu, adres e-mail klienta i klucz prywatny. Wspólny kształt dla wszystkich trzech klientów.
Pub/Sub: publikowanie i pobieraniePublish, Pull, Acknowledge, SeekTsgcHTTPGoogleCloud_PubSub_Client. Wysyłaj wiadomości do tematu, pobieraj i potwierdzaj z subskrypcji.
Pub/Sub: tematyCreateTopic, DeleteTopic, GetTopic, ListTopicsZarządzaj tematami bezpośrednio z kodu.
Pub/Sub: subskrypcjeCreateSubscription, DeleteSubscripton, ListSubscriptions, ModifyAckDeadlineSubscriptionPełny cykl życia subskrypcji, w tym zmiany terminu potwierdzenia i konfiguracji push.
Pub/Sub: migawkiCreateSnapshot, DeleteSnapshot, ListSnapshotsZrób migawkę stanu potwierdzeń subskrypcji do późniejszego odtworzenia.
Calendar: kalendarzeNewCalendar, UpdateCalendar, DeleteCalendar, LoadCalendarsTsgcHTTPGoogleCloud_Calendar_Client. Opakowuje listę kalendarzy Google Calendar API v3.
Calendar: wydarzeniaNewEvent, UpdateEvent, DeleteEvent, LoadEventsTwórz, zmieniaj i usuwaj wydarzenia w danym kalendarzu.
Calendar: synchronizacjaLoadCalendarsChanged, LoadEventsChanged, OnGetCalendar, OnGetCalendarEventHaki synchronizacji przyrostowej dla kalendarzy i wydarzeń zmienionych od ostatniej synchronizacji.
FCM: pushSendMessageTsgcHTTPGoogleCloud_FCM_Client. Jedno wywołanie wysyła ładunek Firebase Cloud Messaging v1 do projektu.
TLS i logowanieTLSOptions, LogFileWspólne dla wszystkich trzech klientów Google Cloud.

API, kompilatory i platformy docelowe

Oficjalne standardy na łączu i te same źródła we wszystkich obsługiwanych kompilatorach.

ObszarSzczegóły
Serwer HTTPŻądania i odpowiedzi HTTP, pliki statyczne, sesje oraz HTTPS przez TsgcHTTPServer.
FastCGI / SCGIRola Responder FastCGI i SCGI przez TCP, ze środowiskiem CGI budowanym zgodnie z RFC 3875, przez TsgcHTTPGateway.
HTTP/2RFC 9113, z kompresją nagłówków HPACK i negocjacją protokołu ALPN.
gRPCŁadunki Protocol Buffers przesyłane strumieniami HTTP/2, zgodnie z protokołem transmisji gRPC.
Google CloudAPI REST Pub/Sub, Google Calendar API v3 oraz Firebase Cloud Messaging HTTP v1 API, wszystkie uwierzytelniane kontem usługi Google.
PlatformyWindows Win32, Windows Win64, Linux64, macOS, iOS i Android dla wszystkich pięciu klas klienckich. Brama FastCGI / SCGI działa w systemach Windows i Linux.
ZależnośćKlient HTTP/2 i klient gRPC potrzebują sgcCustomIndy dla ALPN. Klienty Google Cloud potrzebują tylko dołączonego środowiska uruchomieniowego Core. Brama FastCGI / SCGI działa ze standardowym Indy dostarczanym z RAD Studio i nie potrzebuje sgcCustomIndy.
KompilatoryDelphi i C++ Builder od 7 do 13.
EdycjeHTTP/2, gRPC i brama FastCGI / SCGI są dostarczane także wewnątrz sgcWebSockets od edycji Enterprise wzwyż, a klienty Google Cloud od edycji Standard wzwyż. Serwer HTTP jest częścią środowiska uruchomieniowego Core, więc zawiera go także każda edycja sgcWebSockets.
LicencjonowanieProdukt samodzielny. Środowisko uruchomieniowe sgcWebSockets Core jest dołączone, a pełny kod źródłowy jest w zestawie.
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Twórz z sgcHTTP

Pobierz bezpłatną wersję próbną, opublikuj swój pierwszy punkt końcowy HTTP i wykonaj swoje pierwsze wywołanie HTTP/2 lub gRPC z Delphi lub C++ Builder.