sgcHTTP Özellik Matrisi

sgcHTTP'nin yaptığı her şey; HTTP sunucusu, FastCGI / SCGI ağ geçidi, HTTP/2 istemcisi, gRPC istemcisi ve üç Google Cloud istemcisi üzerinden eşlenmiş. Her yetenek Delphi ve C++ Builder'da aynı şekilde çalışır ve her lisans tam kaynak koduyla gelir. Bu lansman için bileşen alt sayfaları henüz yayımlanmadı, aşağıdaki her giriş bu sayfada kendi kendine yeterlidir.

HTTP Sunucusu

Uç noktalar, statik dosyalar, oturumlar, TLS

FastCGI / SCGI Ağ Geçidi

PHP ve Python sunucunuzun arkasında

HTTP/2 İstemcisi

Çoğullanmış akışlar, HPACK, ALPN

gRPC İstemcisi

Unary & akış tabanlı RPC

Google Cloud

Pub/Sub, Calendar & FCM

Standartlar & Platformlar

Delphi 7'den 13'e, C++ Builder

sgcHTTP kendi kendine yeterlidir. sgcWebSockets Core çalışma zamanı pakete dahil olarak gelir, bu yüzden bir eklenti değildir. HTTP sunucusu, TsgcHTTPServer, bu çalışma zamanının bir parçasıdır.

HTTP/2 ve gRPC, sgcCustomIndy gerektirir. Her iki sınıf da TLS protokol müzakeresi için ALPN gerektirir; standart Indy kitaplığı bunu desteklemez, bu yüzden bunun yerine sgcCustomIndy üzerine kuruludur. Siparişinize her zaman dahildir ve gösterilen sgcHTTP fiyatı bunu zaten kapsar. Üç Google Cloud istemcisi düz HTTPS'tir ve buna ihtiyaç duymaz. RAD Studio ile birlikte gelen standart Indy ile çalışan FastCGI / SCGI ağ geçidi de duymaz.

Yedi Sınıf, Üç Birim

SGC HTTP palet sayfasında dört bileşen ve üç kod-yalnızca Google Cloud sınıfı. HTTP sunucusu, pakete dahil Core çalışma zamanının sgcHTTP_Server biriminde, FastCGI / SCGI ağ geçidi sgcHTTP_Gateway biriminde, diğer her şey sgcHTTP biriminde tanımlanmıştır.

BileşenSınıfPalette mi?Açıklama
HTTP SunucusuTsgcHTTPServerEvetHTTP sunucusu: istek olayları, belge kök dizininden statik dosyalar, sıkıştırma, keep-alive, oturumlar, yüklemeler, TLS ve kimlik doğrulama. Core çalışma zamanıyla birlikte gelir.
FastCGI / SCGI Ağ GeçidiTsgcHTTPGatewayEvetHTTP sunucusunun aldığı istekleri TCP üzerinden PHP-FPM veya bir Python SCGI sunucusu gibi FastCGI ve SCGI uygulama sunucularına iletir. sgcHTTP_Gateway birimi. Standart Indy, sgcCustomIndy gerekmez.
HTTP/2 İstemcisiTsgcHTTP2ClientEvetYerel HTTP/2 istemcisi: çoğullanmış akışlar, HPACK başlık sıkıştırması, ALPN müzakeresi. sgcCustomIndy'ye ihtiyaç duyar.
gRPC İstemcisiTsgcGRPCClientEvetHTTP/2 istemcisi üzerine kurulu gRPC istemcisi: unary, sunucu akışlı, istemci akışlı ve çift yönlü akışlı RPC. sgcCustomIndy'ye ihtiyaç duyar.
Google Cloud Pub/SubTsgcHTTPGoogleCloud_PubSub_ClientHayır, kod-yalnızcaGoogle Cloud Pub/Sub REST API'si: konular, abonelikler, anlık görüntüler, yayınlama ve çekme. Core üzerinde düz HTTPS.
Google Cloud CalendarTsgcHTTPGoogleCloud_Calendar_ClientHayır, kod-yalnızcaGoogle Calendar API v3: takvimler ve etkinlikler, oluşturma, güncelleme, listeleme, silme. Core üzerinde düz HTTPS.
Google Cloud FCMTsgcHTTPGoogleCloud_FCM_ClientHayır, kod-yalnızcaFirebase Cloud Messaging HTTP v1 API'si: tek bir çağrıyla bir push bildirim yükü gönderin. Core üzerinde düz HTTPS.

Uç Noktalar, Statik Dosyalar, Oturumlar

TsgcHTTPServer, HTTP uç noktalarını ve statik dosyaları kendi uygulamanızdan yayımlar. sgcWebSockets WebSocket sunucusuyla aynı motordur, yalnızca WebSocket kısmı yoktur ve pakete dahil Core çalışma zamanıyla birlikte gelir.

YetenekAPINotlar
DinlemePort, Bindings, ActivePortu ayarlayın ya da belirli adreslere bağlanın, ardından sunucuyu etkinleştirin.
İsteklerOnCommandGet, OnCommandOtherHer istek, istek ve yanıt nesneleriyle birlikte kodunuza ulaşır. OnCommandOther, PUT ve DELETE gibi fiilleri kapsar.
Statik dosyalarDocumentRootGösterdiğiniz klasördeki statik dosyaları döndürür.
SıkıştırmaHTTPCompressionYanıt sıkıştırma seçenekleri.
BağlantılarKeepAlive, MaxConnectionsBağlantıları istekler arasında açık tutun ve aynı anda kaç tanesinin açık olacağını sınırlayın.
OturumlarSessionState, AutoStartSession, SessionTimeOut, OnSessionStart, OnSessionEndZaman aşımlı sunucu tarafı oturumlar, ayrıca başlangıç ve bitiş olayları.
İstek sınırlarıMaxRequestBodySizeİstek gövdesinin boyutunu sınırlar.
YüklemelerHTTPUploadFilesYüklenen dosyaları seçtiğiniz bir dizine kaydeder.
TLSSSL, SSLOptionsKendi sertifikanızla HTTPS sunun.
Kimlik doğrulamaAuthentication, OnAuthenticationBir istek sunulmadan önce kimlik bilgilerini kendi kodunuzda doğrulayın.
İş parçacıklarıThreadPool, ThreadPoolOptionsHer bağlantı için yeni bir iş parçacığı oluşturmak yerine havuzdaki çalışan iş parçacıklarını yeniden kullanın.
Çalışma zamanısgcWebSockets CorePakete dahil Core çalışma zamanının sgcHTTP_Server biriminde, SGC HTTP palet sayfasında tanımlanmıştır.

PHP ve Python Uygulamaları Sunucunuzun Arkasında

TsgcHTTPGateway, TsgcHTTPServer veya TsgcWebSocketHTTPServer tarafından alınan istekleri TCP üzerinden FastCGI ve SCGI uygulama sunucularına iletir. Apache mod_proxy_fcgi ve mod_proxy_scgi ya da nginx fastcgi_pass ve scgi_pass işini yapar, böylece PHP ve Python uygulamaları, önünde Apache veya nginx olmadan Delphi sunucunuzdan sunulur.

YetenekAPINotlar
Arka uçlarFastCGI, SCGIPHP-FPM veya php-cgi -b üzerinden PHP ve bir SCGI ya da FastCGI sunucusunun, örneğin flup'un, sunduğu Python uygulamaları.
İsteklerProcessSunucunun OnCommandGet ve OnCommandOther olaylarından çağırın. Bir işleyici eşleşip yanıt doldurulduğunda true, isteğe kendi kodunuz yanıt verdiğinde false döndürür.
İşleyicilerHandlers.AddHandlers.Add('*.php', 'fcgi://127.0.0.1:9000') veya Handlers.Add('/app/', 'scgi://127.0.0.1:4000'). Bir işleyici uzantıya (*.php), öneke (/app/) veya tam yola göre eşleşir.
İşleyici ayarlarıPath, URL, Protocol, Host, Port, DocumentRoot, EnabledHer işleyiciyi arka ucuna tek bir URL ile ya da protokol, ana makine ve port ile yönlendirin ve arka ucun belge kök dizinini ayarlayın.
CGI ortamıSCRIPT_NAME, PATH_INFO, SCRIPT_FILENAME, QUERY_STRING, REMOTE_ADDR, HTTPSRFC 3875'e göre oluşturulur ve her istek başlığı bir HTTP_* değişkeni olarak iletilir.
Ek değişkenlerEnvironment, OnBeforeRequestDeğişkenleri işleyici başına Environment ile ya da istek başına OnBeforeRequest içinde ekleyin.
YanıtlarCGI yanıtıStatus başlığını, Location yönlendirmelerini, yanıt başlıklarını ve gövdeyi ayrıştırır. Birden çok Set-Cookie başlığının hepsi korunur.
Ağ geçidi hatalarıOnError502 Bad Gateway, FastCGI arka ucu aşırı yüklendiğinde 503 Service Unavailable ve 504 Gateway Timeout, her biri OnError içinde bildirilir.
Arka uç hatalarıOnStdErrFastCGI arka ucunun gönderdiği stderr çıktısını iletir.
BağlantılarConnectTimeout, ReadTimeout, KeepAlive, MaxIdleConnectionsİşleyici başına zaman aşımları ve FastCGI için isteğe bağlı bir keep-alive bağlantı havuzu (FCGI_KEEP_CONN), varsayılan olarak kapalıdır. SCGI her istek için bir bağlantı açar.
FastCGI rolüResponderFastCGI Responder rolü. İstekler bir bağlantı üzerinde çoğullanmaz.
GüvenlikYerleşikBir Proxy istek başlığı asla HTTP_PROXY olarak iletilmez (httpoxy), .. içeren yollar 403 ile reddedilir ve adında alt çizgi bulunan başlıklar yok sayılır.
SınırlamalarTCP, arabelleğe alınmışYalnızca TCP arka uçları desteklenir, Unix etki alanı soketleri henüz desteklenmez. Arka uç süreci zaten çalışıyor olmalıdır, ağ geçidi onu başlatmaz. Yanıtlar arabelleğe alınır, bu yüzden server-sent events gibi akış desteklenmez.
BağımlılıkStandart IndyRAD Studio ile birlikte gelen Indy kitaplığıyla çalışır, sgcCustomIndy gerekmez. Windows ve Linux.
Birim ve demosgcHTTP_GatewaySGC HTTP palet sayfasında. Demo Demos.HTTP_Protocol8.FastCGI_SCGI_Gateway içindedir.

Çoğullanmış İstekler, HPACK, ALPN

TsgcHTTP2Client, ALPN ile müzakere edilen tek bir TLS bağlantısı üzerinden HTTP/2 (RFC 9113) konuşur; bu yüzden sgcCustomIndy üzerine kuruludur.

YetenekAPINotlar
BağlantıHost, Port, ActiveTek bir TLS bağlantısı, her çoğullanmış istek akışını taşır.
BağlanConnect, ConnectAsyncBağlantıyı açar ve aynı çağrıda isteğe bağlı bir istek gönderir.
OkuGet, GetAsyncEşzamanlı çağrı ya da yanıtın bir olayla teslim edildiği gönder-ve-unut.
YazPost, PostAsync, Put, PutAsync, Patch, PatchAsyncİstek gövdeleri akışlardır, bu yüzden yüklemelerin belleğe sığması gerekmez.
Delete & OptionsDelete, DeleteAsync, Options, OptionsAsyncHTTP fiil kümesinin geri kalanı, aynı eşzamanlı/async eşleşmesiyle.
YanıtlarOnHTTP2Responseİstek ve yanıt nesnelerini birlikte teslim eder; Response.DataString ve durum dahil.
Parçalı gövdelerOnHTTP2ResponseFragmentParçalı bir yanıtın her parçası geldiğinde, nihai OnHTTP2Response'tan önce tetiklenir.
Sunucu pushOnHTTP2PushPromiseHTTP/2 sunucu tarafından push edilen kaynakları geldikçe açığa çıkarır.
Bağlantı yaşam döngüsüOnHTTP2Connect, OnHTTP2Disconnect, OnHTTP2GoAway, OnHTTP2RSTStreamHTTP/2'nin tanımladığı bağlan, bağlantıyı kes ve akış sıfırlama sinyalleri.
AyarlarHTTP2Options, SettingsKarşı tarafa gönderilen yerel HTTP/2 SETTINGS çerçevesi değerleri.
GüvenilirlikWatchDog, HeartBeat, ThrottleOtomatik yeniden bağlanma, keep-alive ve istek kısıtlama; sgc HTTP yığınının geri kalanıyla paylaşılır.
Kimlik doğrulama & TLSAuthentication, TLSOptions, OnHTTP2AuthorizationStandart kimlik doğrulama şemaları ve TLS yapılandırması, artı özel yetkilendirme başlıkları için bir kanca.
BağımlılıksgcCustomIndyALPN, TLS el sıkışması sırasında h2 protokolünü müzakere eder; standart Indy kitaplığı bunu yapamaz.

Unary, Sunucu, İstemci ve Çift Yönlü Akış

TsgcGRPCClient, Protocol Buffers yüklerini HTTP/2 istemcisinin çoğullanmış akışları üzerinden taşır; bu yüzden dört gRPC çağrı biçiminin tümünü kapsar.

YetenekAPINotlar
TaşımaClientBir TsgcHTTP2Client örneği; gRPC istemcisi kendi bağlantısını açmak yerine bunun üzerinde ilerler.
Unary RPCCall, CallAsync, CallStringBir istek, bir yanıt. Call bloklar ve bir TsgcGRPCResponse döndürür; CallAsync bunu OnGRPCResponse üzerinden teslim eder.
Sunucu akışıServerStreamingCallBir istek, OnGRPCStreamMessage üzerinden OnGRPCStreamEnd'e kadar teslim edilen bir yanıt akışı.
İstemci akışıOpenClientStream, SendStreamMessage, CloseClientStream, CloseClientStreamAsyncBir istek akışı, akış kapandığında tek bir nihai yanıt.
Çift yönlü akışOpenBidiStream, SendBidiMessage, CloseBidiStreamHer iki taraf da aynı çağrı üzerinden bağımsız olarak akış yapar.
İptalCancelCallDevam eden bir çağrıyı akış kimliğine göre iptal eder.
YanıtlarOnGRPCResponse, OnGRPCStreamMessage, OnGRPCStreamEndTsgcGRPCResponse, StatusCode, Data/DataString, Headers ve Trailers taşır.
HatalarOnGRPCError, OnGRPCExceptiongRPC durum kodu hataları ve taşıma düzeyi istisnaları, ayrı olarak teslim edilir.
Meta veriDefaultMetadata, OnGRPCBeforeRequestÇağrı başına ve varsayılan gRPC meta veri başlıkları.
DayanıklılıkRetryPolicy, Interceptors, ServiceConfigTekil çağrı noktalarına dokunmadan yeniden deneme davranışı, çapraz kesen bir interceptor zinciri ve hizmet yapılandırması.
GözlemlenebilirlikMetricsCollectorİstemci için çağrı metriklerini toplar.
BağımlılıksgcCustomIndyÜzerine kurulu olduğu HTTP/2 istemcisinden devralınır; ALPN aynı şekilde gereklidir.

Pub/Sub, Calendar ve Push Bildirimleri

Bir Google servis hesabıyla kimlik doğrulayan ve düz HTTPS üzerinden ulaşılan üç kod-yalnızca sınıf. Hiçbiri sgcCustomIndy'ye ihtiyaç duymaz.

YetenekAPINotlar
Kimlik doğrulamaGoogleCloudOptions.JWT, OnAuthToken, OnAuthTokenErrorServis hesabı JWT'si: proje kimliği, istemci e-postası ve özel anahtar. Üç istemcide de paylaşılan şekil.
Pub/Sub: yayınlama & çekmePublish, Pull, Acknowledge, SeekTsgcHTTPGoogleCloud_PubSub_Client. Bir konuya mesaj gönderin, bir abonelikten çekin ve onaylayın.
Pub/Sub: konularCreateTopic, DeleteTopic, GetTopic, ListTopicsKonuları doğrudan koddan yönetin.
Pub/Sub: aboneliklerCreateSubscription, DeleteSubscripton, ListSubscriptions, ModifyAckDeadlineSubscriptionOnay süresi ve push yapılandırması değişiklikleri dahil, tam abonelik yaşam döngüsü.
Pub/Sub: anlık görüntülerCreateSnapshot, DeleteSnapshot, ListSnapshotsSonradan yeniden oynatmak üzere bir aboneliğin onay durumunun anlık görüntüsünü alın.
Calendar: takvimlerNewCalendar, UpdateCalendar, DeleteCalendar, LoadCalendarsTsgcHTTPGoogleCloud_Calendar_Client. Google Calendar API v3 takvim listesini sarmalar.
Calendar: etkinliklerNewEvent, UpdateEvent, DeleteEvent, LoadEventsBelirli bir takvimde etkinlik oluşturun, değiştirin ve kaldırın.
Calendar: senkronizasyonLoadCalendarsChanged, LoadEventsChanged, OnGetCalendar, OnGetCalendarEventSon senkronizasyondan bu yana değişen takvimler ve etkinlikler için artımlı senkronizasyon kancaları.
FCM: pushSendMessageTsgcHTTPGoogleCloud_FCM_Client. Tek bir çağrı, bir projeye Firebase Cloud Messaging v1 yükü gönderir.
TLS ve günlüklemeTLSOptions, LogFileÜç Google Cloud istemcisinin tümünde paylaşılır.

API'ler, Derleyiciler ve Hedefler

Hat üzerinde kamuya açık standartlar ve desteklenen her derleyicide aynı kaynak kodu.

AlanAyrıntı
HTTP sunucusuTsgcHTTPServer aracılığıyla HTTP istekleri ve yanıtları, statik dosyalar, oturumlar ve HTTPS.
FastCGI / SCGIFastCGI Responder rolü ve TCP üzerinden SCGI, CGI ortamı RFC 3875'e göre oluşturularak, TsgcHTTPGateway aracılığıyla.
HTTP/2RFC 9113, HPACK başlık sıkıştırması ve ALPN protokol müzakeresiyle.
gRPCgRPC tel protokolünü izleyerek, HTTP/2 akışları üzerinden Protocol Buffers yükleri.
Google CloudPub/Sub REST API'si, Google Calendar API v3 ve Firebase Cloud Messaging HTTP v1 API'si, hepsi bir Google servis hesabıyla kimlik doğrulanır.
PlatformlarBeş istemci sınıfının tümü için Windows Win32, Windows Win64, Linux64, macOS, iOS ve Android. FastCGI / SCGI ağ geçidi Windows ve Linux'ta çalışır.
BağımlılıkHTTP/2 ve gRPC istemcileri, ALPN için sgcCustomIndy'ye ihtiyaç duyar. Google Cloud istemcileri yalnızca pakete dahil Core çalışma zamanına ihtiyaç duyar. FastCGI / SCGI ağ geçidi RAD Studio ile birlikte gelen standart Indy ile çalışır ve sgcCustomIndy'ye ihtiyaç duymaz.
DerleyicilerDelphi ve C++ Builder 7'den 13'e.
SürümlerHTTP/2, gRPC ve FastCGI / SCGI ağ geçidi ayrıca sgcWebSockets içinde Enterprise sürümünden itibaren ve Google Cloud istemcileri Standard'dan itibaren gelir. HTTP sunucusu Core çalışma zamanının parçasıdır, bu yüzden her sgcWebSockets sürümü onu da içerir.
LisanslamaBağımsız. sgcWebSockets Core çalışma zamanı pakete dahildir ve tam kaynak kodu içerilir.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

sgcHTTP ile Geliştirin

Ücretsiz deneme sürümünü indirin, ilk HTTP uç noktanızı yayımlayın ve Delphi ya da C++ Builder'dan ilk HTTP/2 veya gRPC çağrınızı yapın.