Server TCP ad alte prestazioni in C #

Sono uno sviluppatore C # esperto, ma finora non ho sviluppato un’applicazione server TCP. Ora devo sviluppare un server altamente scalabile e ad alte prestazioni in grado di gestire almeno 5-10.000 connessioni simultanee: ottenere -raw byte-dati tramite GPRS dai dispositivi GPS.

Un processo di comunicazione comune dovrebbe assomigliare a questo:

  • Il dispositivo GPS avvia una connessione al mio server
  • il mio server risponde se voglio ottenere i dati
  • dispositivo invia dati GPS
  • il mio server invia un rapporto al dispositivo su come ottenerlo (sg come il checksum)
  • ottenere nuovi dati dal GPS, segnalazioni e questo succede ancora e ancora
  • successivamente GPS DEVICE chiude la connessione

Quindi, nel mio server ho bisogno

  • traccia i client connessi / attivi
  • chiudere qualsiasi client dal lato server
  • cattura l’evento, quando un dispositivo chiude la connessione
  • ottieni dati di byte
  • inviare dati ai clienti

Ho iniziato a leggere questo argomento su internet, ma per me sembra un incubo. Ci sono molti modi, ma non ho potuto scoprire quale sia il migliore.

I metodi di socket asincrono sembrano i migliori per me, ma scrivere codice in questo stile asincrono è terribile e non facile da eseguire il debug.

Quindi la mia domanda è: quale pensi che sia il modo migliore per implementare un server TCP ad alte prestazioni in C #? Conosci qualche buon componente open source per fare questo? (Ne ho provati diversi, ma non sono riuscito a trovarne uno buono).