《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍
《连载 | 物联网框架ServerSuperIO教程》1.4种通讯模式机制
一、综述
SuperIO(SIO)定位在PC终端(上位机)应用,它只有一个服务实例,配置参数是全局属性。但是,ServerSuperIO(SSIO)与SuperIO(SIO)定位不一样,SSIO定位在服务器端,不管是串口通讯模式,还是网络通讯模式,都支持多服务实例,所以每个服务实例都有自己的配置参数,全部配置参数的定义在ServerConfig.cs文件中。
如下图示意:

二、配置参数说明
#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
三、常用配置参数说明
常用的配置参数包括:通讯参数类、控制参数类、以及一些高级的应用参数。如下代码
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项目来配置服务实例、设备驱动和服务实例的参数。如下图:

注:下篇文章介绍设备驱动
2.[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍
2.应用SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)构建系统的整体方案
3.C#工业物联网和集成系统解决方案的技术路线(数据源、数据采集、数据上传与接收、ActiveMQ、Mongodb、WebApi、手机App)
5.ServerSuperIO开源地址:https://github.com/wxzz/ServerSuperIO
物联网&集成技术(.NET) QQ群:
《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明的更多相关文章
- 《连载 | 物联网框架ServerSuperIO教程》- 14.配制工具介绍,以及设备驱动、视图驱动、服务实例的挂载
注:ServerSuperIO二次开发套件授权码申请---截止到:2016-12-09 1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架Server ...
- 《连载 | 物联网框架ServerSuperIO教程》- 12.服务接口的开发,以及与云端双向交互
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 3.设备驱动介绍
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯。附:将来支持Windows 10 IOT
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 5.轮询通讯模式开发及注意事项。附:网友制作的类库说明(CHM)
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 6.并发通讯模式开发及注意事项
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 7.自控通讯模式开发及注意事项
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 8.单例通讯模式开发及注意事项
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 9. 协议过滤器,解决一包多发、粘包、冗余数据
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
随机推荐
- U盘安装Kali 出现cd-rom无法挂载 已解决
用U盘安装Kali Linux的过程中,出现cd-rom无法挂载的现象,百度坑比啊,醉了.下面亲测成功 出现无法挂载后,选择执行shell 第一步:df -m此时会看到挂载信息,最下面的是/dev/* ...
- NYOJ 975
这道题一开始本着很朴素的想法就是先输入两头的数据,然后对每组的数据范围下测试中间的数据即可,但是是超时的.原因也很明显,比如计算1~1000的数据之后,假如下一组数据是1~1001,本来只需要多测试下 ...
- 如玫瑰一般的PHP与C#混合编程
故事背景是这样的,有一套项目,服务器端是用C#写的,为了完成某种事情,它需要使用到一个组件,这个组件很小但很重要,很不巧的是,这个这个组件是用PHP语言写的,如果为了使用这个组件而专门搭建一个PHP的 ...
- 浅谈跨域以及WebService对跨域的支持
跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问.也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源. 在 ...
- 背后的故事之 - 快乐的Lambda表达式(二)
快乐的Lambda表达式 上一篇 背后的故事之 - 快乐的Lambda表达式(一)我们由浅入深的分析了一下Lambda表达式.知道了它和委托以及普通方法的区别,并且通过测试对比他们之间的性能,然后我们 ...
- python的赋值
python的赋值其实就是引用,我们用python的id函数看一下: 然而令人蛋疼的事情发生了, 为什么会给一个新的c赋值1,它与上面的a和b的id一样呢. 原来是python会认为一些小的整形会经常 ...
- idea怎么设置自己的名字和时间
1.直接修改idea64.exe.vmoptions 里面添加上 -Duser.name=yourname 重启即可生效 1.file - settings-Editor- File and Code ...
- Enterprise Solution 进销存管理软件 C/S架构,支持64位系统 物流,资金流,信息流全面集成
定位 Target Customers 中小型生产制造企业,批发零售类,贸易企业 主要模块 Modules 采购.销售.库存.财务账款四大模块,包含企业运作过程中销售.采购.库存各岗位需 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试
系列目录 我想测试EF在一百万条数据下的显示时间!这分数据应该有很多同学想要,看看EF的性能! 服务器 现在来向SQL2008R2插入1000000条数据吧 declare @i int; ; beg ...
- 《你不知道的JavaScript》整理(一)——作用域、提升与闭包
最近在读一本进阶的JavaScript的书<你不知道的JavaScript(上卷)>,里面分析了很多基础性的概念. 可以更全面深入的理解JavaScript深层面的知识点. 一.函数作用域 ...