首页  »  flash

关于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

BlazeDSAdobe公司亲自开发并开源的AMF-Java适配框架.为flash提供java服务器端的简单远程调用能力和实现java对象与actionScript对象的转换.

使用BlazeDS很简单,其核心是一个服务器端的主配置文件:WEB-INF/flex下面的config.xml.示例片断如下:

xml 代码
 
  1. <destination id="HelloWorld">  
  2.        <properties>  
  3.          <source>HelloWorld</source>  
  4.        </properties>  
  5.  </destination>  

这样在flash客户端可以通过声明一个远程对象"HelloWorld"来调用服务器端的方法获得返回值.

更详细的使用说明有兴趣的同学看文档吧.

另外不得不提的是BlazeDS在消息处理上面比较优秀,客户端可以发送消息到服务器端的同时,BlazeDS会在服务器端把消息主动push到客户端.具体实现暂时没有考究,不过用来做即时通讯的客户端支持还是挺有用的.

问题

被Spring和hibernate惯坏了的java程序员一定很关心:

BlazeDS的配置文件里面可以使用Spring Bean吗?这是我最关心的事情,因为现在的java web程序大部分都采用spring作为基础架构了,许多第三方的工具和框架都提供了spring的兼容方法.这是BlazeDS不能避免的.不过,现在的blazeDS还不是成熟的版本,不知道以后会不会提供?

使用BlazeDS肯定享受不了hibernate的lazyload了!目前看来是不行的.

 

flex编程小心得

编程 jeff  |  2008-06-19 1 airflexflash

从真正学到初步完成作品不过就两天半,大气不敢出,先记一记过程的一些所得.
一,当你用Shape画完一个矩形后,想要给它加上一些类如mouseOver,mouseOut的事件,你发现这个图形居然不支持.其实你需要的是InteractiveObject类或及子类.嗯.有交互性质的对象才会提供这样的事件.可以使用Sprite来代替掉Shape哦.

二,通过设置useHandCursor=true以及buttonMode=true,可使光标移到该对象上面时光标变为手状.

三,其实Dictionary并不比Object好用.new Object()完全当字典用.Dictionary有点娇气.

四,as3解释xml很好很强大.
tag.subtag 获得子结点
tag.@attribute 获得结点属性值
tag.(@id=1).subtag 按条件查找某一个结点
等等...
我是把整个xml加载到内存当作活生生的业务对象来使用了,动不动就查找一下.很过瘾.

五,Shape,Sprite等非控件类的元件不能直接使用addChild()方法将其加到application下面,在flash cs3下可以,flex下的做法是创建一个UIComponent作为这些元件的容器,将这些元件加到该容器中才可行.新手最头疼的是这个,有可能半天搞不清楚为什么明明加了就是不显示,实际上提示了TypeError.

六,通常情况下可以忘记flash的层次结构,最后加进来的元件总在最上面.我的做法是把元件都初始化完,有需要的时候就addChild,需要隐藏就removeChild完事.省去设置层数的烦恼.

七,可以这样来设置鼠标的样式,不过我试完之后发现不适合我 :)
[Embed(source="图标名")]

private var MouseIcon:Class;

private function iinitApp(event:Event):void{

CursorManager.setCursor(MouseIcon);

}

七,文档很重要,特别是livedoc和我最重要的api文档.
http://livedocs.adobe.com/flex/3/
http://livedocs.adobe.com/flex/3/langref/index.html

Meta

关于本博客...

关于黑莓手机、apple、twitter、互联网、web2.0以及生活的碎言碎语。请在twitter上 follow我,欢迎同好者talk to me bbmyth AT gmail.com。博客Hosting在 webfaction。

赞助商链接

我看我听我读

最新评论

标签

python 空间 开发 计划 年假 工作 诗歌 音乐 西片 恐怖 惊变 django mysql rss 文艺片 太阳 彩色 电影 apache 部署 factcgi lighttpd javascript editor MYMeditor sql 日志 java hibernate orm 数据库 英伦 摇滚 原创 中间件 朋友 erlang 并发 函数式编程 旅游 云南 丽江 发呆 学习 编程 技术 lucene 全文搜索 中文分词 乐队 模板 分页 成功 google pagerank 中文 更新 个性化 秋天 互联网 web ext json ajax 事业 职业 读书 开源 香港 澳门 忧郁 冬天 compass dvd 广州 地下 暴力 美学 声音玩具 独立 备份 数据 琐事 博客 生活 体验 卖唱 接口 设计模式 图表 wiki moin 遇窃 air ria 需求 设计 信息 健康 感悟 人生 真诚 life jquery 杭州 灾害 2008 中国 灾难 哀悼日 jmesa grails flex flash 捐赠 scrum 软件过程 快速开发 plone cms nuexo zope 左小诅咒 demo prototpye AMF actionscript 汉诺塔 算法 递归 结婚 感情 opensource 网络 beautifulSoup 管理 大理 香格里拉 休假 鼻炎 许巍 感性 2009 随想 cpug 聚会 出差 北京 api 创业 商城 blackberry 手机 TD 交流 处事 为人 房子 经济 手机仿真 在线服务 嵌入式 海鲜 p2p easymule apple 技巧 thing gtd task gfw vpn 穿墙 代理 软件管理 翻译 mac 英语 caffeine 休眠 搬家 主机 prism firefox mozilla 免费 php codeigniter url blogspot mindmap mindnode htmlparse easyurl 产品 黑莓 rim 试手机 豆瓣 twitter 微博 杂记 时空 亲人 dabr webfaction host 快速查看 safari appale 桌面 snow 升级 leopard finder 权限 glims python主机 合租 ruby主机 快捷键 itunes 时间管理 原型 画图 招聘 hosting 写作 软件 家庭 广州技术沙龙 postgres 云计算 fuckgfw 内容审检 谷歌 chrome linux odbc database freetds R 统计 书签 浏览器 bookmark tinymce 文件管理 分享 忙碌 旅行 马来西亚 图维导图 freemind 工具 pinax develope shell dropbox barcamp

日志分类

友情链接

博客归档

PowerBy