RRQMSocket est un cadre de service de communication réseau intégré et ultra-léger. Il présente les caractéristiques de connexions simultanées élevées, de traitement simultané élevé, d'abonnement aux événements, d'extensions de plug-in, de traitement multithread, de pool de mémoire, de pool d'objets, etc., permettant aux utilisateurs de créer un cadre réseau plus simplement et plus rapidement. En termes d'efficacité de transmission, la transmission synchrone peut atteindre 20 w/s et la transmission asynchrone peut atteindre 60 w/s. L'efficacité de réception et de traitement du serveur dépend du nombre de threads.
Environnement de support :
.NET Framework 4.5 et supérieur.
.NETCore3.1 et supérieur.
.NETStandard2.0 et supérieur.
Frameworks pris en charge :
WPF
Winform
Blazer
Xamarin
Mono
Unité
Autres (c'est-à-dire tous les systèmes C#)
Caractéristiques:
1. Pool d'objets
Les pools d'objets ont de nombreuses applications dans RRQMSocket, les deux plus importantes étant le pool d'objets de connexion et le pool d'objets de traitement. Le pool d'objets de connexion signifie que lorsque le client se connecte avec succès, il recherchera d'abord TcpSocketClient dans le pool d'objets de connexion, puis le créera s'il n'existe pas. Si un client se déconnecte, son TcpSocketClient sera recyclé. C'est la raison de la réutilisation des identifiants.
Ensuite, il y a le pool d'objets de traitement. Dans RRQMSocket, le thread qui reçoit les données et le thread du noyau IOCP sont séparés, par exemple, le client envoie 10 000 données au serveur, mais le serveur les traite très lentement après réception. Ensuite, l'iocp traditionnel ralentira définitivement le taux de réception, puis informera la fenêtre TCP du client qu'une congestion se produit, puis laissera le client suspendre l'envoi. Cependant, dans RRQMSocket, toutes les données reçues seront stockées dans la file d'attente. Premièrement, cela n'affectera pas la réception d'iocp. En même temps, des threads seront alloués pour traiter les informations du message reçu. lac", ce qui peut grandement améliorer la capacité de traiter les données.
2. Multi-thread
Grâce à l'existence du pool d'objets de traitement, le traitement multithread devient simple. Une fois la connexion client terminée, le thread logique de traitement des messages de la classe auxiliaire client (TcpSocketClient) sera automatiquement attribué. Si le nombre de threads du serveur est de 10, le premier client connecté sera affecté au thread 0 et les secondes connexions seront affectées. être affecté au fil n°1, et ainsi de suite, de manière circulaire. Lorsqu'un client reçoit des données, il mettra les données en file d'attente dans une file d'attente appartenant au thread actuel et réveillera le thread pour son exécution.
3. IOCP traditionnel et RRQMSocket
L'IOCP de RRQMSocket est également différent de l'exemple traditionnel de Microsoft, MemoryBuffer est utilisé pour ouvrir une mémoire, puis la diviser de manière égale, puis allouer une zone pour chaque session pour recevoir les données. les données, faites une autre copie, puis copiez-la. Traitement de lancement de données. RRQMSocket prend un bloc de mémoire disponible dans le pool de mémoire avant chaque réception, puis l'utilise directement pour la réception, il jette directement le bloc de mémoire, évitant ainsi l'opération de copie, bien qu'elle ne soit qu'une petite opération. , mais lors de la transmission de données de 64 Ko 1 000 fois, les performances diffèrent de 10 fois. Par conséquent, sur cette base, l’efficacité du transfert de fichiers sera élevée.
4. Adaptateur de traitement des données
Je pense que tout le monde a utilisé d'autres produits Socket, tels que HPSocket, SuperSocket, etc., donc la conception de RRQMSocket s'est également inspirée des excellents concepts de conception d'autres produits, et l'adaptateur de traitement de données en fait partie, mais qu'est-ce qui est différent du La conception d'autres produits est que RRQMSocket La fonction d'adaptateur est plus puissante. Elle peut ignorer les données réelles et simuler les données souhaitées. Par exemple, elle peut prétraiter les données pour résoudre le problème de la mise en paquets des données. Pour résoudre le problème des paquets persistants, vous pouvez également analyser directement le protocole HTTP et renvoyer un objet HttpRequest après traitement par l'adaptateur.
5. Sticky packages et solutions de sous-traitance
Il est très simple de gérer les problèmes de blocage de paquets TCP et de sous-paquets dans RRQMSocket. Changez simplement les différents adaptateurs informatiques. Par exemple : pour utiliser des en-têtes fixes, il vous suffit d'attribuer des instances de FixedHeaderDataHandlingAdapter à TcpSocketClient et TcpClient. Le processeur correspondant a également une longueur fixe, une segmentation des caractères de fin, etc.