• SuperSocket基础一


    SuperSocket基础(一)——————基本概念


    项目中之前一直使用TCP socket服务框架,但是不利于扩展。最近刚接触到开源的superSocket感觉很不错,特记录一下。官方开源地址:http://www.supersocket.net/

    基本概念:

    SuperSocket:是一个可扩展的Socket开源框架,是一个轻量级、跨平台而且可扩展的.Net/Mono Socket 服务器程序框架。可以轻松的使用SuperSocket开发出一款Socket服务软件。

    功能特点:

    1、高性能的事件驱动通信。

    2、简单易用,创建几个类即可获得一个健壮的Socket服务器。

    3、内置的命令协议能够迅速创建一个网络命令行接口服务器。

    4、强大的性能的协议解析实现工具简化了网络数据的分析工作。

    5、灵活的配置和友好的API。

    6、多监听器支持,让一个服务器实例监听多个客户端。

    7、多服务器的实例托管的支持复杂的部署需求。

    8、应用程序域和进程级别的隔离能够满足大部分的宿主场景。

    9、内置的SSL/TLS加密支持。

    10、会话级别的发送队列能够通过会话并发送数据,并保持高性能和可控性。

    11、SuperSocket的命令处理模式让你的业务逻辑更清晰,更有条例。

    12、优良的可扩展 API 支持: Command Filter, Connection Filter, Command Loader;

    13、可替换的日志框架能够满足喜欢的日志组件。

    14、动态语言的支持,允许Python等脚本语言来实现命令。

    15、与Mono/Linux保持二进制级别的兼容。

    架构设计示意图:

    层次示意图:

    层次解析:

    SuperSocket 层次

    一、设备层:基于flash和SilverLight的策略服务器和基于接收过滤器的协议实施。

    二、应用层:可扩展的应用程序服务:包括多种API集成。会话容器和命令框架。

    三、套接字层: 通过传输协议TCP和UDP的事件驱动套接字服务。

    SuperSocket对象模型示意图

    对象模型示意图

    模型解析:

    1、应用服务AppServer 包括命令Commands, 会话容器Session contaioner。

    2、对象层次:基本配置Config->命令过滤器Command Filters->日志和日志工厂Log/LogFactory->命令装载机CommandLoaders->接收过滤器工厂ReceiveFilterFactory->连接过滤Connection Filters。

    3、Socket 服务:多客户端监听,TCP1 、TCP2、。。。。UDP。

    SuperSocket 请求处理模型示意图

    模型解析:

    1、客户端携带数据流与Server端Socket Listener建立连接之后,SuperSocket 服务就将这一个连接视为一个Session会话。表示客户端和服务器端的一个逻辑连接,数据的收发都是在这个Session中进行处理的(此过程中的数据流为二进制数据)。

    2、携带数据流的Session通过默认或者自定的接受过滤器将过滤后的数据传递到RequestInfo对象。每一个客户端对象都得实例化一个RequestInfo类,将接收到的二进制流转换成请求的实例。详细的概念将在下文中进行整理总结。

    3、根据RequestInfo执行Command命令,一个Command 包含一个Session和RequestInfo,在Command中根据需求解析数据。也可通过Session向客户端发送数据,例如有些DTU或者RTU设备需要发送指令才能返回数据。


    通过请求处理模型可以总结基本的开发流程:

    1、实例化AppServer对象,时刻监听客户端的会话。

    2、定义RequestInfo实体类型,接收和处理二进制字符流。

    3、定义数据接收过滤器,ReceiveFilter,接收过滤后的数据,并将数据赋值给RequestInfo实体类型。

    4、在appServer的构造函数中继承使用接收过滤工厂RequestFilterFactory,并执行自定的ReceiveFilter和RequestInfo。

    5、在1的数据请求委托事件中解析并使用RequestInfo实体中对应的数据。


    下一篇以官方实例为例进行总结

  • 相关阅读:
    二次封装CoreData
    <html>
    [bzoj1031][JSOI2007]字符加密Cipher
    kernel build &amp; preempt-rt patch &amp; xenomai
    java 微信server录音下载到自己server
    shell文本过滤编程(十一):paste命令
    经验总结21--抓取WEB数据,汇率,HtmlAgilityPack
    iOS 获取appstore 版本
    poj 3259 Wormholes 【SPFA&amp;&amp;推断负环】
    【ruby项目,语言提交检查(一)】怎样高速学习ruby ?
  • 原文地址:https://www.cnblogs.com/dongteng/p/7385430.html
Copyright © 2020-2023  润新知