想问下后台用 C++的话,怎么跟前台交互呢

2022-06-24 11:00:14 +08:00
 Yuan2One

边缘计算原因后台项目必须用 C++做,有没有大佬有这方面经验的,需要跟前端交互,给些技术关键词

4954 次点击
所在节点    C++
34 条回复
smoon
2022-06-24 11:03:21 +08:00
CGI
wslzy007
2022-06-24 11:04:25 +08:00
socket || database || queue || cache...
sunny352787
2022-06-24 11:06:23 +08:00
难不成你说的是 TCP/UDP/WebSocket/轮询 /长轮询...这类东西?
hncqp
2022-06-24 11:07:11 +08:00
http
Yuan2One
2022-06-24 11:17:54 +08:00
C++没有成熟的框架,或者解决方案这种吗
ceflib
2022-06-24 11:26:53 +08:00
cpprestsdk
2NUT
2022-06-24 11:29:23 +08:00
使用约定协议交互

通常用 http websocket 等;
ShayneWang
2022-06-24 11:34:30 +08:00
在用 Socket
cheng6563
2022-06-24 11:41:19 +08:00
你的前端是啥? cli ? gui ? web ?
GeruzoniAnsasu
2022-06-24 11:48:07 +08:00
c++后台一般不直接跟 web 交互

可选的方式有:
1. 编译成动态库,暴露 C ABI 的 API ,这样 goalng 之类的后台基本可以即插即用(需要共享一个头文件和一个不需要实现具体功能,即 stub 的动态库二进制文件)
2. 使用 unix socket ,交互 json 数据或者 protobuf 之类的(无队列)
3. 使用消息队列中间件,随便选一个两边语言都有 binding 的
RatioPattern
2022-06-24 11:58:34 +08:00
queue
GeruzoniAnsasu
2022-06-24 12:02:30 +08:00
假设 c++库 /程序叫 core:

- core 在内存中保存配置或者控制位
- core 如果需要被外部控制,可以序列化成比较通用的结构化数据比如 json/msgpack ,外部控制器(比如 golang 写的 web 后端)来负责持久化它们,存取数据库之类的,core 只解析 web 后端传过来的结构化数据
- 转发器直接将流量转到 core ,比如 nginx module 或者集成了 libpcap 的东西,它们可以直接通过 IPC 手段与 core 存取同一个共享 buffer
- core 执行必要的计算并且在内存中保存计算状态
- 等待 web 后端异步地来读取这个状态,或者 RPC 通知后端状态发生变化
- 在 RPC 里传递计算结果,这时候就还是通用结构化数据
wtsamuel
2022-06-24 12:12:59 +08:00
rpc 或者 restful 写法的 web api
底层都是通过 socket 转发数据
microxiaoxiao
2022-06-24 12:17:01 +08:00
这问题我熟悉呀,你提供一些接口,让做 web 服务器的在对应 url 路由调用你的函数,不然自己实现一个简单 HTTP
alexsunxl
2022-06-24 12:17:26 +08:00
c++ --- java/go --- client

通过 rpc ,中间加一层比较好。
涉及到前后端对接和业务需求变动,中间这层变化老快了。你要是把所有和前度对接的逻辑都堆到 c++去,也不是不行,但是改动,编译,debug 这些老费劲了。
coderluan
2022-06-24 12:23:58 +08:00
中间加一层+1
renhou
2022-06-24 13:02:46 +08:00
最常用的就是 websocket
Yuan2One
2022-06-24 14:28:52 +08:00
中间比如说用 java/go 转一层不是合理的解决方式,相当于把 C++的算法封成 SDK 用呗,但是 C++操作控制器传感器这些更麻烦了,完了对系统资源要求也更高了
jones2000
2022-06-24 15:12:02 +08:00
用 cpython 封装下, 直接用 py 做一个 webapi 就可以了, 省事。
gainsurier
2022-06-24 15:34:10 +08:00
oatpp 可以用这个 web 框架

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/861863

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX