在本機跑過10000萬個併發連接,用的jmeter,jmeter占用了1.4G左右的記憶體、90%多的CPU,我也不知道為什麼這麼耗資源,筆記本勉強還能工作。 現在模擬的是15個客戶端,100毫秒發送一次數據,效果如下: ...
1.C#跨平臺物聯網通訊框架ServerSuperIO(SSIO)介紹
《連載 | 物聯網框架ServerSuperIO教程》1.4種通訊模式機制。
《連載 | 物聯網框架ServerSuperIO教程》2.服務實例的配置參數說明
《連載 | 物聯網框架ServerSuperIO教程》- 3.設備驅動介紹
《連載 | 物聯網框架ServerSuperIO教程》-4.如開發一套設備驅動,同時支持串口和網路通訊。
《連載 | 物聯網框架ServerSuperIO教程》- 5.輪詢通訊模式開發及註意事項。
《連載 | 物聯網框架ServerSuperIO教程》- 6.併發通訊模式開發及註意事項
《連載 | 物聯網框架ServerSuperIO教程》- 7.自控通訊模式開發及註意事項
目 錄
8.單例通訊模式開發及註意事項... 2
8.1 概述... 2
8.2 通訊機制說明... 2
8.3 設備驅動開發註意事項... 2
8.4 宿主程式服務實例配置註意事項... 3
8.5 單例模式運行效果... 4
8.單例通訊模式開發及註意事項
8.1 概述
單例通訊模式只適用於網路通訊,並且只能增加一個“設備驅動”,這裡“設備驅動”是邏輯概念,代表了所有設備或感測器,也就是說所有接到的數據全部分發給這個“設備驅動”。
8.2 通訊機制說明
只有網路通訊時可以使用這種控制模式。在一個服務實例內只能有一個設備驅動,相當於一個設備驅動對應著N多個硬體設備終端。更適合通訊的數據協議有固定的標準,以命令關鍵字處理不同的數據。適用於高併發的硬體終端設備主動上傳數據,伺服器端根據數據信息進行處理和返回相應的數據。
通訊結構如下圖:
8.3 設備驅動開發註意事項
單例模式的設備驅動開發更簡單,如果業務不複雜,那麼只涉及到初始化參數、實時數據、協議,以及數據的處理邏輯,更高級的應用會涉及到協議數據過濾(IReceiveFilter介面)、數據轉發(IService介面)、數據視圖展示(IGraphicsShow介面)等,將在後續的文章中逐一進行介紹。
8.4 宿主程式服務實例配置註意事項
sta
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毫秒發送一次數據,效果如下:
- 圖片
- 視頻
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