首页 > 代码库 > 《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明
《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明
感谢唯笑志在分享
原博主原地址:
http://www.cnblogs.com/lsjwq/
一、综述
SuperIO(SIO)定位在PC终端(上位机)应用,它只有一个服务实例,配置参数是全局属性。但是,ServerSuperIO(SSIO)与SuperIO(SIO)定位不一样,SSIO定位在服务器端,不管是串口通讯模式,还是网络通讯模式,都支持多服务实例,所以每个服务实例都有自己的配置参数,全部配置参数的定义在ServerConfig.cs文件中。
如下图示意:
二、配置参数说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | #region 全局 [Category( "1.全局" ), DisplayName( "ServerSession" ), Description( "标识服务的唯ID,一般为Guid" ), DefaultValue( "" ), ReadOnly( true )] public string ServerSession { get ; set ; } [Category( "1.全局" ), DisplayName( "ServerName" ), Description( "标识服务的标题名称" ), DefaultValue( "" )] public string ServerName { get ; set ; } [Category( "1.全局" ), DisplayName( "DeliveryMode" ), Description( "接收数据后的分布策略,包括:按设备IP分发(DeviceIP)、按设备编码分发(DeviceCode)" ), DefaultValue(DeliveryMode.DeviceIP)] public DeliveryMode DeliveryMode { get ; set ; } [Category( "1.全局" ), DisplayName( "ControlMode" ), Description( "调度设备驱动和IO实例的策略,包括:循环模式(Loop)、并发模式(Parallel)、自主模式(Self)和单例模式(Singleton)" ), DefaultValue(ControlMode.Loop)] public ControlMode ControlMode { get ; set ; } [Category( "1.全局" ), DisplayName( "StartReceiveDataFliter" ), Description( "标识接收数据后是否按协议过滤器的规划过滤数据,不启用则直接返回数据" ), DefaultValue( false )] public bool StartReceiveDataFliter { get ; set ; } [Category( "1.全局" ), DisplayName( "StartCheckPackageLength" ), Description( "标识是否检测数据长度,如果开启,那么会调用协议驱动的GetPackageLength接口,直到接收返回的数据长度的数据" ), DefaultValue( false )] public bool StartCheckPackageLength { get ; set ; } #endregion #region 串口 [Category( "2.串口" ), DisplayName( "ComReadBufferSize" ), Description( "设置一次接收数据的字节数组最大值" ), DefaultValue(1024)] public int ComReadBufferSize { get ; set ; } [Category( "2.串口" ), DisplayName( "ComWriteBufferSize" ), Description( "设置一次发送数据的字节数组最大值" ), DefaultValue(1024)] public int ComWriteBufferSize { get ; set ; } [Category( "2.串口" ), DisplayName( "ComReadTimeout" ), Description( "设置一次读取数据的超时时间" ), DefaultValue(1000)] public int ComReadTimeout { get ; set ; } [Category( "2.串口" ), DisplayName( "ComWriteTimeout" ), Description( "设置一次发送数据的超时时间" ), DefaultValue(1000)] public int ComWriteTimeout { get ; set ; } [Category( "2.串口" ), DisplayName( "ComLoopInterval" ), Description( "轮询模式下,发送和接收数据中间的等待时间,串口通讯不支持其他控制模式" ), DefaultValue(1000)] public int ComLoopInterval { get ; set ; } #endregion #region 网络 [Category( "3.网络" ), DisplayName( "NetReceiveBufferSize" ), Description( "设置一次接收数据的字节数组最大值" ), DefaultValue(1024)] public int NetReceiveBufferSize { get ; set ; } [Category( "3.网络" ), DisplayName( "NetSendBufferSize" ), Description( "设置一次发送数据的字节数组最大值" ), DefaultValue(1024)] public int NetSendBufferSize { get ; set ; } [Category( "3.网络" ), DisplayName( "NetReceiveTimeout" ), Description( "设置一次读取数据的超时时间" ), DefaultValue(1000)] public int NetReceiveTimeout { get ; set ; } [Category( "3.网络" ), DisplayName( "NetSendTimeout" ), Description( "设置一次发送数据的超时时间" ), DefaultValue(1000)] public int NetSendTimeout { get ; set ; } [Category( "3.网络" ), DisplayName( "NetLoopInterval" ), Description( "轮询模式下,发送和接收数据中间的等待时间" ), DefaultValue(1000)] public int NetLoopInterval { get ; set ; } [Category( "3.网络" ), DisplayName( "MaxConnects" ), Description( "允许客户端最大的连接数,超取最大值,自动关闭远程连接" ), DefaultValue(1000)] public int MaxConnects { get ; set ; } [Category( "3.网络" ), DisplayName( "KeepAlive" ), Description( "检测死连接、半连接的一种机制" ), DefaultValue(5000)] public uint KeepAlive { get ; set ; } [Category( "3.网络" ), DisplayName( "ListenPort" ), Description( "侦听接收数据的端口" ), DefaultValue(6699)] public int ListenPort { get ; set ; } [Category( "3.网络" ), DisplayName( "BackLog" ), Description( "定队列中最多可容纳的等待接受的传入连接数" ), DefaultValue(1000)] public int BackLog { get ; set ; } [Category( "3.网络" ), DisplayName( "CheckSameSocketSession" ), Description( "对一个固定的设备,只允许有一个有效连接,重复IP多次连接,将断开之前的连接" ), DefaultValue( true )] public bool CheckSameSocketSession { get ; set ; } [Category( "3.网络" ), DisplayName( "SocketMode" ), Description( "标识设备是TcpServer、TcpClient模式,如果标识TcpClient模式,会主动连接远程IP和端口" ), DefaultValue(SocketMode.Tcp)] public SocketMode SocketMode { get ; set ; } [Category( "3.网络" ), DisplayName( "ClearSocketSession" ), Description( "标识是否清理连接,如果一个连接在一定时间范围内没有接收到数据,将主动断开连接" ), DefaultValue( false )] public bool ClearSocketSession { get ; set ; } [Category( "3.网络" ), DisplayName( "ClearSocketSessionInterval" ), Description( "如果标识清理连接,那么在此标识清理连接间隔时间" ), DefaultValue(10)] public int ClearSocketSessionInterval { get ; set ; } [Category( "3.网络" ), DisplayName( "ClearSocketSessionTimeOut" ), Description( "如果标识清理连接,那么在此标识多长时间没有接收到数据进行清理" ), DefaultValue(30)] public int ClearSocketSessionTimeOut { get ; set ; } #endregion |
三、常用配置参数说明
常用的配置参数包括:通讯参数类、控制参数类、以及一些高级的应用参数。如下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 | IServer server = new ServerFactory().CreateServer( new ServerConfig() { ServerName = "服务1" , //服务实例的名称 ComReadTimeout = 1000, //串口读数据超时 ComWriteTimeout = 1000, //串口发送数据超时 NetReceiveTimeout = 1000, //网络接收数据超时 NetSendTimeout = 1000, //网络发送数据超时 ControlMode = ControlMode.Parallel, //控制模式 SocketMode = SocketMode.Tcp, //网络通讯是TCP模式还是UDP模式 StartReceiveDataFliter = false , //是否开启接收数据过滤器,后面重要介绍 ClearSocketSession = false , //是否检测网络实例的有效性,后面重要介绍 StartCheckPackageLength = false //是否检测包长度,后面重要介绍 }); |
ControlMode参数是SSIO结合现实应用场景的控制模式,主要用于调用设备的发送和接收数据的调度方式。请参见:《连载 | 物联网框架ServerSuperIO教程》1.4种通讯模式机制。
四、配置工具
二次开发者,可以通过ServerSuperIO.Tool项目来配置服务实例、设备驱动和服务实例的参数。如下图:
注:下篇文章介绍设备驱动
1.[连载]《C#通讯(串口和网络)框架的设计与实现》
2.[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍
2.应用SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)构建系统的整体方案
3.C#工业物联网和集成系统解决方案的技术路线(数据源、数据采集、数据上传与接收、ActiveMQ、Mongodb、WebApi、手机App)
5.ServerSuperIO开源地址:https://github.com/wxzz/ServerSuperIO
物联网&集成技术(.NET) QQ群:54256083
《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明