Escribir un servidor TCP de alto rendimiento es difícil. Si tiene de 100 a 10,000 solicitudes por segundo, consideraría seriamente usar la tecnología existente en lugar de reinventar la rueda. Puede cambiar a HTTP y usar un servidor web existente como IIS o Apache. Están altamente optimizados, vienen con toneladas de registro y rastreo, y pueden ajustarse. Alternativamente, si tanto los clientes como el servidor son .NET, puede usar WCF.
Si tiene más de 10,000 solicitudes por segundo, probablemente no quiera usar C # en primer lugar. Desea C o C ++ y alguna caja de Linux estrechamente controlada. No soy realmente un experto en este.
Crear una nueva hebra por conexión TCP es una mala idea. Los subprocesos son lentos para crear, requieren toneladas de recursos y su servidor se ahogará bastante rápido. Si sus solicitudes se procesan rápidamente, el uso del grupo de subprocesos es una opción mucho más eficiente. Apache en Windows utiliza puertos de finalización de E / S, que funcionan con el grupo de subprocesos como async / wait, pero en un nivel mucho más bajo.
- ¿Cuáles son los tamaños de un segmento TCP, un paquete IP y un marco de capa de enlace de datos?
- ¿Cuál es la diferencia básica entre HSRP y VRRP en términos de dirección IP virtual?
- ¿Alguien puede rastrear nuestra dirección IP y encontrar los sitios que estamos visitando?
- ¿Por qué la fase inicial en el control de congestión TCP se llama inicio lento cuando en realidad es exponencial, mientras que la fase de aumento aditivo tiene un crecimiento de ventana de congestión lineal?
- ¿Cómo es útil el proxy ARP en las redes actuales?
Dicho esto, puede forzar a la Biblioteca de tareas a crear un nuevo subproceso para su tarea si utiliza la opción LongRunning : consulte Cómo garantizar que se cree un nuevo subproceso cuando se utiliza el método Task.StartNew.