当前位置: 首页 > 软件库 > 程序开发 > 网络工具包 >

BeetleX

轻量级高性能 TCP 通讯组件
授权协议 未知
开发语言 C#
所属分类 程序开发、 网络工具包
软件类型 开源软件
地区 国产
投 递 者 刘棋
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

BeetleX

beetleX是基于dotnet core实现的轻量级高性能的TCP通讯组件,使用方便、性能高效和安全可靠是组件设计的出发点!开发人员可以在Beetlx组件的支持下快带地构建高性能的TCP通讯服务程序,在安全通讯方面只需要简单地设置一下SSL信息即可实现可靠安全的SSL服务。

使用方便性

beetleX网络流读写是基于Stream标准来构建,仅仅基于Stream的基础读写对于应用者来说还是过于繁琐;组件为了更方便进行网络数据处理在Stream的基础之上扩展了一系列的读写规则:ReadLine、ReadInt、WriteLine、WriteInt等一系列简便方法,在这些方法的支持下使用者就可以更轻松地处理数据;为了在网络通讯中更好的兼容其他平台协议以上方法都兼容Big-Endian和Little-Endian不同方式。为了更好地利用现有序列化组件,组件通过IPacket接口规范消息扩展,通过实现不同的Packet解释器,即可以实现基于Protobuf,json和Msgpack等方式的对象数据传输。

高性能特性

beetleX的高性能是建立在内部一个数据流处理对象PipeStream,它是构建在Stream标准之上;它和.NET内置的NetworkStream最大的差别是PipeStream的读写基于SocketAsyncEventArgs实现,这正是在编写高性能网络数据处理所提倡的模式。PipeStream不仅在网络数据处理模式上有着性能的优势,在内存读写上和MemoryStream也有着很大的区别;由于PipeStream的内存块是以一个基于链表的SocketAsyncEventArgs Buffer 组成,因此PipeStream在写入大数据的情况并不存在内存扩容和复制的问题;因为PipeStream基础内存是SocketAsyncEventArgs Buffer,所以在数据和网络缓存读写并不存在内存块复制过程。如果在应用中中使用PipeStream相应的BinaryReader和IBinaryWriter读写规范,那大部分数据处理基本不存在内存复制过程,从而让数据处理性能更高效。

以下是PipeStream的结构: 


性能

beetleX的性能到底怎样呢,以下简单和DotNetty进行一个网络数据交换的性能测试,分别是1K,5K和10K连接数下数据请求并发测试

DotNetty测试代码

        public override void ChannelRead(IChannelHandlerContext context, object message)
        {
            var buffer = message as IByteBuffer;
            context.WriteAsync(message);
        }

Beetlex 测试代码

        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            server.Send(e.Stream.ToPipeStream().GetReadBuffers(), e.Session);
            base.SessionReceive(server, e);
        }

测试结果

1K connections



5K connections

输入图片说明输入图片说明

10K connections

输入图片说明输入图片说明

  •     园子里有同学介绍 BeetleX.FastHttpApi  组件,可以在 应用程序或服务中 搭建 web 服务 ,看起来挺强大的 。 通过 html +  css + js  做为应用程序UI ,winform 做为后端,完美替代 WPF + WCF。 搭建要点如下:   1. BeetleX.FastHttpApi  通过 Nuget 包管理器获取。 其宿主环境需运行在 .net fra

  • BeetleX是.net core平台下的一个开源TCP 通讯组件,它不仅使用简便还提供了出色性能的支持,可以轻易让你实现上百万级别RPS吞吐的服务应用。组件所提供的基础功能也非常完善,可以让你轻易扩展自己的服务应用,以下提组件集成的功能: 完善的会话管理机制,可以根据连接状态和相关日志 专门针对内存池实现的异步流读写,支持标准Stream的同并提供高效的性能 消息IO合并,广播序列化合并等性能强

  • 首次使用Beetlex ,做个记录  using BeetleX; using BeetleX.Clients; using System; using System.Collections.Generic; using System.Configuration; using System.Diagnostics; using System.Linq; using System.Net; usin

  •         BeetleX.FastHttpApi.Jwt组件是BeetleX.FastHttpApi的JWT安全验证插件,通组件的简单配置即可以实现对webapi进行安全访问控制。接下来介绍如何使用这组件并和其他自定义验证兼容。 使用         本示例需要引用两个组件分别是:BeetleX.FastHttpApi.Hosting和BeetleX.FastHttpApi.Jwt。前者是简

 相关资料
  • 问题内容: JPanel和JFrame有什么区别,以及与轻量级,重量级的关系? 问题答案: JPanel是允许将多个UI组件放在一起的容器。JFrame是使用Swing编写的窗口。 所有的Swing组件都是所谓的“轻型”组件,因为它们是用Java编写的。例如,如果您运行Swing应用程序并尝试使用UI分析工具(例如Windows中的WinSpy)对其进行分析,则只会看到一个元素:窗口(JFrame

  • 本文向大家介绍php轻量级的性能分析工具xhprof的安装使用,包括了php轻量级的性能分析工具xhprof的安装使用的使用技巧和注意事项,需要的朋友参考一下 一、前言   有用的东西还是记录下来吧,也方便以后的查询;这次记录一下xhprof的安装使用;   xhprof是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,   还可以用在生产环境中,也可

  • 现在我们熟悉了组件基础知识,可以做一些更有趣的事情。

  • 问题内容: 我知道Swing被认为是轻量级的,因为它是完全用Java实现的,而无需调用本机操作系统来绘制图形用户界面组件。 另一方面,AWT(抽象窗口工具箱)是重量级的工具箱,因为它仅调用操作系统以产生其GUI组件。 但是我听说Swing仍然基于AWT,甚至Swing组件也必须至少有一个重量级的容器。换句话说,JFrame,JApplet不是轻量级的,是真的吗?找出你的原因? 问题答案: JFra

  • 本文向大家介绍jquery性能优化高级技巧,包括了jquery性能优化高级技巧的使用技巧和注意事项,需要的朋友参考一下 有时候我们在书写jquery的时候,为了书写代码方便,往往忽略了程序执行过程中,给客户端带来的压力。随之而来的就是在某些低端浏览器或者低端电脑上运行速度缓慢,甚至无法运行等问题。 因此我们有必要对我们自己书写的jquery代码进行优化,以达到更快捷、更流畅的运行效果。 jquer

  • 本章主要介绍: 迭代器 生成器 上下文管理器