<p></p>
<p></p>
<p align="center">
<img src="https://ftp.bmp.ovh/imgs/2021/06/351eeccfadc07014.png" width = "100" height = "100" alt="图片名称" align=center />
</p>
<div align="center">
[![NuGet version (RRQMSocket)](https://img.shields.io/nuget/v/RRQMSocket.svg?style=flat-square)](https://www.nuget.org/packages/RRQMSocket/)
[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
[![Download](https://img.shields.io/nuget/dt/RRQMSocket)](https://www.nuget.org/packages/RRQMSocket/)
[![star](https://gitee.com/dotnetchina/RRQMSocket/badge/star.svg?theme=gvp)](https://gitee.com/dotnetchina/RRQMSocket/stargazers)
[![fork](https://gitee.com/dotnetchina/RRQMSocket/badge/fork.svg?theme=gvp)](https://gitee.com/dotnetchina/RRQMSocket/members)
<a href="https://jq.qq.com/?_wv=1027&k=gN7UL4fw">
<img src="https://img.shields.io/badge/QQ群-234762506-red" alt="QQ">
</a>
</div>
<div align="center">
合抱之木,生于毫末;九层之台,起于垒土。
</div>
<div align="center">
<img src="https://i.bmp.ovh/imgs/2021/06/0bb09b575906f48b.png" alt="图片名称" align=center />
</div>
## 💿描述
| 名称 |描述|
|---|---|
|[![NuGet version (RRQMSocket)](https://img.shields.io/nuget/v/RRQMSocket.svg?label=RRQMSocket)](https://www.nuget.org/packages/RRQMSocket/)| **RRQMSocket**是一个整合性的、超轻量级的、可以免费商用使用的网络通信服务框架。<br>它具有 **高并发连接** 、 **高并发处理** 、 **事件订阅** 、 **插件式扩展** 、<br> **多线程处理** 、 **内存池** 、 **对象池** 等特点,<br>让使用者能够更加简单的、快速的搭建网络框架。|
|[![NuGet version](https://img.shields.io/nuget/v/RRQMSocketFramework.svg?label=RRQMSocketFramework)](https://www.nuget.org/packages/RRQMSocketFramework/)| **RRQMSocketFramework**是RRQMSocket系列的企业版,<br>两者在功能上几乎没有区别,但是RRQMSocketFramework无任何依赖,<br>且可以提供专属的定制功能。后续也会加入企业已定制的优秀功能,希望大家多多支持。|
| [![NuGet version (RRQMSocket.FileTransfer)](https://img.shields.io/nuget/v/RRQMSocket.FileTransfer.svg?label=RRQMSocket.FileTransfer)](https://www.nuget.org/packages/RRQMSocket.FileTransfer/) | RRQMSocket.FileTransfer是一个高性能的文件传输框架,<br>您可以用它传输**任意大小**的文件,它可以完美支持**上传下载混合式队列传输**、<br>**断点续传**、 **快速上传** 、**传输限速**、**获取文件信息**、**删除文件**等。<br>在实时测试中,它的传输速率可达1000Mb/s。 |
|[![NuGet version (RRQMSocket.RPC)](https://img.shields.io/nuget/v/RRQMSocket.RPC.svg?label=RRQMSocket.RPC)](https://www.nuget.org/packages/RRQMSocket.RPC/) |RPC是一个超轻量、高性能、可扩展的微服务管理平台框架,<br>目前已完成开发**RRQMRPC**、**XmlRpc**、**JsonRpc**、**WebApi**部分。<br> **RRQMRPC**部分使用RRQM专属协议,支持客户端**异步调用**,<br>服务端**异步触发**、以及**out**和**ref**关键字,**函数回调**等。<br>在调用效率上也是非常强悍,在调用空载函数,且返回状态时,<br>**10w**次调用仅用时**3.8**秒,不返回状态用时**0.9**秒。<br>其他协议调用性能详看性能评测。|
|[![NuGet version (RRQMSocket.RPC.WebApi)](https://img.shields.io/nuget/v/RRQMSocket.RPC.WebApi.svg?label=RRQMSocket.RPC.WebApi)](https://www.nuget.org/packages/RRQMSocket.RPC.WebApi/)| WebApi是一个扩展于RRQMSocket.RPC的WebApi组件,<br>可以通过该组件创建WebApi服务解析器,让桌面端、Web端、移动端可以跨语言调用RPC函数。<br>功能支持路由、Get传参、Post传参等。|
|[![NuGet version (RRQMSocket.RPC.XmlRpc)](https://img.shields.io/nuget/v/RRQMSocket.RPC.XmlRpc.svg?label=RRQMSocket.RPC.XmlRpc)](https://www.nuget.org/packages/RRQMSocket.RPC.XmlRpc/)| XmlRpc是一个扩展于RRQMSocket.RPC的XmlRpc组件,<br>可以通过该组件创建XmlRpc服务解析器,完美支持XmlRpc数据类型,类型嵌套,<br>Array等,也能与CookComputing.XmlRpcV2完美对接。不限Web,Android等平台。|
| [![NuGet version (RRQMSocket.RPC.JsonRpc)](https://img.shields.io/nuget/v/RRQMSocket.RPC.JsonRpc.svg?label=RRQMSocket.RPC.JsonRpc)](https://www.nuget.org/packages/RRQMSocket.RPC.JsonRpc/)| JsonRpc是一个扩展于RRQMSocket.RPC的JsonRpc组件,<br>可以通过该组件创建JsonRpc服务解析器,支持JsonRpc全部功能,可与Web,Android等平台无缝对接。|
| [![NuGet version (RRQMSocket.Http)](https://img.shields.io/nuget/v/RRQMSocket.Http.svg?label=RRQMSocket.Http)](https://www.nuget.org/packages/RRQMSocket.Http/) | RRQMSocket.Http是一个能够简单解析Http的服务组件,<br>能够快速响应Http服务请求。|
## 🖥支持环境
- .NET Framework4.5及以上。
- .NET Core3.1及以上。
- .NET Standard2.0及以上。
## 🥪支持框架
- WPF
- Winform
- Blazor
- Xamarin
- Mono
- Unity
- 其他(即所有C#系)
## 🌴RRQMSocket特点速览
#### 对象池
对象池在RRQMSocket有很多应用,最主要的两个就是**连接对象池**和**处理对象池**。连接对象池就是当客户端成功连接时,首先会去连接对象池中找SocketClient,然后没有的话,才会创建。如果哪个客户端掉线了,它的SocketClient就会被回收。
然后就是处理对象池,在RRQMSocket中,接收数据的线程和IOCP内核线程是分开的(也可以设置拥塞接收),也就是比如说客户端给服务器发送了1w条数据,但是服务器收到后处理起来很慢,那传统的iocp肯定会放慢接收速率,然后通知客户端的tcp窗口,发生拥塞,然后让客户端暂缓发送。但是在RRQMSocket中会把收到的数据通过队列全都存起来,首先不影响iocp的接收,同时再分配线程去处理收到的报文信息,这样就相当于一个“泄洪湖泊”,能很大程度的提高处理数据的能力。
#### 多线程
由于有**处理对象池**的存在,使多线程处理变得简单。在客户端连接完成时,会自动分配该客户端辅助类(TcpSocketClient)的消息处理逻辑线程,假如服务器线程数量为10,则第一个连接的客户端会被分配到0号线程中,第二个连接将被分配到1号线程中,以此类推,循环分配。当某个客户端收到数据时,会将数据排入当前线程所独自拥有的队列当中,并唤醒线程执行。
#### 传统IOCP和RRQMSocket
RRQMSocket的IOCP和传统也不一样,就以微软官方示例为例,使用MemoryBuffer开辟一块内存,均分,然后给每个会话分配一个区接收,等收到数据后,再**复制**源数据,然后把复制的数据进行处理。而RRQMSocket是每次接收之前,从内存池拿一个可用内存块,然后**直接用于接收**,等收到数据以后,直接就把这个内存块抛出处理,这样就避免了**复制操作**,虽然只是细小的设计,但是在传输**1000w**次**64kb**的数据时,性能相差了**10倍**。
#### 数据处理适配器
相信大家都使用过其他的Socket产品,例如HPSocket,SuperSocket等,那么RRQMSocket在设计时也是借鉴了其他产品的优秀设计理念,数据处理适配器就是其中之一,但和其他产品的设计不同的是,RRQMSocket的适配器功能更加强大,它不仅可以提前解析数据包,还可以解析数据对象。例如:可以使用固定包头对数据进行预处理,从而解决数据分包、粘包的问题。也可以直接解析HTTP协议,经过适配器处理后传回一个HttpRequest对象等。
#### 粘包、分包解决
在RRQMSocket中处理TCP粘包、分包问题是非常简单的。只需要更改不同的**数据处理适配器**即可。例如:使用**固定包�
没有合适的资源?快使用搜索试试~ 我知道了~
物联网系统 RRQMSocket.zip
共518个文件
cs:481个
png:8个
csproj:8个
需积分: 9 5 下载量 81 浏览量
2021-11-01
17:09:50
上传
评论
收藏 2.21MB ZIP 举报
温馨提示
RRQMSocket是一个整合性的、超轻量级的、可以免费商用使用的网络通信服务框架。 它具有 高并发连接 、 高并发处理 、 事件订阅 、 插件式扩展 、 多线程处理 、 内存池 、 对象池 等特点, 让使用者能够更加简单的、快速的搭建网络框架
资源推荐
资源详情
资源评论
收起资源包目录
物联网系统 RRQMSocket.zip (518个子文件)
ClassDiagram.cd 21KB
JsonSerializerInternalReader.cs 115KB
JToken.cs 101KB
LinqBridge.cs 98KB
JsonTextReader.cs 96KB
JsonWriter.Async.cs 92KB
XmlNodeConverter.cs 79KB
JsonTextWriter.Async.cs 78KB
JsonTextReader.Async.cs 78KB
DefaultContractResolver.cs 73KB
JsonWriter.cs 63KB
ConvertUtils.cs 55KB
TcpRpcClient.cs 53KB
JsonSerializerInternalWriter.cs 51KB
JsonSerializer.cs 50KB
JsonConvert.cs 45KB
JsonReader.cs 43KB
ReflectionUtils.cs 43KB
JValue.cs 41KB
JsonValidatingReader.cs 39KB
FileClient.cs 37KB
JContainer.cs 37KB
JObject.cs 31KB
BsonReader.cs 31KB
RpcSocketClient.cs 30KB
JPath.cs 30KB
DateTimeUtils.cs 30KB
JsonTextWriter.cs 29KB
UdpRpcClient.cs 29KB
XmlTool.cs 27KB
CodeGenerator.cs 26KB
FileSocketClient.cs 26KB
ByteBlock.cs 24KB
TcpClient.cs 23KB
JavaScriptUtils.cs 23KB
TcpService.cs 23KB
ProtocolClient.cs 22KB
JsonRpcParser.cs 21KB
JsonSerializerSettings.cs 21KB
JsonSchemaGenerator.cs 20KB
TypeExtensions.cs 20KB
ProtocolSocketClient.cs 20KB
JsonSchemaBuilder.cs 20KB
RRQMBinaryFormatter.cs 19KB
DictionaryWrapper.cs 19KB
JsonTypeReflector.cs 19KB
SocketClient.cs 18KB
BsonWriter.cs 18KB
UdpRpcParser.cs 17KB
JTokenWriter.cs 17KB
TraceJsonWriter.cs 17KB
DynamicReflectionDelegateFactory.cs 17KB
DynamicProxyMetaObject.cs 17KB
JArray.cs 16KB
UdpSession.cs 16KB
Extensions.cs 16KB
EnumUtils.cs 16KB
ExpressionReflectionDelegateFactory.cs 16KB
JsonRpcClient.cs 15KB
JsonSchema.cs 15KB
JsonReader.Async.cs 14KB
PropertyCodeGenerator.cs 14KB
TcpParser.cs 14KB
JsonArrayContract.cs 14KB
CollectionUtils.cs 13KB
MethodBinder.cs 13KB
RPCService.cs 13KB
SerializeConvert.cs 13KB
JProperty.cs 13KB
BsonBinaryWriter.cs 13KB
FixedHeaderDataHandlingAdapter.cs 12KB
JsonContract.cs 12KB
JsonProperty.cs 12KB
StringUtils.cs 12KB
DiscriminatedUnionConverter.cs 12KB
JsonSchemaWriter.cs 11KB
ImmutableCollectionsUtils.cs 11KB
HttpHeaders.cs 11KB
JTokenReader.cs 11KB
Channel.cs 11KB
JsonDictionaryContract.cs 11KB
WebApiParser.cs 11KB
XmlDataTool.cs 10KB
JToken.Async.cs 10KB
JsonSerializerProxy.cs 10KB
DynamicUtils.cs 10KB
JsonPropertyAttribute.cs 10KB
FSharpUtils.cs 10KB
DataTableConverter.cs 10KB
DefaultSerializationBinder.cs 10KB
DateTimeParser.cs 10KB
AppMessenger.cs 10KB
JConstructor.cs 10KB
RegexConverter.cs 10KB
QueryExpression.cs 9KB
CollectionWrapper.cs 9KB
TerminatorDataHandlingAdapter.cs 9KB
FileStreamPool.cs 8KB
JsonPropertyCollection.cs 8KB
IsoDateTimeConverter.cs 8KB
共 518 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
dhao23
- 粉丝: 12
- 资源: 83
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功