十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SCADA系统开发关键技术(二)

SCADA系统开发关键技术(二) 框架技术选型在技术选择之前我们先考虑需求需要同时满足跨平台、实时性、可视化等功能需求。技术前后端跨平台实时性可视化Web前端是一般丰富C偏后端前端艰难需多次编译强弱WPF前端后端只适配Windows较强丰富ASP.NET后端是一般/Java偏后端前端艰难部分支持一般/根据上面的分析ScadaSystem选择了前后端分离前端使用Web后端使用ASP.NET的技术框架。经过实践在应用过程中有以下的经验.NET确实是优秀的跨平台技术框架不仅能同时在Windows和Linux上运行在x86、x64和ARM等多种CPU架构下都能正常运行。ScadaSystem能够安装在较低运算能力、较低内存的网关设备中但若配置实在过低则无法支持。这种设备只能使用C进行开发但鱼和熊掌不可兼得只能选择放弃支持这种设备。前后端通信技术选型确定了后端使用.NET前端使用Web的主体架构后两者的通信方式就是第一个技术难点。对于一般的Web系统采用的通信方式是调用API接口。但SCADA系统不同于一般的Web系统实时性要求极高而且要求双向通信。例如要实时显示通信日志在10ms内就要传输大量数据。要做到这一点WebSocket是一个不二的选择。微软推出了SignalR技术其背后大多数情况下也是在用WebSocket。经过包装后SignalR适应于服务端作中间传输模块客户端之间相互通信的场合。但我们需要的是服务端直接向客户端推送数据所以SignalR不太适合。WebSocket不仅能够支持字符串传输也支持二进制传输。原则上来说二进制传输的效率会更高。Google的Protobuf是一个高效的二进制通信协议。Protobuf严格要求数据格式定义这在开发过程中有不少限制。而且通信内容事实上基本为字符串Protobuf压缩效果不明显。所以系统中仍然使用字符串作为传输内容。在某些场合WebSocket难以完成Web显示需求。例如显示一张图片img的src里必然是一个API GET需求。这又必定要求后端提供RESTful API的支持。基于上面的分析前后端主要使用WebSocket通信在不得已的情况下使用RESTful API。前后端实际使用技术框架在实际的项目中ScadaSystem后端使用的项目类型是ASP.NET Core API在路由时加入对WebSocket的支持同时添加Worker服务运行SCADA主线程。前端使用Vue。没有特殊理由只是因为熟悉。
返回列表