参考文章:html
2.C#跨平台物联网通信框架ServerSuperIO(SSIO)github
1、感慨服务器
上大学的时候,没有学过C#,花了5块钱在地坛书市买了一本教程,也就算是正式入行了。后来深造,学过JAVA,后来迫于生计,打算转JAVA了。后来考虑考虑,本身写的框架仍是有很大发展余地,后来仍是在C#的阵地上坚持了下来。从一开始的雏形,到SuperIO的产品化,再到服务器端的ServerSuperIO,也是慢慢演化而来。后期打算把ServerSuperIO移植到嵌入式设备上,以及完善开发文档。原本不想提这些,可是今天打算招一个C#开发人员(B/S方面),是群友,但是人家要转JAVA开发了,也只能说缘分不到,没法在一块儿作事,后面附一些聊天记录,供你们职业发展参考。网络
2、答疑并发
有人问,你这个框架和SuperSocket、netty......有什么区别?ServerSuperIO是通信框架不?是;ServerSuperIO支持高并发不?理论上支持;ServerSuperIO支持跨平台不?在Ubuntu上跑过。可是这些并非ServerSuperIO起初设计的初发点,它继承了SuperIO的设计思想,后期才逐步的向服务端发展,增强通信能力、跨平台等等。框架
ServerSuperIO是一个物联网框架,首先是以设备(传感器)为核心构建的框架,设备(传感器)的协议无关性,能够随意挂载设备驱动在框架下运行。因此ServerSuperIO本质上协调设备驱动(协议)、IO通道(COM和NET)、运行机制(模式)之间的关系,使之无缝结合、运行。异步
一直在工业领域混,作集成系统、远程监测监控等等,因此ServerSuperIO不只仅是一个通信框架,更多的是结合了工做实践经验,本着可以解决实质问题。高并发
3、运行控制模式post
一、轮询模式
这是框架最先的运行模式,串口和网络通信时均可以使用这种控制模式。当有多个设备 链接到通信平台时,通信平台会轮询调度设备进行通信任务。某一时刻只能有一个设备发送请求命令、等待接收返回数据,这个设备完成发送、接收(若是遇到超时 状况,则自动返回)后,下一个设备才进行通信任务,依次轮询设备。
应用场景是这样的,服务端与设备进行通信遵循呼叫应答的方式,也就是IO可用的状况下,服务端先发起通信命令请求,设备根据命令信息,检验经过后返回数据给服务端。这种通信模式很好理解,每一个设备的通信都遵循排队的原则。可是若是某个设备的命令须要及时发送,怎么办?ServerSuperIO框架是支持设备优先级别调度的,例如:对某个设备要进行实时的检测,须要连续发送命令,那么就须要对设备进行高级别设置,发送请求数据命令。
通信结构以下图:
二、并发模式
网络通信的状况下,轮询模式显然效率比较低,那么能够采用并发模式。并发通信模式是集中发送给全部设备请求指令,框架是采用循环同步方式发送请求命令给每一个IO通道对应的设备,固然也能够采用并行异步方式集中发送请求命令。硬件设备接收到指令后进行校验,校验成功后返回对应指令的数据,通信平台异步监听到数据信息后,进行接收操做,而后再进行数据的分发、处理等。
那么这里就涉及到IO通道接收到的数据是异步接收的,如何才能和设备驱动匹配上(把数据分发到设备驱动上),这是能过DeviceCode和DeviceIP两种方式来实现的。DeviceCode能够是设备地址或是设备编码,DeviceIP是预先设置好的参数,要求终端设备的IP地址是固定的。
通信结构以下图:
三、自控模式
只有网络通信时可使用这种控制模式。自控通信模式与并发通信模式相似,区别在于发送指令操做交给设备驱动自己进行控制,或者说交给二次开发者,二次开发者能够经过时钟定时用事件驱动的方式发送指令数据。硬件设 备接收到指令后进行校验,校验成功后返回对应指令的数据,通信平台异步监听到数据信息后,进行接收操做,而后再进行数据的分发、处理等。
自控通信模式能够为二次开发者提供精确的定时请求实时数据机制,使通信机制更灵活、自主,若是多个设备驱动使用同一个IO通道的话,时间控制会有误差。
一样涉及到数据的分发,和并发模式同样。
通信结构以下图:
四、单例模式
只有网络通信时可使用这种控制模式。在一个服务实例内只能有一个设备驱动,至关于一个设备驱动对应着N多个硬件设备终端。更适合通信的数据协议有固定的标准,以命令关键字处理不一样的数据。适用于高并发的硬件终端设备主动上传数据,服务器端根据数据信息进行处理和返回相应的数据。
通信结构以下图:
4、招.NET开发,结果他转JAVA了,一切都是为了生活
最近工做比较忙,开发、解决问题、招聘......,连看手机的时间都没有了,吃饭也是匆匆了事。为了更好的推动平台化建设,确实须要人,也为未来储备人才,在群里和网友聊聊,原本小伙前期仍是挺感兴趣的。今天问问他的想法,结果打算转JAVA了,也是我文章前头感慨的缘由。我为了生存,他也为了生存,都是能够理解的。
聊天记录以下,请参考:
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