# RRQMSocket **Repository Path**: the-source-of-wind/RRQMSocket ## Basic Information - **Project Name**: RRQMSocket - **Description**: RRQMSocket是一个整合性网络通信框架,特点是支持高并发、事件驱动、易用性强、二次开发难度低等。其中主要内容包括:TCP服务通信框架、文件传输、RPC等内容 - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/RRQM_Home - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 843 - **Created**: 2021-04-10 - **Last Updated**: 2021-04-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
#### 2.3 客户端工作流程
#### 2.4 粘包、分包处理架构

## 三、TCP框架
#### 3.1 创建TCP框架
几行代码就可以搭建出完整的TCP高性能框架,具体创建步骤详见[RRQMSocket创建高并发、高性能TCP框架](https://blog.csdn.net/qq_40374647/article/details/110679663?spm=1001.2014.3001.5501)。
#### 3.2 特点
- 简单易用。
- 多线程处理。
- IOCP完美设计模型,避免收到数据再复制。
- 简单、稳定管理客户端连接,自动检验客户端活性。
- 超简单的解决粘包、分包问题,详见[RRQMSocket解决TCP粘包、分包问题](https://blog.csdn.net/qq_40374647/article/details/110680179?spm=1001.2014.3001.5501)。
- 内存池设计,避免内存重复申请、释放。
- 对象池设计,避免数据对象的申请、释放。
#### 3.3 性能
**固定包头解析**
不难看出,在固定包头分包策略中,吞吐量大概在20w左右,而且基本没有GC。
## 四、文件传输框架
#### 4.1 创建文件服务器框架
几行代码就可以搭建出完整的高性能文件传输框架,具体创建步骤详见[RRQMSocket创建文件传输、大文件续传框架](https://blog.csdn.net/qq_40374647/article/details/100546120?spm=1001.2014.3001.5501)。
#### 4.2 特点
- 简单易用。
- 多线程处理。
- 高性能,传输速度可达500Mb/s。
- 超简单的传输限速设置,1k-10Gb 无级调节。
- 超简单的传输速度、传输进度获取。
- 随心所欲的暂停、继续、停止传输。
- 系统化的权限管理,让敏感文件只允许私有化下载。
- 随时发送消息,让客户端和服务器交流不延迟。
- 基于事件驱动,让每一步操作尽在掌握。
- 可视化的文件块流,可以实现像迅雷一样的填充式进度条。
- 超简单的断点续传设置,为大文件传输保驾护航。
- 无状态上传断点续传设置,让同一个文件,在不同客户端之间接力上传。
- 已经上传的文件,再次上传时,可实现快速上传。
- 极少的GC释放。
#### 4.3 Demo示例
**Demo位置:** [RRQMSocket.FileTransfer.Demo](https://gitee.com/RRQM_Home/RRQMSocket.FileTransfer.Demo)
**说明:** 可以看到,图一正在上传一个Window的系统镜像文件,大约4.2Gb,传输速度已达到346Mb/s,这是因为服务器和客户端在同一电脑上,磁盘性能限制导致的。其次,GC基本上没有释放,性能非常强悍,图二是下载文件,性能依旧非常强悍。


## 五、RPC框架
#### 5.1 创建RPC框架
几行代码就可以搭建出完整的高性能文件传输框架,具体创建步骤详见[RRQMSocket创建RPC高性能微框架,支持任意序列化、out及ref](https://blog.csdn.net/qq_40374647/article/details/109143243?spm=1001.2014.3001.5501)。
#### 5.2 特点
- 简单易用。
- 多线程处理。
- 高性能,在保证送达但不返回的情况下,10w次调用用时0.8s,在返回的情况下,用时3.9s。
- 支持TCP、UDP等不同的协议调用相同服务。
- 支持指定服务异步执行。
- 支持权限管理,让非法调用死在萌芽时期。
- 全自动代码生成,可使用系统编译,也可以自己使用源代码编译。
- 代理方法会生成异步方法,支持客户端异步调用。
- 支持out、ref,参数设定默认值等。
- 随心所欲的序列化方式,除了自带的[超轻量级二进制序列化](https://blog.csdn.net/qq_40374647/article/details/114178244?spm=1001.2014.3001.5501)、xml序列化外,用户可以自己随意使用其他序列化。
- 支持编译式调用,也支持方法名+参数式调用。
- 全异常反馈,服务里发生的异常,会一字不差的反馈到客户端。
- 超简单的回调方式。
#### 4.3 Demo示例
**Demo位置:** [RRQMSocket.RPC.Demo](https://gitee.com/RRQM_Home/RRQMSocket.RPC.Demo)
**说明:**
图一、图二、图三分别为`UDP无反馈调用`、`TCP有反馈调用`、`TCP连接池有反馈调用`。调用次数均为10w次,调用性能非常nice。在无反馈中,吞吐量达14.28w,在有反馈中达2.72w,简直秒杀WCF(WCF使用http协议,在本机测试吞吐量为310)



## 六、致谢
谢谢大家对我的支持,如果还有其他问题,请加群QQ:234762506讨论。
## 七、赞助
您的支持就是我不懈努力的动力。打赏时请一定留下您的称呼。
**赞助总金额:266.6¥**
**赞助名单:**
(以下排名只按照打赏时间顺序)
> 1.Bobo Joker
> 2.UnitySir
