RRQMSocket 4.0.16

Suggested Alternatives

TouchSocket

Additional Details

此程序集已被更名作废。请搜索TouchSocket安装新版。

如果是旧项目,请在https://www.yuque.com/rrqm/touchsocket/731868ac242c91ba5d67a99869af2caa%E7%9A%84%E6%8C%87%E5%BC%95%E4%B8%8B,修改项目。

如果想继续使用旧版,可以继续使用。说明文档可以加QQ群(234762506)获得pdf文件。亦或者发送“RRQMSocket v8.2说明文档”到邮箱505554090@qq.com

The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package RRQMSocket --version 4.0.16
NuGet\Install-Package RRQMSocket -Version 4.0.16
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RRQMSocket" Version="4.0.16" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add RRQMSocket --version 4.0.16
#r "nuget: RRQMSocket, 4.0.16"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install RRQMSocket as a Cake Addin
#addin nuget:?package=RRQMSocket&version=4.0.16

// Install RRQMSocket as a Cake Tool
#tool nuget:?package=RRQMSocket&version=4.0.16

💿描述

名称 版本(Nuget Version) 下载(Nuget Download) 描述
RRQMSocket NuGet version (RRQMSocket) Download RRQMSocket是一个整合性的、超轻量级的网络通信服务框架。它具有 高并发连接高并发处理事件订阅插件式扩展多线程处理内存池对象池 等特点,让使用者能够更加简单的、快速的搭建网络框架。
RRQMSocket.FileTransfer NuGet version (RRQMSocket.FileTransfer) Download RRQMSocket.FileTransfer是一个高性能的文件传输框架,您可以用它传输任意大小的文件,它可以完美支持上传下载混合式队列传输断点续传快速上传传输限速获取文件信息删除文件等。在实时测试中,它的传输速率可达500Mb/s。
RRQMSocket.RPC NuGet version (RRQMSocket.RPC) Download RRQMSocket.RPC是一个超轻量、高性能、可扩展的微服务框架,目前已完成开发RRQMRPC部分,该部分使用RRQM专属协议,支持客户端异步调用,服务端异步触发、以及out和ref关键字,函数回调等。在调用效率上也是非常强悍,在调用空载函数,且返回状态时,10w次调用仅用时3.8秒,不返回状态用时0.9s。其他扩展调用扩展协议目前已开发WebApi,后续还会支持JsonRPC,XmlRPC等。
RRQMSocket.RPC.WebApi NuGet version (RRQMSocket.RPC.WebApi) Download RRQMSocket.RPC.WebApi是一个扩展于RRQMSocket.RPC的WebApi组件,可以通过该组件创建WebApi服务解析器,让桌面端、Web端、移动端可以跨语言调用RPC函数。功能支持路由、Get传参、Post传参等。
RRQMSocket.Http NuGet version (RRQMSocket.Http) Download RRQMSocket.Http是一个能够简单解析Http的服务组件,能够快速响应Http服务请求。

🖥支持环境

  • .NET Framework4.5及以上。
  • .NET Core3.1及以上。
  • .NET Standard2.0及以上。

🥪支持框架

  • WPF
  • Winform
  • Blazor
  • Xamarin
  • Mono
  • Unity
  • 其他(即所有C#系)

🌴RRQMSocket特点速览

1.对象池

对象池在RRQMSocket有很多应用,最主要的两个就是连接对象池处理对象池。连接对象池就是当客户端成功连接时,首先会去连接对象池中找TcpSocketClient,然后没有的话,才会创建。如果哪个客户端掉线了,它的TcpSocketClient就会被回收。这也就是ID重用的原因。

然后就是处理对象池,在RRQMSocket中,接收数据的线程和IOCP内核线程是分开的,也就是比如说客户端给服务器发送了1w条数据,但是服务器收到后处理起来很慢,那传统的iocp肯定会放慢接收速率,然后通知客户端的tcp窗口,发生拥塞,然后让客户端暂缓发送。但是在RRQMSocket中会把收到的数据通过队列全都存起来,首先不影响iocp的接收,同时再分配线程去处理收到的报文信息,这样就相当于一个“泄洪湖泊”,能很大程度的提高处理数据的能力。

2.多线程*

由于有处理对象池的存在,使多线程处理变得简单。在客户端连接完成时,会自动分配该客户端辅助类(TcpSocketClient)的消息处理逻辑线程,假如服务器线程数量为10,则第一个连接的客户端会被分配到0号线程中,第二个连接将被分配到1号线程中,以此类推,循环分配。当某个客户端收到数据时,会将数据排入当前线程所独自拥有的队列当中,并唤醒线程执行。

3.传统IOCP和RRQMSocket

RRQMSocket的IOCP和传统也不一样的,就以微软官方为例,它是开辟了一块内存,然后均分,然后给每个会话分配一个区去接收,等收到数据以后,再复制一份,然后把数据抛出去,让外界处理。而RRQMSocket是每次接收之前,从内存池拿一个可用内存块,然后直接用于接收,等收到数据以后,直接就把这个内存块抛出去了,这样就避免了复制操作。所以,文件传输时效率才会高。当然这个操作在小数据时是没什么优势的。

4.数据处理适配器

相信大家都使用过其他的Socket产品,例如HPSocket,SuperSocket等,那么RRQMSocket在设计时也是借鉴了其他产品的优秀设计理念,数据处理适配器就是其中之一,但和其他产品的设计不同的是,RRQMSocket的适配器功能更加强大,它可以无视真实的数据,而模拟出想要的数据,例如:可以对数据进行预处理,从而解决数据分包。粘包的问题,也可以直接解析HTTP协议,经过适配器处理后传回一个HttpRequest对象等。

5.粘包、分包解决

在RRQMSocket中处理TCP粘包、分包问题是非常简单的。只需要更改不同的数据处理适配器即可。例如:使用固定包头,只需要给TcpSocketClient和TcpClient赋值FixedHeaderDataHandlingAdapter的实例即可。同样对应的处理器也有固定长度终止字符分割 等。

🔗联系作者

✨API文档

RRQMSocket API文档

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 is compatible. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on RRQMSocket:

Package Downloads
Dijing.RRQMHelper

RRQM tcp帮助类

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated