SuperSocket 是一个轻量级的可扩展的 Socket 开发框架,可用来构建一个服务器端 Socket 程序,而无需了解如何使用 Socket,如何维护Socket连接,Socket是如何工作的。该项目使用纯 C# 开发,易于扩展和集成到已有的项目。只要你的已有系统是使用.NET开发的,你都能够使用 SuperSocket来轻易的开发出你需要的Socket应用程序来集成到你的现有系统之中。
SuperSocket具有如下特点:
? ? ? ? ? ? ? ? ? ? ? ? ?
简单易用,只需要几个类就能创建出健壮的Socket服务器端程序 性能优良, 稳定可靠
支持各种协议, 内置的协议解析工具让你把实现通信协议这种复杂的工作变得很简单 自动支持SSL/TLS传输层加密
强大,灵活而且可扩展的配置让你开发Socket服务器省时省力 支持多个socket服务器实例运行, 而且支持多个服务器实例的隔离
SuperSocket能以控制台或者Windows服务形式运行。一个脚本就能将SuperSocket安装成服务
灵活的日志策略能够记录大部分socket活动 支持UDP 支持IPv6 支持Windows Azure
支持Linux/Unix操作系统(通过Mono 2.10或以上版本) 内置可直接使用的Flash/Silverlight Socket策略服务器
AppSession 代表一个和客户端的逻辑连接,基于连接的操作应该定于在该类之中。你可以用该类的实例发送数据到客户端,接收客户端发送的数据或者关闭连接。
AppServer 代表了监听客户端连接,承载TCP连接的服务器实例。理想情况下,我们可以通过AppServer实例获取任何你想要的客户端连接,服务器级别的操作和逻辑应该定义在此类之中。
实现你自己的AppSession和AppServer允许你根据你业务的需求来方便的扩展SuperSocket,你可以绑定session的连接和断开事件,服务器实例的启动和停止事件。你还可以在AppServer的Setup方法中读取你的自定义配置信息。总而言之,这些功能让你方便的创建一个你所需要的socket服务器成为可能。 通过配置启动: ? 避免硬编码
? SuperSocket提供了很多有用的配置选项 ? 可以充分利用SuperSocket提供的工具
内置的命令行协议
内置的命令行协议(接受自定义,分隔符为“:”,“,”): 命令行协议定义了每个请求必须以回车换行结尾 \。
由于 SuperSocket 中内置的命令行协议用空格来分割请求的Key和参,因此当客户端发送如下数据到服务器端时:
\
SuperSocket 服务器将会收到一个 StringRequestInfo 实例,这个实例的属性为:
Key: \
Body: \
Parameters: [\
SuperSocket 提供了一些通用的协议解析工具, 你可以用他们简单而且快速的实现你自己的通信协议
\一个协议使用两个字符 \作为结束符
“CountSpliterReceiveFilter”:有些协议定义了像这样格式的请求
\每个请求有7个由 '#' 分隔的部分. 这种协议的实现非常简单:
“FixedSizeReceiveFilter”:在这种协议之中, 所有请求的大小都是相同的。如果你的每个请求都是有9个字符组成的字符串,如\你应该做的事就是想如下代码这样实现一个接收过滤器(ReceiveFilter):
“BeginEndMarkReceiveFilter”:在这类协议的每个请求之中 都有固定的开始和结束标记。例如, 我有个协议,它的所有消息都遵循这种格式 \。因此,在这种情况下, \是开始标记, \是结束标记,于是你的接受过滤器可以定义成这样:
“FixedHeaderReceiveFilter”:这种协议将一个请求定义为两大部分, 第一部分定义了包含第二部分长度等等基础信息. 我们通常称第一部分为头部.
例如, 我们有一个这样的协议: 头部包含 6 个字节, 前 4 个字节用于存储请求的名字, 后两个字节用于代表请求体的长度:
你需要基于类FixedHeaderReceiveFilter实现你自己的接收过滤器.
然后你就可以使用接收或者自己定义的接收过滤器工厂来在 SuperSocket 中启用该协议. 在.NET中的反射也可以实现从对象的外部来了解对象(或程序集)内部结构的功能,哪怕你不知道这个对象(或程序集)是个什么东西,另外.NET中的反射还可以运态创建出对象并执行它其中的方法。