在erlang项目中使用protobuf
来源:互联网 发布:北师珠网络登录 编辑:程序博客网 时间:2024/05/21 16:54
protobuf是google的一个序列化框架,类似XML,JSON,其特点是基于二进制,比XML表示同样一段内容要短小得多,还可以定义一些可选字段,广泛用于服务端与客户端通信。文章将着重介绍在erlang中如何使用protobuf。
首先google没有提供对erlang语言的直接支持,所以这里使用到的第三方的protobuf库(erlang_protobuffs)
定义一个protobuf结构,保存为test.proto,如下:
message Person { required int32 age = 1; required string name = 2;}message Family { repeated Person person = 1;}编译这个protobuf结构,生成相应的erlang代码:
% 生成相应的erl和hrl文件protobuffs_compile:scan_file_src("test.proto").% 生成相应的beam和hrl文件protobuffs_compile:scan_file("test.proto").
下面我们以例子简单说明如何使用:
-module(test).-compile([export_all]).-include("test_pb.hrl").encode() ->Person = #person{age=25, name="John"},test_pb:encode_person(Person).decode() ->Data = encode(),test_pb:decode_person(Data).encode_repeat() ->RepeatData =[#person{age=25, name="John"},#person{age=23, name="Lucy"},#person{age=2, name="Tony"}],Family = #family{person=RepeatData},test_pb:encode_family(Family).decode_repeat() ->Data = encode_repeat(),test_pb:decode_family(Data).运行代码,如下:
6> c(test).{ok,test}7> test:encode().<<8,25,18,4,74,111,104,110>>8> test:decode().{person,25,"John"}9> test:encode_repeat().<<10,8,8,25,18,4,74,111,104,110,10,8,8,23,18,4,76,117,99, 121,10,8,8,2,18,4,84,111,110,...>>10> test:decode_repeat().{family,[{person,25,"John"}, {person,23,"Lucy"}, {person,2,"Tony"}]}文章完整例子下载:http://download.csdn.net/detail/cwqcwk1/7087293
3 0
- 在erlang项目中使用protobuf
- 【转载】在erlang项目中使用protobuf
- 在Egret项目中使用protobuf
- erlang中使用google protobuf进行通信
- [Erlang]如何在Erlang中使用SSL
- 转 erlang中使用google protobuf进行通信
- 在c++中使用protobuf
- 在 Golang 中使用 Protobuf
- 在 Golang 中使用 Protobuf
- 在Unity5中使用Protobuf
- 在egret中使用protobuf
- 在VS中使用Protobuf
- 在Unity5中使用Protobuf
- protobuf在C#项目中的使用
- Protobuf在java项目中的使用
- 在lua环境中使用protobuf ,编译protobuf文件
- Beetle在Tcp通讯中使用Protobuf
- 在lua环境中使用protobuf
- 连载:面向对象葵花宝典:思想、技巧与实践(11) - “封装” 详解
- BLE 实现低功耗的原因
- PAT: 1013. Battle Over Cities (25)
- CentOS 6.3 下用ntfs-3g挂载Windows NTFS分区
- URL
- 在erlang项目中使用protobuf
- 日本移动互联网给了我们什么启示
- java基础_04_多态
- SDUT 2838 Word ladder 图的直径
- nyoj_243交换输出
- HTML表单详解
- Hibernate Session初识
- 产品经理做市场调研和数据分析的方法
- 黑马程序员--Java基础加强--08内省、类加载器、动态代理