gpt4 book ai didi

thrift - 使用 Thrift 发送二进制数据的最佳方式

转载 作者:行者123 更新时间:2023-12-04 01:59:57 64 4
gpt4 key购买 nike

我在 c++ 中有一个结构,它存储这样的字节:

struct RemoteData 
{
/// some other fields here

unsigned char* buf;
int bufLen;
};
我需要通过 Thrift 将这些数据发送到用 C++ 编写的远程服务。我找到了三种将这种结构映射到 thrift idl 的方法:
  • 使用这样的容器类型:
    struct RemoteData 
    {
    1: list<BYTE> buf,
    ...
    }
  • 使用 binary类型:
    struct RemoteData 
    {
    1: binary buf,
    ...
    }
  • 将数据存储在 string类型:
    struct RemoteData 
    {
    1: string buf,
    ...
    }

  • 什么是最好的方法?

    最佳答案

    thrift string 中包含的值类型必须是 UTF8 编码的,否则某些客户端将无法读取它(例如 Java thrift 客户端)。

    节俭 list<byte>类型将转换为 std::vector<int8_t>在 c++ 中,但在其他语言中它不会那么好(例如,在 java 中它将被编译为次优 List<Byte>
    binary在与其他语言客户端的互操作性和协议(protocol)定义的正确性方面,type 是最佳选择。

    由于所有 3 个定义产生的消息大小大致相同,我会选择 binary :即使您现在不需要与其他语言的互操作性,将来也可能需要它。

    关于thrift - 使用 Thrift 发送二进制数据的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13876233/

    64 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com