WebSocket - API

API - Definizione

API, abbreviazione di Application Program Interface, è un insieme di routine, protocolli e strumenti per la creazione di applicazioni software.

Alcune caratteristiche importanti sono:

  • L'API specifica come devono interagire i componenti software e le API devono essere utilizzate durante la programmazione dei componenti dell'interfaccia utente grafica (GUI).

  • Una buona API semplifica lo sviluppo di un programma fornendo tutti gli elementi costitutivi.

  • REST, che in genere viene eseguito su HTTP, viene spesso utilizzato in applicazioni mobili, siti Web social, strumenti di mashup e processi aziendali automatizzati.

  • Lo stile REST sottolinea che le interazioni tra client e servizi sono migliorate grazie a un numero limitato di operazioni (verbi).

  • La flessibilità è fornita assegnando le risorse; i propri URI (Universal Resource Identifier) ​​univoci.

  • REST evita l'ambiguità perché ogni verbo ha un significato specifico (GET, POST, PUT e DELETE)

Vantaggi di Web Socket

Web Socket risolve alcuni problemi con REST o HTTP in generale -

Bidirezionale

HTTP è un protocollo unidirezionale in cui il client avvia sempre una richiesta. Il server elabora e restituisce una risposta, quindi il client la consuma. Web Socket è un protocollo bidirezionale in cui non esistono modelli di messaggi predefiniti come richiesta / risposta. Il client o il server possono inviare un messaggio all'altra parte.

Duplex completo

HTTP consente al messaggio di richiesta di passare dal client al server e quindi il server invia un messaggio di risposta al client. In un dato momento, o il client sta parlando con il server o il server sta parlando con il client. Web Socket consente al client e al server di parlare indipendentemente l'uno dall'altro.

Connessione TCP singola

In genere, una nuova connessione TCP viene avviata per una richiesta HTTP e terminata dopo la ricezione della risposta. È necessario stabilire una nuova connessione TCP per un'altra richiesta / risposta HTTP. Per Web Socket, la connessione HTTP viene aggiornata utilizzando il meccanismo di aggiornamento HTTP standard e il client e il server comunicano sulla stessa connessione TCP per il ciclo di vita della connessione Web Socket.

Il grafico riportato di seguito mostra il tempo (in millisecondi) impiegato per elaborare N messaggi per una dimensione di payload costante.

Ecco i dati grezzi che alimentano questo grafico:

Il grafico e la tabella sopra riportati mostrano che l'overhead REST aumenta con il numero di messaggi. Questo è vero perché molte connessioni TCP devono essere avviate e terminate e molte intestazioni HTTP devono essere inviate e ricevute.

L'ultima colonna mostra in particolare il fattore di moltiplicazione per la quantità di tempo per soddisfare una richiesta REST.

Il secondo grafico mostra il tempo impiegato per elaborare un numero fisso di messaggi variando la dimensione del payload.

Ecco i dati grezzi che alimentano questo grafico:

Questo grafico mostra che il costo incrementale dell'elaborazione della richiesta / risposta per un endpoint REST è minimo e la maggior parte del tempo viene speso per avviare / terminare la connessione e rispettare la semantica HTTP.

Conclusione

Web Socket è un protocollo di basso livello. Tutto, incluso un semplice modello di progettazione di richiesta / risposta, come creare / aggiornare / eliminare le risorse necessarie, i codici di stato ecc. Da costruire su di esso. Tutti questi sono ben definiti per HTTP.

Web Socket è un protocollo con stato mentre HTTP è un protocollo senza stato. Le connessioni Web Socket possono scalare verticalmente su un singolo server mentre HTTP può scalare orizzontalmente. Esistono alcune soluzioni proprietarie per il ridimensionamento orizzontale di Web Socket, ma non sono basate su standard. HTTP viene fornito con molte altre chicche come il caching, il routing e il multiplexing. Tutti questi devono essere definiti sopra Web Socket.