RRQMSocket é uma estrutura de serviço de comunicação de rede ultraleve e integrada. Possui características de altas conexões simultâneas, alto processamento simultâneo, assinatura de eventos, extensões de plug-in, processamento multithread, pool de memória, pool de objetos, etc., permitindo aos usuários construir uma estrutura de rede de forma mais simples e rápida. Em termos de eficiência de transmissão, a transmissão síncrona pode chegar a 20w/s e a transmissão assíncrona pode chegar a 60w/s. A eficiência de recepção e processamento do servidor depende do número de threads.
Ambiente de suporte:
.NET Framework 4.5 e superior.
.NETCore3.1 e superior.
.NETStandard2.0 e superior.
Estruturas suportadas:
WPF
WinForm
Blazor
Xamarin
Mono
Unidade
Outros (ou seja, todos os sistemas C#)
Características:
1. Conjunto de objetos
Os conjuntos de objetos têm muitos aplicativos no RRQMSocket, sendo os dois mais importantes o conjunto de objetos de conexão e o conjunto de objetos de processamento. O pool de objetos de conexão significa que quando o cliente se conectar com êxito, ele primeiro procurará TcpSocketClient no pool de objetos de conexão e, em seguida, criará se ele não existir. Se um cliente ficar offline, seu TcpSocketClient será reciclado. Esta é a razão para a reutilização de ID.
Depois, há o pool de objetos de processamento. No RRQMSocket, o thread que recebe os dados e o thread do kernel IOCP são separados. Ou seja, o cliente envia 10.000 dados para o servidor, mas o servidor os processa muito lentamente após o recebimento. Em seguida, o iocp tradicional definitivamente diminuirá a taxa de recebimento, notificará a janela TCP do cliente sobre a ocorrência de congestionamento e permitirá que o cliente suspenda o envio. Porém, no RRQMSocket, todos os dados recebidos serão armazenados na fila. Primeiro, isso não afetará a recepção do iocp. Ao mesmo tempo, os threads serão alocados para processar as informações da mensagem recebida. lago", o que pode melhorar muito a capacidade de processar dados.
2. Multiencadeamento
Devido à existência do pool de objetos de processamento, o processamento multithread torna-se simples. Quando a conexão do cliente for concluída, o thread lógico de processamento de mensagens da classe auxiliar do cliente (TcpSocketClient) será atribuído automaticamente. Se o número de threads do servidor for 10, o primeiro cliente conectado será atribuído ao thread 0 e o segundo Connections será atribuído. ser atribuído à rosca nº 1 e assim por diante, de maneira circular. Quando um cliente recebe dados, ele os coloca em uma fila pertencente ao thread atual e ativa o thread para execução.
3. IOCP tradicional e RRQMSocket
O IOCP do RRQMSocket também é diferente do tradicional Tomando como exemplo o exemplo oficial da Microsoft, MemoryBuffer é usado para abrir uma memória, dividi-la igualmente e alocar uma área para cada sessão receber os dados. os dados, faça outra cópia e, em seguida, copie-os. RRQMSocket pega um bloco de memória disponível do pool de memória antes de cada recepção e, em seguida, usa-o diretamente para recepção. Após receber os dados, ele descarta diretamente o bloco de memória, evitando assim a operação de cópia, embora seja apenas um projeto pequeno. , mas ao transmitir dados de 64 KB 1000 W vezes, o desempenho difere em 10 vezes. Portanto, com base nisso, a eficiência da transferência de arquivos será alta.
4. Adaptador de processamento de dados
Acredito que todo mundo já usou outros produtos Socket, como HPSocket, SuperSocket, etc., então o design do RRQMSocket também se baseou nos excelentes conceitos de design de outros produtos, e o adaptador de processamento de dados é um deles, mas o que é diferente do O design de outros produtos é que a função do adaptador RRQMSocket é mais poderosa. Ele pode ignorar os dados reais e simular os dados desejados. Por exemplo, pode pré-processar os dados para resolver o problema de empacotamento de dados. Para resolver o problema de pacotes fixos, você também pode analisar diretamente o protocolo HTTP e retornar um objeto HttpRequest após o processamento pelo adaptador.
5. Pacotes fixos e soluções de subcontratação
É muito simples lidar com problemas de bloqueio de pacotes TCP e subpacotes no RRQMSocket. Basta alterar os diferentes adaptadores de processamento de dados. Por exemplo: para usar cabeçalhos fixos, você só precisa atribuir instâncias de FixedHeaderDataHandlingAdapter a TcpSocketClient e TcpClient. O processador correspondente também possui comprimento fixo, segmentação de caracteres de terminação, etc.