`

AMF3,JSON,protobuffer

    博客分类:
  • Web
阅读更多

现在流行的WEBGAME中,大都采用FLASH做前段,C++,JAVA或者PHP做的后台,貌似传输的数据格式大都是XML,JSON,AMF3,或者自定义封包的传输方式,最近做了个测试,发现如果用了自定义封包(GOOGLE PROTOCOL BUFFER 以下简称PB)真的能节省不少流量……

 

10ROW的数据(每行数据3列的样子)参考如下

JSON 大概就得用 500多个字节(发送JSON串)

AMF3  用了   64个字节(发送AMF对象)

PB  仅仅32个字节!!!!!!!

xml 我就没测了,我想现在做游戏的,没几个会用它来传输数据吧,后果不堪设想。

 

100ROW的数据时候(一般来说没啥必要测试,没有哪个帅哥会把自己的封包做的那么大的)

JSON 大概就得用 4个TCP包,因为我MINA段设置的TCPBUFFER为1024字节,外加1个70多字节的小包(妈呀)

AMF3 表现出色 也仅用了700多个字节

PB  614个字节

 

看来在大数据量上,PB比AMF的优势不大,其实也可以理解PB的数据包要小,因为前后两端都约定了属性名只用了1

个字节~,问题是在WEBGAME的应用中往往都是些小的TCP包,因此还是强烈推荐使用PB

(以上测试中,PB和AMF均有压缩,JSON没压缩)

 

 

分享到:
评论
2 楼 yeerh 2012-09-07  
客户端如果是FLASH.首推AMF3.

json打成byte[],再压缩.大包还好(100字节以上). 小包压了变大.

pb是好.但不支持动态对象.
1 楼 satuo20 2012-03-08  
本人亲测过,json打成byte[],然后压缩,生成的byte[]比相同条件下的amf3小15个字节左右。在相同条件下,java解析json(用jackson)速度比amf3(采用FB4.6自带的jar包)快2倍多。json将对象生成byte[]比amf3快不止10倍,有时近100倍。请楼主也测下吧。不过protobuffer还真没测,不敢评说。

相关推荐

    amf解析,json解析 格式化

    AMF分为两种版本:AMF0和AMF3,AMF3在效率和压缩率上优于AMF0,因此更常见于现代应用。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于...

    amf3协议解析的例子

    AMF3(Action Message Format version 3)协议是Adobe公司为Flash Player和Flex应用程序之间通信设计的一种二进制数据交换格式。它旨在提高数据传输效率,同时保持足够的灵活性以适应不同类型的复杂数据结构。AMF3...

    AMF3 C++ 源码库码库

    AMF3(Action Message Format version 3)是Adobe公司开发的一种二进制数据序列化格式,主要用于Flash Player和Flex应用程序与服务器之间的数据交换。在C++编程环境中,AMF3库可以帮助开发者高效地处理这种数据格式...

    amf3_spec_05_05_08.zip_AMF3_above flash player_player

    在标题“amf3_spec_05_05_08.zip_AMF3_above flash player_player”中,我们可以理解这是关于AMF3规范的一个版本,发布日期可能是2005年5月8日,主要针对Flash Player 9及以上版本。描述进一步说明了这是用于Flash ...

    AMF3 C++ 源码(修改版)

    1. **高效性**:AMF3是一种二进制格式,相比于基于文本的XML或JSON,它在传输和解析速度上有显著优势,占用的存储空间也更小。 2. **数据类型支持**:AMF3支持多种数据类型,包括整型、浮点型、字符串、日期、数组...

    amf3cplusplus

    1. **二进制编码**:与XML或JSON相比,AMF3使用二进制格式,数据传输更快,占用带宽更少。 2. **类型标记**:每个数据都由一个类型标记前导,使得解析器能够快速识别数据类型。 3. **优化的序列化和反序列化**:AMF3...

    AMF3协议中文版定义.pdf

    AMF3 协议中文版定义 AMF(Action Message Format,动作信息格式)是一种压缩的二进制格式,用于序列化 ActionScript 对象图。序列化后的 AMF 编码对象图可以用来持久化,并在不同的会话中获得应用的公共状态,或者...

    socket+AMF3

    相比于JSON或XML等文本格式,AMF3的数据量更小,传输速度更快,适合实时性要求高的应用,如在线游戏和富互联网应用程序(RIA)。 在“socket+AMF3”的场景下,我们通常会看到这样的情况:一个基于Socket的服务器端...

    AMF3 format

    ### AMF3 格式详解 #### 一、引言 **AMF3**(Action Message Format 3)是 Adobe 公司推出的一种紧凑的二进制格式,用于序列化 ActionScript 对象图。一旦对象图被序列化为 AMF 编码,就可以在不同的会话之间持久...

    java socket amf3 flash game framework

    Java Socket AMF3 Flash Game Framework 是一个专门为Flash游戏设计的后端框架,它结合了Java技术和AMF3编码,使得游戏开发者能够构建交互性强、安全可靠的Web游戏。在这个框架中,Java作为服务器端语言,提供了稳定...

    amf3_spec amf3_spec

    ### AMF3 Specification详解 #### 一、简介 ##### 1.1 目的 Action Message Format (AMF) 是一种紧凑的二进制格式,用于序列化 ActionScript 对象图。一旦序列化,AMF 编码的对象图可用于跨会话持久存储和检索应用...

    amf3_spec_05_05_08.pdf

    ### AMF3 Specification详解 #### 1. 引言 ##### 1.1 目的 Action Message Format (AMF) 是一种紧凑的二进制格式,用于序列化 ActionScript 对象图。一旦序列化,AMF 编码的对象图可以用于在不同会话之间持久化和...

    开源amf协议解析封装

    5. **AMF3.Server**:这部分可能是一个实现AMF3协议的服务端组件,负责处理AMF3格式的请求和响应,可能包含AMF3数据的解析、业务逻辑处理和结果返回等功能。 6. **AMF3**:这个文件可能包含了AMF3协议的相关代码或...

    AMF1.0(AMP).zip

    虽然AMF1.0相比AMF0增加了对XML和XMLList的支持,但在后来的AMF3版本中,这些功能得到了更全面的优化,因此AMF1.0现在较少被使用。 在"AMF1.0(AMP).zip"这个压缩包中,我们可以推测包含的是与AMF1.0相关的源代码...

    lua-amf 解析库

    4. **性能优化**:由于AMF3是二进制格式,相比文本格式如JSON,它在传输和解析速度上有显著优势。lua-amf库在设计时也考虑了性能,尽量减少了CPU和内存的消耗。 5. **错误处理**:在处理AMF数据时,可能会遇到格式...

    amf0 原版文档 完整版

    3. **对象编码**:对于复杂的数据结构如Object和Array,AMF0会存储成员的键值对或者元素的顺序。对象编码会包含类型标识符和属性列表,而数组编码则会记录元素数量和元素值。 4. **解码过程**:解码AMF0数据流时,...

    Action Message Format--AMF3中英文对照.PDF

    AMF3的应用场景广泛,例如在网络通信中,客户端与服务器之间可以使用AMF3格式进行高效的数据交换。通过AMF3格式化数据,可以减少传输的数据量,加快数据传输速度,从而提升整体应用的性能。 AMF3作为Adobe公司的一...

    Action Message Format -- AMF3 中文版.doc

    ### AMF3 (Action Message Format 3) 概述与技术细节 #### 一、AMF3 简介 AMF3(Action Message Format 3)是一种用于序列化ActionScript对象图的紧凑型二进制格式。它主要用于在客户端与服务器端之间高效地传输...

    AMF.NET 文件极小的开源AMF解析库

    AMF0是早期版本,主要应用于Flash Player 8及更早版本,而AMF3则在Flash Player 9及以后版本中广泛使用,提供了更高效的数据编码和解码。 使用AMF.NET进行开发时,开发者可以创建服务端的方法,这些方法会被Flash或...

Global site tag (gtag.js) - Google Analytics