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实体中对应的数据。


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

SuperSocket基础一的更多相关文章

  1. SuperSocket基础(二)-----一个完成SocketServer项目

    SuperSocket基础(二)-----一个完成SocketServer项目 由于时间关系未能及时更新,关于SuperSocket,对于初学者而言,一个SuperSock的Server真的不好写.官 ...

  2. SuperSocket基础二

    SuperSocket基础(二)-----一个完整的SocketServer项目 由于时间关系未能及时更新,关于SuperSocket,对于初学者而言,一个SuperSock的Server真的不好写. ...

  3. DotNetty网络通信框架学习之初识Netty

    p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...

  4. SuperSocket 最基础入门

    ---恢复内容开始--- SuperSocket 是什么? 首先我们明确一下SuperSocket 本质是什么? 网络框架 !  ok , 那么我们直接上上官网,作者已经开源到Github,可以做两件 ...

  5. 基于SuperSocket实现的WebSocket(后端)

    关于WebSocket其实很早就想发了,奈何之前项目中的WebSocket的后端不是我做的,而我又想前后端都发出来和大家讨论讨论~于是挤出点时间研究了一下WebSocket的后端实现(所以才有了这篇文 ...

  6. SuperSocket与Netty之实现protobuf协议,包括服务端和客户端

    今天准备给大家介绍一个c#服务器框架(SuperSocket)和一个c#客户端框架(SuperSocket.ClientEngine).这两个框架的作者是园区里面的江大渔. 首先感谢他的无私开源贡献. ...

  7. SuperSocket源码解析之开篇

    一 简介 官方介绍:SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架.你无须了解如何使用 Socket, 如何维护 Socket 连接和 S ...

  8. SuperSocket源码解析之开篇 (转)

    一 简介 官方介绍:SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架.你无须了解如何使用 Socket, 如何维护 Socket 连接和 S ...

  9. SuperSocket入门(五)-常用协议实现模版及FixedSizeReceiveFilter示例

             Socket里面的协议解析是Socket通讯程序设计中最复杂的地方,如果你的应用层协议设计或实现不佳,Socket通讯中常见的粘包,分包就难以避免.SuperSocket内置了命令行 ...

随机推荐

  1. SQLServer 索引总结

    测试案例: SET STATISTICS IO ON SET STATISTICS TIME ON SET STATISTICS PROFILE ON SELECT  count(A.CarrierT ...

  2. golang map

    Our friend Monk has been made teacher for the day today by his school professors . He is going to te ...

  3. TPYBoard v102 驱动28BYJ-48步进电机

    TPYBoard v102 驱动28BYJ-48步进电机 实验目的 了解步进电机的工作原理 学习步进电机的驱动方法 实验器材 TPYBoard v102 1块 微型步进电机(28BYJ-48) 1个 ...

  4. 简单认识python cmd模块

    0X00 前言 在早前用别人的工具时,发现有些大佬会用到交互式shell,那时候就挺好奇的,但是一直都没有看一下怎么做到的. 今天在翻p牛的博客的时候,看到他早之前写的一个工具就有用到交互式shell ...

  5. flask入门

    一.Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来) Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是 ...

  6. Dagoin之modelform组件

      ModelForm a. class Meta: model, # 对应Model的 fields=None, # 字段 exclude=None, # 排除字段 labels=None, # 提 ...

  7. Java多线程同步问题:一个小Demo完全搞懂

    版权声明:本文出自汪磊的博客,转载请务必注明出处. Java线程系列文章只是自己知识的总结梳理,都是最基础的玩意,已经掌握熟练的可以绕过. 一.一个简单的Demo引发的血案 关于线程同步问题我们从一个 ...

  8. SPI通讯协议

    一.SPI概述 SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线, ...

  9. Git基础命令使用(个人总结)

    个人在开发中整理常用的git命令,相信很多人会需要到的. 全局配置信息: git config --global user.name "Your name" git config ...

  10. DNS Prefetch初认识

    今天在看一个后台框架时,发现这样的代码: <link rel="dns-prefetch" href="//0.s3.envato.com">< ...