我们公司已经开始设计一个系统,在这个系统中,许多(通常是4或6)对力敏感的平台,包括负载单元,可以通过TCP将数据传输到PC。
每个平台和PC应通过网络电缆连接到作为集线器的网络交换机上。
每个平台将运行一个微控制设备,一个固件将由我们的供应商开发。
所以我的问题是:
软件应用程序和每个外围设备之间的推荐客户机/服务器关系是什么?应用程序应该为每个平台建立一个连接吗?
首先,我认为平台应该是服务器(侦听器),这样当打开时,它会一直处于“待机”(侦听)状态,等待PC请求连接到它(我想知道如何指定正确的IP,尽管.)。
但由于PC只是一台,平台很多,也许PC应该是“服务器”,每台外围设备都是众多“客户端”之一。这让我困惑..。
发布于 2015-08-07 03:10:22
最简单的方法
给予:
每个平台和PC应通过网络电缆连接到作为集线器的网络交换机上。
假设这些设备都在同一个网络上是安全的。让每个设备将其数据放入网络的广播中,不要担心它。您不需要配置服务器所在的位置,也不需要配置服务器当时的启动(或关闭,并需要重新连接)。设备只是抛出他们的数据,并继续收集。
服务器也同样简单。它监听被广播到网络的数据包,当它得到一个数据包时,它处理它并继续侦听数据包。
这确实是你能做的最简单的事情,如果所有东西都在同一个网络上(如果有很多传感器提供数据,网络上的其他东西就会产生噪音)。
如果您愿意在设备上投入一点时间,以及设备正在发送什么数据,那么使用消息队列可以使体系结构变得更容易。特别是ZeroMQ,它允许一个更形式化的结构。
同样,设备写入提要,服务器从提要中读取。这就是它的基础。这是一种相当灵活的方法,根据需求的具体情况,这里可以应用许多体系结构。
如果您想要有保证交付的内容,请找一个具有更强大的消息代理的工具。这样,您就可以对结构进行更多的推理,包括让多个工作人员/消费者离开消息队列,以便在负载开始出现问题时处理数据(但您希望确保每条消息只发送给一个工作人员)。
发布于 2015-08-07 02:03:54
从消费者的角度来看,我希望( a)容易设置和可选的b)东西连接到互联网。
对于a点,设备应该能够在本地网络(例如Zeroconf)或因特网上自动发现服务器。
至于b)由于您已经计划使用TCP,所以使用HTTP可能不会带来太大的麻烦。它可能有助于设计,因为您将不需要考虑使用的协议,如何添加安全性等。特别有帮助,因为服务器部分将是非常容易的。
https://softwareengineering.stackexchange.com/questions/292041
复制相似问题