HTTP/2
HTTP/2 è un'evoluzione del protocollo HTTP 1.1, che tenta sostanzialmente di
essere più efficiente nell'utilizzo delle reti. La semantica è la stessa, quindi è
progettato per essere compatibile con i vecchi protocolli.
Limitazioni HTTP 1.1
HTTP 1.1 è limitato all'elaborazione di una richiesta per connessione, pertanto di solito
i client utilizzano più di una connessione per richiedere file dai server. Questo
crea un problema, poiché quando ci sono troppe connessioni TCP aperte,
si instaura una competizione tra i client per l'uso delle risorse del server e le prestazioni
calano progressivamente man mano che più client si connettono ai server.
Funzionalità principali
- HTTP/2 è un protocollo binario (ricordare
che HTTP 1.1 è un protocollo testuale).
- HTTP/2 funziona su TLS e ALPN.
- È multiplexato (consente di inviare più
di una richiesta su una singola connessione TCP).
- Il server può inviare risposte ai client.
- Riduce i tempi di andata e ritorno (Round Trip Times), in modo che i client
possano caricarsi più rapidamente.
HTTP/2 introduce altri miglioramenti, maggiori dettagli: RFC7540.
HTTP/2 richiede la nostra versione personalizzata di Indy in quanto
necessita del protocollo ALPN.
Componenti
- TsgcHTTP2Client: componente client che supporta completamente il protocollo HTTP/2
(codice Pascal 100% sgcWebSockets, senza librerie esterne).
- TsgcWebSocketHTTPServer:
componente server che supporta completamente il protocollo HTTP/2 (sgcWebSockets
100% codice Pascal, senza librerie esterne). Per impostazione predefinita HTTP/2 è
disabilitato; è possibile abilitarlo tramite la proprietà HTTPOptions impostando Enable
= true.
- TsgcWebSocketServer_HTTPAPI:
componente server che supporta il protocollo HTTP/2 (implementazione Microsoft
e richiede Windows 2016+ o Windows 10+).
- Server DataSnap: il server datasnap può supportare anche il protocollo HTTP/2.
API