如何允许Sinatra民意调查数据



我想设计一个应用程序,而后端不断轮询不同的传感器,而前端(Sinatra)允许通过JSON API查看此数据,或者简单地显示html。

中的结果

我应该考虑开发这样的应用程序,以及我应该如何构建最佳缩放和易维护的应用程序。

我的第一个想法是让Sinatra每次收到适当终点的请求时对传感器进行调查,但这似乎可以快速陷入安静的速度,尤其是看到某些传感器如何仅每几秒钟自我更新。<<<<<<<<<<<<<<<<<<<<

我的第二个想法是要有一个背景过程(或线程)对传感器进行轮询并存储Sinatra的值。收到请求后,Sinatra可以简单地对缓存值的背景过程进行轮询(或将其从螺纹代码提取)并将其呈现给客户端。

我更喜欢第二个想法,但是我不确定如何开发"背景应用程序",以便Sinatra可以对其进行轮询以将数据提供给客户。另一个选项是Sinatra将传感器轮询代码进行线索,以便它可以在同一过程中从其中获取值,而不是从另一个过程中请求它。


适当的注意,此应用程序还将负责不同的继电器的自动化,基于传感器和Sinatra仅负责将传感器的状态传递给用户。我认为将后端(自动化 传感器信息)与前端(Sinatra)分开/守护程序(Sinatra)是理想的选择,但是我不确定如何获取Sinatra的数据。


任何人都有关于我如何构造这个的意见?如果可能的话,我也很喜欢一个示例应用程序,该应用程序简单地显示我可以采用和修改的想法。

谢谢

编辑::

在进行了更多研究之后,我发现了drb(分布式Ruby http://ruby-doc.org/stdlib-1.9.3/libdoc/drb/rdoc/rdoc/drb.html)允许您在对象上远程呼叫通过网络。这可能是解决此问题的合适解决方案,因为守护程序可以自动继电器自动化,读取传感器并将值存储在类对象中,然后通过DRB呈现类对象,以便Sinatra可以在远程对象上调用Getters迄今为止来自守护程序的数据。这是我最初想尝试的事情。

你们怎么看?建议这样的应用程序吗?

我决定与Sinatra,Drb和Daemons一起去满足我上面说明的要求。

Web前端将在自己的过程中运行,仅通过DRB与后端的交互提供统计信息。这将允许客户快速响应时间,并允许我将前端代码与后端代码分开。

后端将在自己的过程中运行,并不断对传感器进行更新的传感器,并将其作为类对象与getters一起存储,以便Sinatra在需要时可以通过DRB获取信息。它还将使用收集的信息进行特定于项目的自动化。

最终,后端和前端将用守护程序包装纸包裹,以便该项目具有开始,重新启动,停止,运行状态和自动重新启动守护程序(如果出于任何原因崩溃或退出)的能力。<<<<<<<<<<<<<<<<<<<<<<<<

来源信息:

http://phrogz.net/drb-server-for-long-rnunning-web-processes

http://ruby-doc.org/stdlib-1.9.3/libdoc/drb/rdoc/drb.html

http://www.sinatrarb.com/

https://github.com/thuehlinger/daemons

最新更新