Domanda TCP vs. Benchmark Http


Sto avendo un'applicazione Web seduta su IIS e parlando con [remote] Service-Machine. Non sono sicuro se scegliere TCP o Http come protocollo principale.

più dettagli:

  1. avrò più di un servizio \ endpoint
  2. alcuni di loro saranno a senso unico
  3. l'altro sarà a due vie
  4. le pagine web funzioneranno di fronte ai servizi
  5. stiamo parlando di un sito web ad alta scala

Conosco abbastanza bene la differenza, ma sto cercando un buon benchmark, che mostri quanto sia più veloce il TCP?


44
2017-07-28 20:44


origine


risposte:


HTTP è un layer costruito sul layer TCP per alcuni standard di trasmissione dei dati. Quindi, naturalmente, l'uso dei socket TCP sarà meno pesante rispetto all'utilizzo di HTTP. Se le prestazioni sono l'unica cosa che ti interessa, il semplice TCP è la soluzione migliore per te.

Si consiglia di prendere in considerazione HTTP a causa della sua facilità d'uso e semplicità che in definitiva riduce i tempi di sviluppo. Se stai facendo qualcosa che potrebbe essere direttamente consumato da un browser (attraverso una chiamata AJAX), allora dovresti usare HTTP. Affinché un browser non moderno possa utilizzare direttamente connessioni TCP senza HTTP, è necessario utilizzare Flash o Silverlight e ciò si verifica normalmente per i contenuti multimediali come video e / o audio. Tuttavia, molti browser moderni ora (a partire dal 2013) supportano le API per accedere alle risorse di rete, audio e video direttamente tramite JavaScript. L'unica cosa da considerare è il tasso di utilizzo dei moderni browser Web tra i tuoi utenti; vedere caniuse.com per le ultime informazioni sulla compatibilità del browser.

Per quanto riguarda i benchmark, Questo è l'unica cosa che ho trovato. Vedi pagina 5, ha il grafico delle prestazioni. Si noti che in realtà non confronta le mele con le mele poiché confronta l'opzione di dati TCP / Binary con l'opzione di dati HTTP / XML. Il che pone la domanda: che tipo di dati sono i tuoi servizi in uscita? binario (video, audio, file) o testo (JSON, XML, HTML)?

In generale, i sistemi orientati alla performance come quelli nel settore militare o finanziario useranno probabilmente connessioni TCP normali. Nei casi in cui le aziende che si concentrano sul web preferiranno utilizzare HTTP e utilizzare IIS o Apache per ospitare i loro servizi.


69
2017-08-02 01:33



La domanda per cui hai davvero bisogno di una risposta è "TCP o HTTP saranno più veloci per mio applicazione ". La risposta è che dipende dalla natura della tua applicazione e dal modo in cui usi TCP e / o HTTP nella tua applicazione. Un benchmark generico HTTP vs TCP non risponderà alla tua domanda, perché è probabile che il benchmark non corrisponderà al comportamento dell'applicazione.

In teoria, una soluzione progettata / implementata ottimamente usando TCP sarà più veloce di una che usa HTTP. Ma potrebbe anche essere molto più lavoro da implementare ... a seconda dei dettagli della tua applicazione.

Ci sono altri problemi che potrebbero influenzare la tua scelta. Ad esempio, è meno probabile che si verifichino problemi con il firewall se si utilizza HTTP piuttosto che se si utilizza TCP su una porta casuale. Un altro è che HTTP renderebbe più semplice implementare un servizio di bilanciamento del carico tra il server IIS e i sistemi di back-end.

Infine, alla fine della giornata è probabilmente più importante che il tuo sistema sia affidabile, manutenibile e (forse) scalabile di quanto sia veloce. Una strategia sensata è quella di implementare la versione semplice prima, ma hai in mente progetti su come renderla più veloce ... se la soluzione semplice è troppo lenta.


30
2017-07-28 22:35



Puoi sempre confrontarlo.

In generale, se ciò che si vuole realizzare può essere fatto facilmente via HTTP (vale a dire l'unica ragione per cui si penserebbe altrimenti di utilizzare TCP non elaborato è per un possibile incremento delle prestazioni), probabilmente si dovrebbe semplicemente usare HTTP. Certo, puoi programmare la presa, ma perché preoccuparsi? Molte persone hanno speso un sacco di tempo e fatica nello sviluppo di librerie e server client HTTP, e hanno speso più tempo ad ottimizzare e testare quel codice di quanto tu possa mai spendere sui tuoi socket TCP. Ci sono semplicemente tanti possibili errori che dovresti gestire, casi limite e ottimizzazioni che possono essere fatte, che di solito è più facile e sicuro usare una funzione di libreria per HTTP.

Inoltre, le specifiche HTTP definiscono tutti i tipi di funzionalità (e implementano client / server, che si possono usare "gratuitamente", vale a dire nessun lavoro di implementazione extra) che rende molto più semplice l'interoperabilità di terze parti. "Ecco il mio URL, ecco le regole per ciò che si invia, ecco le regole per ciò che ritorno ..."


6
2017-07-28 21:06