Sé que en Java, cuando desea crear un servidor de alto rendimiento, utiliza nio en lugar del socket normal. Entonces, ¿existe algo para C# para crear servidores de alto rendimiento?C# ==> ¿Servidor de alto rendimiento?
Respuesta
Sí, SocketAsyncEventArgs
:
La clase
SocketAsyncEventArgs
es parte de un conjunto de mejoras a la claseSystem.Net.Sockets.Socket
que proporcionar un patrón alternativo asíncrono que puede ser utilizado por zócalo de alto rendimiento especializado aplicaciones. Esta clase era específicamente diseñada para aplicaciones de servidor de red que requieren un alto rendimiento de . Una aplicación puede usar el patrón asíncrono mejorado exclusivamente o solo en áreas calientes dirigidas (por ejemplo, cuando se reciben grandes cantidades de datos).
Uhm, esto no está mal, pero suena como si fuera una clase especial que se usa * en lugar de 'Socket' normal, cuando de hecho es solo el tipo de evento para ciertos tipos de llamadas asincrónicas a' Socket' . –
La programación con SocketAsyncEventArgs definitivamente no es 'solo el evento para cierto tipo de llamadas asíncronas'. Cuando uno comienza un proyecto, tiene una opción clara que hacer: usar llamadas de sincronización, usar la función asincrónica clásica (beginsend/callback/endsend) o usar SocketAsyncEvent. Ver Mejoras de rendimiento de socket en la versión 3.5 http://msdn.microsoft.com/en-us/library/bb968780.aspx –
Existen diferentes formas de utilizar los enchufes normales. Por lo general, el uso asincrónico se escala mejor.
Puede usar conectores asíncronos. Si ese no es lo suficientemente bueno, siempre puede consultar Network Direct SPI
, parte del HPC SDK. Sin embargo, tenga en cuenta que Network Direct sí requiere un proveedor específico de hardware.
+1 Pero no hay una API administrada para red directa, ¿verdad? –
Esto parece interesante, pero los requisitos específicos del hardware me preguntan si es una gran idea. Otra opción interesante, pero quizás poco inteligente, es simplemente usar P/Invoke. –
Gracias, asincrónico no lo hace, estamos hablando de más de 5k clientes que se conectan al servidor, permanecen conectados y se comunican con el servidor. Echaré un vistazo a SPI directo de red, gracias – aryaxt
SocketAsyncEventArgs usa los puertos de finalización de E/S de Windows, lo que lo hace más rápido. Es asincrónico, lo que lo hace escalable. El gran problema con SocketAsyncEventArgs son los puertos de finalización de E/S.
Consulte http://www.codeproject.com/KB/cs/socketasynceventargs.aspx para saber cómo usar SocketAsyncEventArgs.
- 1. Consejos/técnicas de alto rendimiento sockets de servidor de C#
- 2. Sitio de alto rendimiento
- 3. Análisis XML de alto rendimiento en C++
- 4. Arrays multidimensionales C++ de alto rendimiento
- 5. Alto Rendimiento Desarrollo
- 6. C/C++ versus Java/C# en aplicaciones de alto rendimiento
- 7. Sitio ASP.NET de alto rendimiento (> 1000 solicitud/segundo)
- 8. Mapa hash C/C++ de super alto rendimiento (tabla, diccionario)
- 9. Mensajería JMS de alto rendimiento
- 10. Biblioteca matemática de alto rendimiento para .NET/C# y Java
- 11. Conversión de doble a char * en C++ con alto rendimiento
- 12. Recursos para computación de alto rendimiento en C++
- 13. registro multiproceso para aplicaciones de alto rendimiento
- 14. ¿Cómo implementar una aplicación de servidor de socket asíncrono de alto rendimiento en PHP?
- 15. Alto rendimiento latencia baja C++ cadena personalizada clase
- 16. Calentamiento de aplicaciones Java de alto rendimiento
- 17. inserto de hibernación de alto rendimiento
- 18. Cronómetro de alto rendimiento frente a Cronómetro
- 19. gráficos de alto rendimiento wpf 2d
- 20. C# List <> Add() método rendimiento
- 21. Mejores prácticas de aplicaciones de red de alto rendimiento
- 22. Alto rendimiento Concurrent MultiMap Java/Scala
- 23. visualizador de PDF de alto rendimiento para web
- 24. Cómo escribir un Netty Client de alto rendimiento
- 25. ¿Filtro de floración moderno y de alto rendimiento en Python?
- 26. Expresiones regulares simples de alto rendimiento de Java
- 27. Gráficos de alto rendimiento con la capa visual de WPF
- 28. búsqueda de cadenas cortas masivas de alto rendimiento en Python
- 29. viabilidad de la biblioteca de registro C++ para la captura asincrónica de datos de alto rendimiento?
- 30. consulta por lotes JDBC para un alto rendimiento
Vi esto recientemente que puede resultarle interesante: http://developers.slashdot.org/story/10/07/27/1925209/Java-IO-Faster-Than-NIO – AaronLS
@AaronLS: parece que nio es una biblioteca de socket asíncrona, mientras que los conectores de .NET funcionan en ambos sentidos. –
Las clases de socket van a ser las mismas en .NET independientemente del idioma, así que cambié las etiquetas. –