RRQMSocket es un marco de servicios de comunicación de red integrado y ultraligero. Tiene las características de conexiones de alta concurrencia, procesamiento de alta concurrencia, suscripción a eventos, extensiones de complementos, procesamiento de subprocesos múltiples, grupo de memoria, grupo de objetos, etc., lo que permite a los usuarios construir un marco de red de manera más simple y rápida. En términos de eficiencia de transmisión, la transmisión síncrona puede alcanzar 20 w/s y la transmisión asíncrona puede alcanzar 60 w/s. La eficiencia de recepción y procesamiento del servidor depende de la cantidad de subprocesos.
Entorno de soporte:
.NET Framework 4.5 y superior.
.NETCore3.1 y superior.
.NETStandard2.0 y superior.
Marcos soportados:
WPF
WinForm
Blazor
Xamarin
Mononucleosis infecciosa
Unidad
Otros (es decir, todos los sistemas C#)
Características:
1. Grupo de objetos
Los grupos de objetos tienen muchas aplicaciones en RRQMSocket, siendo las dos más importantes el grupo de objetos de conexión y el grupo de objetos de procesamiento. El grupo de objetos de conexión significa que cuando el cliente se conecta correctamente, primero buscará TcpSocketClient en el grupo de objetos de conexión y luego lo creará si no existe. Si un cliente se desconecta, su TcpSocketClient se reciclará. Este es el motivo de la reutilización de la identificación.
Luego está el grupo de objetos de procesamiento. En RRQMSocket, el hilo que recibe datos y el hilo del núcleo IOCP están separados. Es decir, por ejemplo, el cliente envía 10,000 datos al servidor, pero el servidor los procesa muy lentamente después de recibirlos. Entonces el iocp tradicional Definitivamente reducirá la velocidad de recepción, luego notificará a la ventana TCP del cliente que se produce una congestión y luego permitirá que el cliente suspenda el envío. Sin embargo, en RRQMSocket, todos los datos recibidos se almacenarán en la cola. Primero, no afectará la recepción de iocp. Al mismo tiempo, se asignarán subprocesos para procesar la información del mensaje recibido. lake", que puede mejorar enormemente la capacidad de procesar datos.
2. Subprocesos múltiples
Debido a la existencia del grupo de objetos de procesamiento, el procesamiento multiproceso se vuelve simple. Cuando se completa la conexión del cliente, el subproceso lógico de procesamiento de mensajes de la clase auxiliar del cliente (TcpSocketClient) se asignará automáticamente. Si el número de subprocesos del servidor es 10, el primer cliente conectado se asignará al subproceso 0 y el segundo se conectará. asignarse al hilo número 1, y así sucesivamente, de forma circular. Cuando un cliente recibe datos, los pondrá en cola en una cola propiedad del hilo actual y activará el hilo para su ejecución.
3. IOCP tradicional y RRQMSocket
El IOCP de RRQMSocket también es diferente del tradicional. Tomando como ejemplo el ejemplo oficial de Microsoft, MemoryBuffer se usa para abrir una memoria, luego dividirla en partes iguales y luego asignar un área para que cada sesión reciba los datos. los datos, haga otra copia y luego cópielos y procese el lanzamiento de datos. RRQMSocket toma un bloque de memoria disponible del grupo de memoria antes de cada recepción y luego lo usa directamente para la recepción. Después de recibir los datos, descarta directamente el bloque de memoria, evitando así la operación de copia, aunque es solo un diseño pequeño. , pero cuando se transmiten datos de 64kb 1000w veces, el rendimiento difiere 10 veces. Por lo tanto, en base a esto, la eficiencia de la transferencia de archivos será alta.
4. Adaptador de procesamiento de datos
Creo que todos han usado otros productos Socket, como HPSocket, SuperSocket, etc., por lo que el diseño de RRQMSocket también se basó en los excelentes conceptos de diseño de otros productos, y el adaptador de procesamiento de datos es uno de ellos, pero en qué se diferencia del El diseño de otros productos es que RRQMSocket La función del adaptador es más poderosa. Puede ignorar los datos reales y simular los datos deseados. Por ejemplo, puede preprocesar los datos para resolver el problema de la paquetización de datos. Para resolver el problema de los paquetes adhesivos, también puede analizar directamente el protocolo HTTP y devolver un objeto HttpRequest después de que el adaptador lo procese.
5. Paquetes pegajosos y soluciones de subcontratación
Es muy sencillo lidiar con la adherencia de paquetes TCP y los problemas de subpaquetes en RRQMSocket. Simplemente cambie los diferentes adaptadores de procesamiento de datos. Por ejemplo: para usar encabezados fijos, solo necesita asignar instancias de FixedHeaderDataHandlingAdapter a TcpSocketClient y TcpClient. El procesador correspondiente también tiene longitud fija, segmentación de caracteres de terminación, etc.