一个c++应用程序的外部Web接口
External Web Interface for a C++ Application
我正在为一个运行在嵌入式系统上的c++应用程序开发一个web界面。
我想知道是否有可能制作一个可用于管理(设置和获取值)和显示应用程序提供的数据的web界面。(类似于Nagios)
我的问题是:有没有一种技术允许我在Web界面和c++应用程序之间进行"通信"?
请记住,我必须在嵌入式系统上这样做,所以我不能使用框架或其他太重的东西。
Web接口必须在c++应用程序之外(我不想在c++应用程序中编写接口)。
我的想法是使用HTML5和Javascript的Web界面,我将使用的Web服务器也是轻量级的(nginx)。
如果有人能给我点建议就太好了。所以你需要两样东西:一个本地接口,你的网页可以用来配置c++应用程序,和网页本身。
对于这样的本地接口,有一些常见的机制:修改配置文件,并发送SIGHUP使应用程序重新读取它
- 的优点是你可以直接从shell测试(和使用)它,独立于web界面
- 还注意更改会自动保存
- 的缺点是你需要一些方案来存储"最后一个好"的配置文件,以防编辑后的文件损坏
使用本地流套接字和简单协议(如果支持UNIX套接字,或者localhost:port仅限环回的TCP套接字)
- 的优点是你不碰(和可能损坏)配置文件
- 的缺点是,如果你想的话,你需要一些其他的方式来持久化更改,而且你必须首先编写这个协议
- 请注意,只要协议是基于文本的而不是二进制的,您至少仍然可以使用
telnet
或netcat测试它,因此您仍然可以直接从shell使用它- 简单的协议,如
set variable=value
,get variable
等不应该太难
- 简单的协议,如
如果你真的想要解耦web和c++应用程序,确保你可以查询可用的选项,理想情况下为它们提供类型,有效范围和组。这样,您就可以避免每次添加或修改选项时重新编码网页。
您可以在配置文件中使用魔法注释来管理它(确保没有静默默认的没有注释),或者使用list
命令到流套接字。
只要稍加努力,你就可以在c++应用程序的类型系统中构建你的分组、数据类型和验证约束,这样本地接口和web应用程序都可以自动驱动。
如果你放弃了web服务器在不同进程中的要求,有很多解决方案
轻量级web服务器
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- Visual C++GC接口如何启用它以及要包含哪个库
- Windows.h与GLFW.h的接口
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 提供与TMP和SFINAE的通用接口
- 为重写std::exception的库生成swig接口时出错
- 内联如何影响模块接口中的成员函数
- 用于将C++代码转换为 Web 程序集的脚本未终止
- COM 接口 c# 封送数组数组
- 如何在 SCIP C++ 接口中获取 MILP 约束矩阵中的系数值
- 重载 -> shared_ptr 个实例中的箭头运算符<interface>,接口中没有纯虚拟析构函数
- 如何绑定 C++ gRPC 客户端的网络接口
- 模板化接口 - 创建一个泛型模板类以返回任何容器
- 如何从实现接口的模板化类实例访问结构
- C# DLL 从C++应用程序调用 SOAP Web 服务
- 带有进度表的 curl 多接口程序
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- 我可以在具有一个标头和一个接口的 cpp 文件中有多个嵌入吗?
- 类接口,可以创建N个方法
- 一个c++应用程序的外部Web接口