V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Yuan2One
V2EX  ›  C++

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

  •  1
     
  •   Yuan2One · 2022 年 6 月 24 日 · 5775 次点击
    这是一个创建于 1297 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    34 条回复    2022-06-26 10:04:53 +08:00
    smoon
        1
    smoon  
       2022 年 6 月 24 日
    CGI
    wslzy007
        2
    wslzy007  
       2022 年 6 月 24 日
    socket || database || queue || cache...
    sunny352787
        3
    sunny352787  
       2022 年 6 月 24 日
    难不成你说的是 TCP/UDP/WebSocket/轮询 /长轮询...这类东西?
    hncqp
        4
    hncqp  
       2022 年 6 月 24 日
    http
    Yuan2One
        5
    Yuan2One  
    OP
       2022 年 6 月 24 日
    C++没有成熟的框架,或者解决方案这种吗
    ceflib
        6
    ceflib  
       2022 年 6 月 24 日
    cpprestsdk
    2NUT
        7
    2NUT  
       2022 年 6 月 24 日
    使用约定协议交互

    通常用 http websocket 等;
    ShayneWang
        8
    ShayneWang  
       2022 年 6 月 24 日
    在用 Socket
    cheng6563
        9
    cheng6563  
       2022 年 6 月 24 日
    你的前端是啥? cli ? gui ? web ?
    GeruzoniAnsasu
        10
    GeruzoniAnsasu  
       2022 年 6 月 24 日
    c++后台一般不直接跟 web 交互

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

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

    通过 rpc ,中间加一层比较好。
    涉及到前后端对接和业务需求变动,中间这层变化老快了。你要是把所有和前度对接的逻辑都堆到 c++去,也不是不行,但是改动,编译,debug 这些老费劲了。
    coderluan
        16
    coderluan  
       2022 年 6 月 24 日
    中间加一层+1
    renhou
        17
    renhou  
       2022 年 6 月 24 日
    最常用的就是 websocket
    Yuan2One
        18
    Yuan2One  
    OP
       2022 年 6 月 24 日
    中间比如说用 java/go 转一层不是合理的解决方式,相当于把 C++的算法封成 SDK 用呗,但是 C++操作控制器传感器这些更麻烦了,完了对系统资源要求也更高了
    jones2000
        19
    jones2000  
       2022 年 6 月 24 日
    用 cpython 封装下, 直接用 py 做一个 webapi 就可以了, 省事。
    gainsurier
        20
    gainsurier  
       2022 年 6 月 24 日 via iPhone
    oatpp 可以用这个 web 框架
    newmlp
        21
    newmlp  
       2022 年 6 月 24 日
    rpc 或者 http
    xlzyxxn
        22
    xlzyxxn  
       2022 年 6 月 24 日
    前台是 web 不就是 restful 吗,啥意思啊
    littlewing
        23
    littlewing  
       2022 年 6 月 24 日
    grpc
    sleeepyy
        24
    sleeepyy  
       2022 年 6 月 24 日   ❤️ 1
    3166
        25
    3166  
       2022 年 6 月 24 日
    site:v2ex.com/t c++ http
    mingl0280
        26
    mingl0280  
       2022 年 6 月 24 日 via Android
    后端吐 CGI 出来或者 JSON 字符串出来就完事了(需遵循 HTTP 协议,如果你要用 HTTP 的话),没啥难度。
    nightwitch
        27
    nightwitch  
       2022 年 6 月 24 日
    cgi QQ 邮箱现在还在用,稳定服务几亿用户
    nightwitch
        28
    nightwitch  
       2022 年 6 月 24 日
    不过老实说 C++处理字符串相关的很麻烦,调试起来也要反复编译,用在 web 这种场景很费力气。
    真不如用脚本语言粘一层。
    786375312123
        29
    786375312123  
       2022 年 6 月 24 日
    protobuff
    EminemW
        30
    EminemW  
       2022 年 6 月 24 日
    啊,为什么要在中间套一层 Java/Golang/Python , 难道 c++ 发展这么多年没有 http 库么,不应该把
    steins2628
        31
    steins2628  
       2022 年 6 月 25 日
    http://stefanfrings.de/qtwebapp/
    都是 c++,可以看看这个,这样的话前后端分离,只要定 api 就行
    cwaken
        32
    cwaken  
       2022 年 6 月 25 日 via iPhone
    usocket 库,17 写法
    linuxyz
        33
    linuxyz  
       2022 年 6 月 25 日
    @littlewing 正解 gRPC Cpp Quick Start 走一波 https://grpc.io/docs/languages/cpp/quickstart/
    spygg
        34
    spygg  
       2022 年 6 月 26 日
    看你具体需求了,一般来说就 http 和 websocket, 当然如果只是和前端交互的话 cef/webkit 之类的也可以
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2590 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:33 · PVG 12:33 · LAX 20:33 · JFK 23:33
    ♥ Do have faith in what you're doing.