C++ 应用程序的外部 Web 界面 [关闭]
Posted
技术标签:
【中文标题】C++ 应用程序的外部 Web 界面 [关闭]【英文标题】:External Web Interface for a C++ Application [closed] 【发布时间】:2013-06-03 11:30:12 【问题描述】:我正在为在嵌入式系统上运行的 C++ 应用程序开发 Web 界面。
我想知道是否有可能制作一个可用于管理(设置和获取值)和显示应用程序提供的数据的 Web 界面。 (类似于 Nagios。)
我的问题是:是否有任何技术可以让我在 Web 界面和 C++ 应用程序之间“通信”?
请记住,我必须在嵌入式系统上执行此操作,因此我不能使用框架或其他太重的东西。
Web 界面必须在 C++ 应用程序之外(我不想在 C++ 应用程序中编写界面代码)。
我的想法是为 Web 界面使用 html5 和 javascript,我将使用的 Web 服务器也是轻量级的(nginx)。
如果有人可以给我任何指示,那就太好了。提前谢谢你。
【问题讨论】:
您可以从 C++ 创建双接口并从 Web 界面调用公开的 API。 我也错过了 c++ 应用程序的 ui 部分,大多数框架作品(如 WT 等)都不那么漂亮。如果我们可以为桌面应用程序创建具有 c++ 功能的漂亮 UI。跨度> 【参考方案1】:所以您需要两件事:您的网页可以用来配置 C++ 应用程序的本地界面,以及网页本身。
此类本地接口有几种常见机制:
修改一个配置文件,并发送 SIGHUP 让应用程序重新读取它
优点是您可以直接从外壳测试(和使用)它,独立于 Web 界面 另请注意,更改会自动保留 缺点是您需要一些方案来存储“最后一个好”的配置文件,以防编辑的配置文件损坏使用本地流套接字和简单协议(如果支持,则使用 UNIX 套接字,或者 localhost:port 仅环回 TCP 套接字)
优点是您不会触摸(并且可能损坏)配置文件 缺点是,如果您愿意,您需要一些其他方式来持久化更改,并且您必须首先编写此协议 请注意,只要协议是基于文本的而不是二进制的,您至少仍然可以使用telnet
或 netcat 对其进行测试,因此您仍然可以直接在 shell 中使用它
set variable=value
、get variable
等简单的协议应该不会太难
如果您真的想要分离 Web 和 C++ 应用程序,请确保您可以查询可用选项,最好为它们提供类型、有效范围和组。然后,您可以避免每次添加或修改选项时重新编码网页。
您可以使用配置文件中的魔法 cmets 来管理它(确保没有任何内容默认默认没有注释),或者使用流套接字的 list
命令。
通过一些努力,您可能可以将分组、数据类型和验证约束构建到 C++ 应用程序的类型系统中,因此本地界面和 Web 应用程序都可以自动驱动。
【讨论】:
【参考方案2】:如果你放弃 web 服务器在不同进程中的要求,有很多解决方案
lightweight web servers
【讨论】:
是的,但是我将在 Web 界面和 C++ 应用程序之间建立强耦合,这是我不想要的。我需要能够在不接触 Web 界面的情况下修改 C++ 应用程序。以上是关于C++ 应用程序的外部 Web 界面 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Web 应用程序 - 仪表板类型 GUI - 界面 [关闭]