首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有两个独立接口(web、触摸屏)的应用程序体系结构

具有两个独立接口(web、触摸屏)的应用程序体系结构
EN

Software Engineering用户
提问于 2017-01-09 22:48:28
回答 1查看 552关注 0票数 2

我将建立一个基于raspberry pi的设备,它从传感器总线(串口)读取数据,对其进行分析并显示在触摸屏上。触摸屏也将用于配置。设备需要具有同等功能的web接口。

我计划做的是将2或3个单独(python)应用程序的应用程序拆分,以数据库作为交换数据的媒介。用于网络接口的烧瓶和触摸屏的基维。为了不选择读取传感器总线的“主人”,我正在考虑引入第三种(无头),即主要工作--获取数据、分析、生成事件并将它们存储到数据库(MongoDB或MySQL)。

理论上,所有框架都可以在单独的线程中工作,具有公共数据空间,但它似乎不那么灵活,而且更难维护和添加另一个接口(例如,另一个串行总线来与其他设备对话),而没有提到与nginx的集成。

这样做对吗?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2017-01-13 10:06:46

您的方法很好,在这种情况下,“分而治之”在我看来是处理不同输入和输出时的最佳方法。

我会这样设计:

一个应用程序充当API,而另一个应用程序只负责收集输入。

我将把在网页或/和触摸屏上显示信息的责任留给API应用程序(烧瓶应用)。

在烧瓶应用程序上有触摸屏代码。做完之后,看看能不能把它分开。因为它将在一个不同的线程下运行,所以代码将以某种方式编写,这将允许稍后进行相当容易的分离。

我看到的唯一问题是,数据库作为一种通信手段。

  1. 您的所有应用程序都将依赖数据库进行通信,它将给DB带来负载,您必须考虑到这一点。还需要考虑DB锁定,因为您可以从不同的来源写入相同的位置。
  2. 数据库将成为一个单一的故障点-数据库崩溃或崩溃的==>无应用程序。
  3. 扩展或分发带有DB依赖关系的应用程序也比较困难。
  4. 它将持久化不需要持久化的数据,比如串行输入。过一段时间,您的数据库将是巨大的,除非您清理它。

使用DB作为应用程序之间通信的一种方式通常不是一个好主意。对于您的烧瓶API应用程序的持久数据,您可以保留一个数据库,但不是为了通信。

我看到两种在您的服务/应用程序之间进行通信的选项。

  1. 只需让代理(串行输入)在您的RESTful API中调用端点。反过来,它将发挥它的魔力,并将信息显示在网络和触摸屏上。
  2. 消息/队列可能使用redisrabbitmq。就像lonstar建议的那样。但是它更复杂,也许是为了满足你的需要。
票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/339821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档