即时通讯利用(包含 IM 聊天利用、实时音讯推送利用等)在抉择数据传输格局的时候,置信没有真正实际过的人,都会犹豫该怎么抉择。在即时通讯开发者同行的眼里,怎么抉择其实是个极富争议话题。
Protobuf 简介
一条音讯数据,用 protobuf 序列化后的大小是 json 的 10 分之一,xml 格局的 20 分之一,是二进制序列化的 10 分之一,总体看来 ProtoBuf 的劣势还是很显著的。
protobuf 是 google 提供的一个开源序列化框架,相似于 XML,JSON 这样的数据表示语言,详情拜访 protobuf 的 google 官方网站。
protobuf 在 google 中是一个比拟外围的根底库,作为分布式运算波及到大量的不同业务音讯的传递,如何高效简洁的示意、操作这些业务音讯在 google 这样的大规模利用中是至关重要的。而 protobuf 这样的库正好是在效率、数据大小、易用性之间获得了很好的均衡。
Protobuf 简略总结
灵便、高效:
灵便(不便接口更新)、高效(效率通过 google 的优化,传输效率比一般的 XML 等高很多);
易于应用:
开发人员通过依照肯定的语法定义结构化的音讯格局,而后送给命令行工具,工具将主动生成相干的类,能够反对 java、c++、python 等语言环境。通过将这些类蕴含在我的项目中,能够很轻松的调用相干办法来实现业务音讯的序列化与反序列化工作。即时通讯聊天软件 app 开发能够征询蔚可云。
语言反对:
原生反对 c ++,java,python 等。
Protobuf 反对的开发语言
截止目前,Protobuf 官网工程主页上显示的已反对的开发语言多达 10 种,别离有:C++、Java、Python、Objective-C、C#、JavaNano、JavaScript、Ruby、Go、PHP,基本上支流的语言都已反对。
实用 Protobuf 的场合
须要和其它零碎做音讯替换的,对音讯大小很敏感的。那么 protobuf 适宜了,它语言无关,音讯空间绝对 xml 和 json 等节俭很多。
小数据的场合。如果你是大数据,用它并不适宜。
我的项目语言是 c ++,java,python 的,因为它们能够应用 google 的源生类库,序列化和反序列化的效率十分高。其它的语言须要第三方或者本人写,序列化和反序列化的效率不保障。
总体而言,protobuf 还是十分好用的,被很多开源零碎用于数据通信的工具,在 google 也是外围的根底库。
此外,Facebook 的 thrift 据说也很有特色,2007 年由 Facebook 开发,之后在 2008 年加到 Apache 打算中。是一个跨语言的轻量级 RPC 音讯和数据交换框架,Thrift 能生成的语言有:C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa,Smalltalk, and OCaml,这是它的一大长处。