1 Star 0 Fork 668

Agdianm / RRQMSocket

forked from 若汝棋茗 / TouchSocket 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

图片名称

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拥有超强的数据接收处理能力,这也就意味着它的适用场景也更加广泛,您可以用它开发分布式服务器、游戏服务器、文件管理服务器、即时通信服务器等。我相信,它的表现一定令您满意。

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

🔗联系作者

✨API文档

RRQMSocket API文档

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

🖥支持环境

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

📦 安装

一、TCP框架

1.1 创建TCP框架

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

1.2 特点

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

二、Token系服务器

2.1 概述

Token系服务器是基于Tcp服务器一款限定连接的服务器,其主要功能就是对即将完成连接的客户端进行筛选,筛选手段就是验证Token,如果Token不符合规定,则直接断开连接,其他功能和Tcp服务器一致。

三、文件传输框架

3.1 创建文件服务器框架

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

3.2 特点

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

3.3 Demo示例

Demo位置: RRQMSocket.FileTransfer.Demo

说明: 可以看到,图一正在上传一个Window的系统镜像文件,大约4.2Gb,传输速度已达到346Mb/s,这是因为服务器和客户端在同一电脑上,磁盘性能限制导致的。其次,GC基本上没有释放,性能非常强悍,图二是下载文件,性能依旧非常强悍。

上传文件 下载文件

四、RPC框架

4.1 创建RPC框架

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

4.2 特点

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

4.3 Demo示例

Demo位置: 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

图片名称
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

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

发行版

暂无发行版

贡献者

全部

近期动态

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

搜索帮助

53164aa7 5694891 3bd8fe86 5694891