DotNetty
DotNetty是微软的Azure团队,使用C#实现的Netty的版本发布。不但使用了C#和.Net平台的技术特点,并且保留了Netty原来绝大部分的编程接口。让我们在使用时,完全可以依照Netty官方的教程来学习和使用DotNetty应用程序。
Netty 是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。
优点
- 关注点分离——业务和网络逻辑解耦;
- 模块化和可复用性;
- 可测试性作为首要的要求
历史
- 阻塞Socket通信特点:
- 建立连接要阻塞线程,读取数据要阻塞线程
- 如果要管理多个客户端,就需要为每个客户端建立不同的线程
- 会有大量的线程在休眠状态,等待接收数据,资源浪费
- 每个线程都要占用系统资源
- 线程的切换很耗费系统资源
- 非阻塞Socket(NIO)特点:
- 如图,每个Socket如果需要读写操作,都通过事件通知的方式通知选择器,这样就实现了一个线程管理多个Socket的目的。
- 选择器甚至可以在所有的Socket空闲的时候允许线程先去干别的事情
- 减少了线程数量导致的资源占用,减少了线程切换导致的资源消耗
Netty设计的关键点
异步和事件驱动是Netty设计的关键
核心组件
- Channel:一个连接就是一个Channel
- 回调:通知的基础
更多详情 https://blog.csdn.net/nxy_wuhao/article/details/102812324 https://blog.csdn.net/a1234012340a/article/details/91040073
Supersocket
SuperSocket是重量轻的可扩展套接字应用程序框架。您可以使用它轻松构建始终连接的套接字应用程序,而无需考虑如何使用套接字,如何维护套接字连接以及套接字如何工作。这是一个纯C#项目,旨在进行扩展,因此只要以.NET语言开发它们,就可以轻松地将它们集成到您的现有系统中。
首先安装:SuperSocket.Engine
地址 https://blog.csdn.net/weixin_41181778/article/details/103994362
SuperSoket的三大对象:
- Session: 每一个用户连接就是一个Session
- AppServer: Socket服务器实例
- Commands: 客户端向服务器发送消息的命令集合