1 Star 0 Fork 182

御风踏青岚 / RRQMSocket

forked from dotNET China / RRQMSocket 
加入 Gitee
与超过 600 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.md

图片名称

NuGet version (RRQMSocket) License Download star fork

日月之行,若出其中;星汉灿烂,若出其里。

一、程序集描述

  RRQMSocket是一个整合性的、超轻量级的网络通信框架。支持C#语言系全平台(.NET Framework4.5及以上,.NET Core3.1及以上,.net standard2.0及以上),支持C#语言系全框架(WPF、Winform、Blazor、Xamarin、Mono、Unity等)。它具有高并发、事件订阅、插件式扩展、自动活性检测、多线程处理等特点,让使用者能够更加简单的、快速的搭建网络框架。

  目前RRQMSocket支持的传输层协议有TCP和UDP两款,基于这两大协议的支持,使得RRQMSocket能够解析绝大部分应用层协议,比如耳熟能详的HTTP、FTP、Telnet、POP3、SMTP、DNS等,不仅如此,RRQMSocket还内置了多种分包算法,使跨语言解析变得更加简单快捷。

  RRQMSocket内部设计大量引用了内存池、对象池、等待池、线程池等众多“池”化设计,使得整个框架在接收和发送数据时基本上避免了“创建-销毁”的性能消耗。而且在接收数据时设计了完美的IOCP模型,不仅避免了接收数据的再复制行为,还让数据接收与数据处理分线程操作,大大减轻了内核的负担,让内核专注于接收,性能由此提升不少。这些优化行为的最终结果就是让RRQMSocket拥有超强的数据接收处理能力,这也就意味着它的适用场景也更加广泛,您可以用它开发分布式服务器、游戏服务器、文件管理服务器、即时通信服务器等。我相信,它的表现一定令您满意。

  除了基本的框架外,程序集内还开发出了一些成熟框架,目前有文件传输框架RPC框架两种,后续还会不断更新添加其他框架,希望大家多多支持和关注。

联系作者

API文档

RRQMSocket API文档

(文档目前还在积极完善当中)

二、程序集架构概述

2.1 常用类继承图

输入图片说明

输入图片说明

2.2 服务器工作流程

图片名称

2.3 客户端工作流程

图片名称

2.4 粘包、分包处理架构

输入图片说明

三、TCP框架

3.1 创建TCP框架

几行代码就可以搭建出完整的TCP高性能框架,具体创建步骤详见RRQMSocket创建高并发、高性能TCP框架

3.2 特点

  • 简单易用。
  • 多线程处理。
  • IOCP完美设计模型,避免收到数据再复制。
  • 简单、稳定管理客户端连接,自动检验客户端活性。
  • 超简单的解决粘包、分包问题,详见RRQMSocket解决TCP粘包、分包问题
  • 内存池设计,避免内存重复申请、释放。
  • 对象池设计,避免数据对象的申请、释放。

3.3 性能

固定包头解析

不难看出,在固定包头分包策略中,吞吐量大概在20w左右,而且基本没有GC。

图片名称

四、文件传输框架

4.1 创建文件服务器框架

几行代码就可以搭建出完整的高性能文件传输框架,具体创建步骤详见RRQMSocket创建文件传输、大文件续传框架

4.2 特点

  • 简单易用。
  • 多线程处理。
  • 高性能,传输速度可达500Mb/s。
  • 超简单的传输限速设置,1k-10Gb 无级调节。
  • 超简单的传输速度、传输进度获取。
  • 随心所欲的暂停、继续、停止传输。
  • 系统化的权限管理,让敏感文件只允许私有化下载。
  • 随时发送消息,让客户端和服务器交流不延迟。
  • 基于事件驱动,让每一步操作尽在掌握。
  • 可视化的文件块流,可以实现像迅雷一样的填充式进度条。
  • 超简单的断点续传设置,为大文件传输保驾护航。
  • 无状态上传断点续传设置,让同一个文件,在不同客户端之间接力上传。
  • 已经上传的文件,再次上传时,可实现快速上传。
  • 极少的GC释放。

五、RPC框架

5.1 创建RPC框架

几行代码就可以搭建出完整的高性能文件传输框架,具体创建步骤详见RRQMSocket创建RPC高性能微框架,支持任意序列化、out及ref

5.2 特点

  • 简单易用。
  • 多线程处理。
  • 高性能,在保证送达但不返回的情况下,10w次调用用时0.8s,在返回的情况下,用时3.9s。
  • 支持TCP、UDP等不同的协议调用相同服务。
  • 支持指定服务异步执行。
  • 支持权限管理,让非法调用死在萌芽时期。
  • 全自动代码生成,可使用系统编译,也可以自己使用源代码编译。
  • 代理方法会生成异步方法,支持客户端异步调用。
  • 支持out、ref,参数设定默认值等。
  • 随心所欲的序列化方式,除了自带的超轻量级二进制序列化、xml序列化外,用户可以自己随意使用其他序列化。
  • 支持编译式调用,也支持方法名+参数式调用。
  • 全异常反馈,服务里发生的异常,会一字不差的反馈到客户端。
  • 超简单的回调方式。

六、致谢

谢谢大家对我的支持,如果还有其他问题,请加群讨论。谢谢!

七、赞助

您的支持就是我不懈努力的动力。打赏时请一定留下您的称呼。

赞助总金额:266.6¥

赞助名单:

(以下排名只按照打赏时间顺序)

1.Bobo Joker

2.UnitySir

图片名称

仓库评论 ( 0 )

你可以在登录后,发表评论

简介

RRQMSocket是一个整合性网络通信框架,特点是支持高并发、事件驱动、易用性强、二次开发难度低等。其中主要内容包括:TCP服务通信框架、文件传输、RPC等内容 展开 收起
C#
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C#
1
https://gitee.com/YFTQL/RRQMSocket.git
git@gitee.com:YFTQL/RRQMSocket.git
YFTQL
RRQMSocket
RRQMSocket
master

搜索帮助