看流星社区

 找回密码
 注册账号
查看: 2572|回复: 0

AMF协议扫盲篇

[复制链接]

该用户从未签到

发表于 2013-5-2 16:39:01 | 显示全部楼层 |阅读模式
在以往的学习中,我们大多数来针对网络的构架中的协议来进行学习和讨论。那么今天,我们就来介绍一种比较特别的协议给大家认识,就是AMF协议。对一些开源性系统或者知识了解的朋友应该有听说过这个协议。

在日常的RIA开发中,Flex或者基于纯Actionscript3的RIA应用非常普遍。 在客户端与服务端的交互中,大家用的比较多的几种方式是:纯文本内容,XML,JSON等。 不过,随着Adobe将AMF协议开源,越来越多的人开始使用基于AMF协议的实现来与服务器交互数据。 而BlazeDS是Adobe发布的一个开源AMF协议服务器端Java实现. 通过BlazeDS,你可以开发基于Flex,Actionscript3的客户端应用程序,并且使用AMF(Advanced Message Format)与服务器交互数据。本文是这个系列教程中的第一篇,目的是介绍AMF协议。

AMF协议是Adobe开发的一种消息交换协议,其优点包括:

更小的数据传输量

由于AMF协议采用了二进制的编码方式,省去了很多控制符&#65377;比如在XML中,我们传输一段数据,需要把许多XML标签都传输过去,类似于<item></item>此类的控制符没有太大的实际意义,但是很大程度上增加了数据传输量&#65377;

AMF协议则省去了大部分的可见控制符,采用二进制编排方式,效率极高&#65377;另外,由于同时也对数据进行了压缩,因此同样的数据,可以极大节省带宽&#65377;如果你的服务器每天的流量在1百万以上的访问,这些节省的流量则是想等客观的。

更安全的数据传输

在基于二进制编码的前提下,数据被编码传输&#65377;虽然不能满足加密数据的需要,但是,可以避免其他人直接查看数据内容&#65377;

对程序员更友好的数据接口

AMF本质上也是一种远程方法调用的支持协议,其可以将服务器端或者客户端的对象序列化,当数据被传输到目的端时,重新反序列化成目的端的内存中的对象&#65377;

大家在进行XML操作的时候,会花费很多精力处理XML的编码与读取&#65377;比如在服务器,大家需要将数据从数据库或者内存中的某处取出,对其进行一定的数据编码,生产一个XML文档&#65377;发送到客户端,在客户端,则需要将XML解析,将其中的数据还原到内存中&#65377; 这个过程在使用AMF协议的时候,就被省略了&#65377;AMF协议可以很好的支持J2ee开发中的VO模式&#65377;

数据的传输稳健性更高

这也许不是AMF协议自身的功能,而是要归功于Flash Player.由于我们使用AMF协议的时候,一般都是使用基于Flash客户端&#65377;我们在开发过程中测试传送100万条数据&#65377;如果使用浏览器的Javascript引擎接受,不管使用任何编码协议,I.E浏览器几乎是要崩溃的,Firefox则是运行极为缓慢&#65377;而在使用AMF协议传输到Flash播放器中传输这些数据,对于客户端的影响则是要小很多的&#65377;最起码程序还能正常响应&#65377;

在开发Flex应用程序的时候,根据后端服务器使用的不同情况,目前可以支持AMF的编程语言有.Net,Java,PHP,Ruby on Rail,python,curl, ColdFusion 等 。
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-29 03:58

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表