c# socket 大数据_.NET中高性能、高可用性Socket通讯库

本文介绍了作者开发的一款C# Socket通信库,旨在实现高性能和易用性的统一。该库基于完成端口(IoCP)进行封装,适用于.NET Core平台,支持Windows和Linux。系统分为IocpCore和EasyNetMessage两个模块,前者提供底层字节流处理,后者提供面向对象的NetPacket数据传输。通过详细的性能测试,展示了系统在不同数据量下的响应时间和传输能力,证明了其高效稳定的特点。
摘要由CSDN通过智能技术生成

(给DotNet加星标,提升.Net技能)

转自: 源之缘 cnblogs.com/yuanchenhui/p/iocpcore.html

前言 

本人从事编程开发十余年,因为工作关系,很早就接触socket通讯编程。常言道:人在压力下,才可能出非凡的成果。我从事的几个项目都涉及到通讯,为我研究通讯提供了平台,也带来了动力。处理socket通讯对初学者而言,具有很大的挑战性。

我有个梦想:能不能开发一套系统,能很好的实现性能和易用性的统一。高性能socket采用iocp(完成端口)是唯一选择。iocp像一匹烈马,虽然性能优良,但不宜驯服。

本套系统为这匹烈马套上了枷锁,让他变得温顺;但是,当你需要他时,又能迸发出强劲的动力。本文就介绍该系统如何实现易用性和高性能的统一。

此库的特点:高性能与易用性完美统一;全部自主编码,反复测试,尽最大程度做到了bug free。 

基于本文介绍的网络模块,开发的文件快速传输系统。

系统简介

1、系统采用c#,可以在.net core平台编译通过。所以可运行在windows、linux平台。

2、系统有两个模块组成IocpCore,EasyNetMessage。IocpCore对完成端口进行了封装,EasyNetMessage在IocpCore基础上进一步封装,实现了易用性。可在EasyNetMessage基础上,进一步扩展,实现分布式系统(类似WCF)。

3、系统只实现了TCP通讯,秉承simple is best的理念,不为过于冗余的功能干扰。

4、系统突出专业性(professional)。为了测试稳定性,开发了专门的测试程序,反复对系统蹂躏,检验系统的稳定性。为了测试性能,做了精确计时,检验每个功能点的效率。

网上也有很多第三方网络库,好像没有必要再另起炉灶。但这些库大部分无法满足专业性、易用性要求。通过对系统API封装,可以完全了解底层特性,由于所有代码都是自己亲自编写,做到了心中有数,对所有代码了然于心。即使系统出现bug,也可以很快解决。

性能指标

Iocp是可扩展性通讯模型,就是不随着连接数增加而导致性能下降。所支持的连接数只与平台硬件有关。本系统保守估计可以支持10万个连接。普通平台下,可以满足千兆网传输需求。

设计思路

如果网络库可以用到各种场景,所处理的逻辑必须与业务无关。系统采用分层处理,底层处理字节流的收发,完全与业务无关。底层的目标就是收发速度足够快。

再上一层,就是对完整的数据包处理,处理的关键是如何将数据流分割成完整的数据包。再向上就是应用层,将收到的数据包转换成类,上层只需对c#类处理,不用关心底层细节。

0ceaa2a8f662fc537ec364a13c8e9157.png

IocpCore 模块介绍

本模块对iocp封装,充分挖掘iocp的潜质;可以处理字节流也可以处理一个完整的包。

对外接口:

public class SocketEventParam
{
public EN_SocketEvent SocketEvent;
public SocketClientInfo ClientInfo;
public Socket Socket;
public byte[] Data { get; set; }
public SocketEventParam(EN_SocketEvent socketEvent, Socket socket){
SocketEvent = socketEvent;
Socket = socket;
}<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值