C++ thrift详细教程 及和Protobuf对比

最近同时用了thrift和protobuf,进行通信传输。之前已写过关于protobuf的一篇博文,具体请点击:http://blog.csdn.net/zsk4232000/article/details/50300201 ,现在就总结一下thrift的编写,并与protobuf进行一些比较。没有进行深入的研究,只描述一下我用thrift的流程与方法。

thrift本身封装了一些通讯的库,支持完整的client/server RPC框架,所以用thrift编写网络通讯会非常方便,而且支持const、typedef等,所以比较流行用thrift进行网络通讯协议的编写。
1. .thrift文件格式
company.thrift 代码:

namespace cpp com.company.project
enum HOBBY
{
    RUNNING = 0,
    BADMINTION = 1,
    PINGPONG = 3,
}
struct Person
{
    1:required string name;
    2:required i32  age ;
    3:required string home;
    4:optional HOBBY hobby = HOBBY.RUNNING;
}

enum FIELD
{
    IT = 0,
    MECHINE = 1,
    SECURITY = 2,
}
struct Company
{
    1:required list<Person> staff;
    2:required FIELD field;
    3:required i32 staff_num;
    4:optional i32 rank =  1;
}

service TCompanyService
{
    Person GetStaffInfo(1:i32 index)
    void PrintAllStaffName(1:list<Person> staffs)
}

注意点:

  • 命令空间的格式:
namespace cpp com.company.project     //a
namespace java com.company.project     //b

a : 为C++语言格式的命令空间,转化成namespace com { namespace company{ namespace project {
b : 为java语言格式的命令空间,转化成package com.example.project

  • 不可以将嵌套写法,即不能将结构体或者枚举体写在其他结构体内,如下为错误写法:
struct Person
{
    1:required string name;
    2:required i32  age ;
    3:required string home;

    enum HOBBY
    {
        RUNNING = 0,
        BADMINTION =
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ThriftProtobuf都是用于进行通信传输的工具。Thrift是一个跨语言的远程服务调用框架,支持多种语言,如C++, Java, Python等。而Protobuf是Google开发的一种高效的数据序列化格式,同样也支持多种语言。 Thrift的使用流程如下: 1. 定义thrift文件,该文件定义了数据结构和接口。可以使用IDL语言来描述。 2. 使用thrift编译器生成目标语言的代码。比如使用thrift --gen cpp company.thrift命令可以生成C++的代码。 3. 在代码中实现业务逻辑,并调用thrift生成的代码来进行通信操作。 4. 在服务器端,监听指定的端口并处理客户端发送的请求。 5. 在客户端,创建thrift的客户端实例,调用生成的代码中的接口进行远程调用。 与Protobuf相比,Thrift在使用上有一些区别。Thrift支持更多编程语言,而Protobuf主要支持C++、Java和Python。另外,Thrift在通信协议方面更灵活,可以支持多种协议,如二进制、压缩、JSON等。而Protobuf主要使用二进制协议进行数据传输。 总的来说,ThriftProtobuf都是用于进行通信传输的工具,但在实际使用中需要根据具体的需求和技术栈选择合适的工具。 [2 [3<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [C++ thrift详细教程 及和Protobuf对比](https://blog.csdn.net/zsk4232000/article/details/50353777)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值