5

我正在为在嵌入式系统上运行的 C++ 应用程序开发 Web 界面。

我想知道是否有可能制作一个可用于管理(设置和获取值)和显示应用程序提供的数据的 Web 界面。(类似于 Nagios。)

我的问题是:是否有任何技术可以让我在 Web 界面和 C++ 应用程序之间“通信”?

请记住,我必须在嵌入式系统上执行此操作,因此我不能使用框架或其他太重的东西。

Web 界面必须在 C++ 应用程序之外(我不想在 C++ 应用程序中编写接口)。

我的想法是为 Web 界面使用 HTML5 和 Javascript,我将使用的 Web 服务器也是轻量级的(nginx)。

如果有人可以给我任何指示,那就太好了。先感谢您。

4

2 回答 2

4

因此,您需要两件事:您的网页可以用来配置 C++ 应用程序的本地界面,以及网页本身。

这种本地接口有一些常见的机制:

  1. 修改配置文件,并发送 SIGHUP 让应用程序重新读取它

    • 优点是您可以直接从 shell 测试(和使用)它,独立于 Web 界面
    • 另请注意,更改会自动保留
    • 缺点是您需要一些方案来存储“最后一个好”的配置文件,以防编辑的配置文件损坏
  2. 使用本地流套接字和简单协议(如果支持,则为 UNIX 套接字,或localhost:port仅环回 TCP 套接字)

    • 优点是您不会触摸(并可能损坏)配置文件
    • 缺点是,如果您愿意,您需要其他方式来持久化更改,并且您必须首先编写此协议
    • 请注意,只要协议是基于文本的而不是二进制的,您至少仍然可以使用telnet或 netcat 对其进行测试,因此您仍然可以直接在 shell 中使用它
      • 简单的协议之类set variable=valueget variable应该不会太难

如果您真的想解耦 Web 和 C++ 应用程序,请确保您可以查询可用选项,最好为它们提供类型、有效范围和组。然后,您可以避免每次添加或修改选项时重新编码网页。

您可以使用配置文件中的魔术注释来管理它(确保没有任何内容默认默认没有注释),或者使用list流套接字的命令。

通过一些努力,您可能可以将分组、数据类型和验证约束构建到 C++ 应用程序的类型系统中,因此本地界面和 Web 应用程序都可以自动驱动。

于 2013-06-03T12:27:09.700 回答
0

如果您放弃 Web 服务器处于不同进程的要求,有很多解决方案

轻量级网络服务器

于 2013-06-03T11:52:35.867 回答