ServerSuperIO单例通讯模式开发的方法是什么
这篇文章主要介绍"ServerSuperIO单例通讯模式开发的方法是什么",在日常操作中,相信很多人在ServerSuperIO单例通讯模式开发的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"ServerSuperIO单例通讯模式开发的方法是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
8.单例通讯模式开发及注意事项
8.1 概述
单例通讯模式只适用于网络通讯,并且只能增加一个"设备驱动",这里"设备驱动"是逻辑概念,代表了所有设备或传感器,也就是说所有接到的数据全部分发给这个"设备驱动"。
8.2 通讯机制说明
只有网络通讯时可以使用这种控制模式。在一个服务实例内只能有一个设备驱动,相当于一个设备驱动对应着N多个硬件设备终端。更适合通讯的数据协议有固定的标准,以命令关键字处理不同的数据。适用于高并发的硬件终端设备主动上传数据,服务器端根据数据信息进行处理和返回相应的数据。
通讯结构如下图:
8.3 设备驱动开发注意事项
单例模式的设备驱动开发更简单,如果业务不复杂,那么只涉及到初始化参数、实时数据、协议,以及数据的处理逻辑,更高级的应用会涉及到协议数据过滤(IReceiveFilter接口)、数据转发(IService接口)、数据视图展示(IGraphicsShow接口)等,将在后续的文章中逐一进行介绍。
8.4 宿主程序服务实例配置注意事项
sta
1234567891011121314151617181920212223242526272829303132333435 | static void Main( string [] args) { //55 AA 00 61 43 7A 00 00 43 B4 15 0D DeviceSingletonDriver dev1 = new DeviceSingletonDriver(); dev1.DeviceParameter.DeviceName = "网络设备" ; dev1.DeviceParameter.DeviceAddr = 0; dev1.DeviceParameter.DeviceID = "0" ; dev1.DeviceDynamic.DeviceID = "0" ; dev1.DeviceParameter.DeviceCode = "0" ; dev1.DeviceParameter.NET.RemoteIP = "127.0.0.1" ; dev1.DeviceParameter.NET.RemotePort = 9600; dev1.CommunicateType = CommunicateType.NET; dev1.Initialize( "0" ); IServer server = new ServerManager().CreateServer( new ServerConfig() { ServerName = "单例服务" , NetReceiveBufferSize = 1024, ControlMode = ControlMode.Singleton, MaxConnects = 4000 }); server.AddDeviceCompleted += server_AddDeviceCompleted; server.DeleteDeviceCompleted += server_DeleteDeviceCompleted; server.SocketConnected+=server_SocketConnected; server.SocketClosed+=server_SocketClosed; server.Start(); server.AddDevice(dev1); while ( "exit" == Console.ReadLine()) { server.Stop(); } } |
ControlMode = ControlMode.Singleton设置成单位模式就可以了。
8.5 单例模式运行效果
在本机跑过10000万个并发连接,用的jmeter,jmeter占用了1.4G左右的内存、90%多的CPU,我也不知道为什么这么耗资源,笔记本勉强还能工作。
现在模拟的是15个客户端,100毫秒发送一次数据,效果如下:
图片
到此,关于"ServerSuperIO单例通讯模式开发的方法是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!