首页 > 解决方案 > 物理设备的网络服务,使用哪种技术/协议?

问题描述

(请注意,我是自学初学者)

我正在为要在网络中连接的设备开发 Web 服务器。它的服务将主要用于本地大型网络,而不是互联网。

具体来说,该设备是一个车底检测系统(UVIS),当车辆通过时记录视频并对其进行一些处理,然后将其发送到连接的授权本地客户端查看和数据库(即基于事件系统)。

首先,我搜索了打印机网络服务(网络打印机)使用的技术/协议,发现有针对打印机的特定协议,有些甚至是特定于某些制造商的。

我遇到了 WS-* 堆栈,(实际上我已经做了一个简单的实现,用于使用 WS-Discovery 发现 IP 摄像机,并使用 SOAP 和 Onvif 规范定义的一些功能),但我发现这很复杂,不确定是否值得在这个世界上钻研的风险。稍微搜索一下,发现这主要由 Windows 系统使用(实际上微软是这些标准的主要开发商)。

我正在寻找其他现成的技术/协议,这些技术/协议具有发现功能、易于实施、可与其他设备集成、广泛传播且面向未来。

有人可以启发我吗?

到目前为止,我的计划是使用 WS-Discovery(因为它具有 IANA 保留的多播地址)来获取 Websocket uri,并在其上实现我自己的简单协议。我选择了 websocket 而不是普通的 socket,因为它有机会与浏览器应用程序一起使用。

标签: web-servicesdevice

解决方案


如果您正在录制视频,您要么想要实时流式传输它(查看高端 IP 摄像机使用的 RTSP 协议,可以在 gstreamer 或 vlc 中找到实现),或者如果您要在视频之后拉取视频被记录为文件然后只需使用普通的网络上传系统。

无论如何,您录制视频的相机可能会将数据馈送作为 RTSP 发送,因此您可能只需要连接到该馈送。

无论如何,这些天我都会使用网络协议,无需重新发明轮子。有许多用于嵌入式系统的网络服务器(开源 civetweb 想到了一些非常简单和有效的东西)。然后,您将使用已建立的通用 Web 服务创建程序。几乎每个人都易于构建并且易于理解。

WS-* 协议很复杂,如果你不能让一个库工作,那么在网络的 DNS 中注册一个服务器服务并让每个客户端告诉它(通过 REST API 调用)可能会少很多痛苦)它当前的IP地址是。不过,让每台设备从一开始就注册到网络的 DNS 服务器会更容易,要发现哪些可用,您只需 ping 每个设备即可。


推荐阅读