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. 【Python3的函数初识】

    一.函数 1.什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率,可扩展性强. 2.函数的分类 在python中函数分两类:内 ...

  2. window10上登录Oracle时提示ORA-12546:Permission denied

    在64位的Windows 10上安装了Oracle 10.2.0.4的64位版,遇到不少问题. 虽然可能现在安装这个版本越来越少,还是分享出来,希望能帮助到一些人. 1.安装的过程遇到的问题 在普通用 ...

  3. wc--Linux

    这个命令的功能也很好记,因为它功能很有限: wc -c filename:显示一个文件的字节数 wc -m filename:显示一个文件的字符数 wc -l filename:显示一个文件的行数 w ...

  4. Hive thrift服务(将Hive作为一个服务器,其他机器可以作为客户端进行访问)

    步骤一:启动为前台:bin/hiveserver2 步骤二:启动为后台:nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log ...

  5. CSS(五)圣杯,双飞翼布局

    双飞翼布局 <style> *{ margin:; padding:; } .main{ width: 100%; height: 200px; background: pink; flo ...

  6. 意外断电数据库无法启动牵扯到异步IO的参数设置

    一客户机房新装的UPS不太稳定,好几次意外断电,第3次意外断电之后问题终于来了, 数据库起不来了-- 数据库的硬件环境是一台IBM DS5020存储,2台IBM X3850 X5 软件环境是Linux ...

  7. Chris Richardson微服务翻译:微服务部署

    Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服务部署( ...

  8. hive入门(一)、什么是hive

    1.Hive 基本概念 Hive是基于Hadoop的一个 数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能: Hive是构建在Hadoop 之上的数据仓库: 使用HQL作为查询 ...

  9. Send Email in .NET Core 2.0

    在.NET Core 1.0 中,SMTP Client代码并没有被移植,直到.NET Core 2.0的发布.使用下面的代码: static void Main(string[] args) { S ...

  10. 使用Three.js 基本组件以及流程

    1. 创建场景 var scene = new THREE.Scene(); 2. 创建相机,设置可视范围 var camera = new THREE.PerspectiveCamera(45,  ...