BeetleX
是.net core
平台下的一个开源TCP
通讯组件,它不仅使用简便还提供了出色性能的支持,可以轻易让你实现上百万级别RPS吞吐的服务应用。组件所提供的基础功能也非常完善,可以让你轻易扩展自己的服务应用,以下提组件集成的功能:
-
完善的会话管理机制,可以根据连接状态和相关日志
-
专门针对内存池实现的异步流读写,支持标准Stream的同并提供高效的性能
-
消息IO合并,广播序列化合并等性能强化功能
-
提供简洁的协议扩展规范,轻易实现http,websocket,mqtt等应用通讯协议
-
支持TLS,让你构建的通讯服务更安全可靠
扩展的组件
以下是Beetlex
扩展的一些功能组件
- https://github.com/IKende/FastHttpApi
- https://github.com/IKende/Bumblebee
- https://github.com/IKende/BeetleX.Redis
- https://github.com/IKende/XRPC
- https://github.com/IKende/HttpClients
性能
一开始说组可以让你现上百万级别RPS吞吐的服务应用其实一点不假,BeetleX
的基础性能有这样的支撑能力;虽然组件不能说是.net core
上性能最好的,但在功能和综合性能上绝对非常出色(详细可以https://tfb-status.techempower.com/ 查看测试结果,可惜这个网站提交的.net core
组件比较少,大部都是基于aspcore的通讯模块扩展).以下是JSON serialization
基础输出的一个测试结果(Plaintext
在官方的测试环境一直没办法跑起来....)
在测试中组件只落后于aspcore-rhtx
这是红帽专门针对 .net core编写的linux网络驱动.
Single query
构建基础TCP应用
组件在构建TCP服务的时候非常简单,主要归功于它提供了完善的Stream
读写功能,而这些功能让你完全不用关心bytes的读写。基于Stream
的好处就是可以轻松和第三方序列化的组件进行整合。以下是简单地构建一个Hello
服务。
class Program : ServerHandlerBase { private static IServer server; public static void Main(string[] args) { server = SocketFactory.CreateTcpServer<Program>(); //server.Options.DefaultListen.Port =9090; //server.Options.DefaultListen.Host = "127.0.0.1"; server.Open(); Console.Read(); } public override void SessionReceive(IServer server, SessionReceiveEventArgs e) { var pipeStream = e.Stream.ToPipeStream(); if (pipeStream.TryReadLine(out string name)) { Console.WriteLine(name); pipeStream.WriteLine("hello " + name); e.Session.Stream.Flush();