即时通讯利用(包含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,这是它的一大长处。
发表回复