认识SuperSocket 1.6.4

 SuperSocket 是一个轻量级的可扩展的 Socket 开发框架,由江振宇先生开发,之所以选用它是因为一下几点恰好复合项目需求:

  • 开源,基于Apache 2.0协议,可以免费使用到商业项目.
  • 高性能的事件驱动通信.
  • 会话级别的发送队列能够让你通过会话并发的发送数据,并保持高性能和可控性.
  • 强大且高性能的协议解析实现工具帮你简化了网络数据的分析工作:自带多种数据帧过滤器,可实现自己的数据帧过滤器,可自定义数据内容协议,粘包拆包都是浮云.
  • 轻量级意味着组件可以自由选择使用,可根据环境变化变更.

 

 

 SuperSocket的架构和设计可以在官方的中文文档查询到http://docs.supersocket.net/v1-6/zh-CN/Architecture-Diagrams 

SuperSocket的工作流程如图:

每个连接的客户端都以session的方式管理,发送数据给客户端也通过session的send方法,每个客户端发过来的数据流都经过ReceiveFilter过滤器(这里即可自定义协议或者使用自带的一些帧过滤器)到ReqestInfo,ReqestInfo包含了该条数据内容,当然如果是自定义的协议,可以实现自己的ReqestInfo,把数据包内容直接装入帧对象.

 

 官方的文档和demo也是花了一段时间才知道怎么使用达到项目需求的功能,由于项目是做采集设备数据的TCP服务器,通信帧格式也是比较常见的设计,所以大概个需求明白了,官方的文档和demo里没有详细讲解这一块,但是也基本指引了我们该怎么去做这样的一个服务程序.

首先,官方文档最简单示例是:Telnet服务器.

Telnet示例: 默认的AppServer是设计成了Telnet方式的协议,所以直接配置->启动->注册连接,断开,数据接收事件->逻辑处理,就完成最简单的功能了,用windows自带的Telnet调试即可明白.同时学习SuperSocket的还有一点就是看下载的sourcecode的quickstrat项目,各种场景都涉及到了.

虽然SuperSocket是一个屌炸天的框架,但是默认的AppServer我相信还是不符合大部分人是开发场景,我只想用里面最普通的TCP服务器功能,收发下数据,管理下连接,又或者我要实现带XXX协议的过滤的TCP服务器,我根本就不想用Telnet.所以,拓展AppServer那是必须的功课了.

为了减少码农的工作量,有时间去泡妹子,伟大的SuperSocket真是无微不至,自带了各种常见的帧过滤器,内置的常用协议实现模版如下:

  • TerminatorReceiveFilter (SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter, SuperSocket.SocketBase)
  • CountSpliterReceiveFilter (SuperSocket.Facility.Protocol.CountSpliterReceiveFilter, SuperSocket.Facility)
  • FixedSizeReceiveFilter (SuperSocket.Facility.Protocol.FixedSizeReceiveFilter, SuperSocket.Facility)
  • BeginEndMarkReceiveFilter (SuperSocket.Facility.Protocol.BeginEndMarkReceiveFilter, SuperSocket.Facility)
  • FixedHeaderReceiveFilter (SuperSocket.Facility.Protocol.FixedHeaderReceiveFilter, SuperSocket.Facility)

以上模板的使用可参考官方文档http://docs.supersocket.net/v1-6/zh-CN/The-Built-in-Common-Format-Protocol-Implementation-Templates

这里前几个模板可能使用不是复杂,使用场景也比较少,至于BeginEndMarkReceiveFilter和FixedHeaderReceiveFilter的使用就稍微复杂,但是他们基本可以满足比较常用的行业使用的协议.

 

后一篇将做一个demo使用FixedHeaderReceiveFilter来解析自定义的协议帧

 

本文由http://www.cnblogs.com/xiepeixing/原创,转载请著名出处

posted @ 2015-01-12 16:41  xiepeixing  阅读(9197)  评论(0编辑  收藏  举报