关于AMF与BlazeDS
AMF是Action Message Format的简称,它是flash专有的数据传输格式,简单的可以理解为类似XML这样的数据格式,不过XML是纯文本,任何一种语言都通用,而AMF是二进制数据,为flash专用.
为什么又有新的数据格式?
有XML不够么?跨语言,世界范围的标准.而且一直以来,我们都是使用XML作为Flash与服务器端通讯的,这个AMF好在哪里,而且还是专用的!
AMF在作为一种数据结构,从通用性上来讲,肯定比不过XML,不过这种协议是专门服务于flash的客户端应用程序,它有两个大优点:
一,比XML等传输协议更优秀的传输性能.AMF能够缓解由基于文本导致的传输瓶颈问题.这可以有证据的哦.
二,更少的数据层抽象代码,甚至不需要反序列化的代码.使用XML类的协议编程时,避免不了有一个数据反序列化的过程,使无意义的数据片段变成有意义的Flash对象,数据模型多的时候可不是一件轻松的事情,想象一下,现在完全不用去管XML,只需要定义一个远程对象即可马上调用,这个过程节省多少成本?!
下图是XML与AMF传输过程的对照:

基于上面两个优点,AMF如今获得许多开发人员的认可,不少服务器端语言也提供了AMF的适配框架,如pythonAMF和下面要介绍的BlazeDS.
BlazeDS
BlazeDS是Adobe公司亲自开发并开源的AMF-Java适配框架.为flash提供java服务器端的简单远程调用能力和实现java对象与actionScript对象的转换.
使用BlazeDS很简单,其核心是一个服务器端的主配置文件:WEB-INF/flex下面的config.xml.示例片断如下:
- <destination id="HelloWorld">
- <properties>
- <source>HelloWorld</source>
- </properties>
- </destination>
这样在flash客户端可以通过声明一个远程对象"HelloWorld"来调用服务器端的方法获得返回值.
更详细的使用说明有兴趣的同学看文档吧.
另外不得不提的是BlazeDS在消息处理上面比较优秀,客户端可以发送消息到服务器端的同时,BlazeDS会在服务器端把消息主动push到客户端.具体实现暂时没有考究,不过用来做即时通讯的客户端支持还是挺有用的.
问题
被Spring和hibernate惯坏了的java程序员一定很关心:
BlazeDS的配置文件里面可以使用Spring Bean吗?这是我最关心的事情,因为现在的java web程序大部分都采用spring作为基础架构了,许多第三方的工具和框架都提供了spring的兼容方法.这是BlazeDS不能避免的.不过,现在的blazeDS还不是成熟的版本,不知道以后会不会提供?
使用BlazeDS肯定享受不了hibernate的lazyload了!目前看来是不行的.
<EOF>
编程
jeff
0
java
评论(0条)