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=valueget variable 等简单的协议应该不会太难

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

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

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

【讨论】:

【参考方案2】:

如果你放弃 web 服务器在不同进程中的要求,有很多解决方案

lightweight web servers

【讨论】:

是的,但是我将在 Web 界面和 C++ 应用程序之间建立强耦合,这是我不想要的。我需要能够在不接触 Web 界面的情况下修改 C++ 应用程序。

以上是关于C++ 应用程序的外部 Web 界面 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Web 应用程序 - 仪表板类型 GUI - 界面 [关闭]

从后面的代码与客户端调用外部Web服务[关闭]

如何在 C++ 视觉中创建 UI [关闭]

在云中部署 C++ 应用程序 [关闭]

如何在 div 中加载外部 Angular 应用程序? [关闭]

Python Web开发 - 有或没有框架[关闭]