50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

Adobe Flex 应用在 RPC 上的更多选择:AMF、BlazeDS 和 GraniteDS

  • 2007-12-20
  • 本文字数:1970 字

    阅读完需:约 6 分钟

上周,Adobe 宣布对 Adobe Flex 平台作了大改动,大量的生命周期数据服务(LiveCycle Data Services)在BlazeDS 项目中被开源,开源内容还包括AMF 的规格说明和代码。对于那些正在考虑采用Flex 平台的人来说,这次改动应该清除了最终的成本和许可障碍。

Adobe Flex 应用程序部署并运行在 Flash Player 中,其后台逻辑通过 RPC 访问,以一种类似于客户 / 服务器的构架方式。Flex 中有很多不同的 RPC 选项,包括 Web Services、HTTP 和 AMF/Data Services。AMF 是一个二进制协议,比传统的 RPC 方法具有更多的优点。Adobe 的 James Ward 在他的 Blog 文章“BlazeBench: Why you want AMF and BlazeDS”中着重提到了它在性能和带宽上的优点。

Adobe 的 Ted Patrick 在他的文章“The ABC’s of AMF”中详细描述了 AMF 的基本概念,并概括列出了下列几个优点:

1. 文件大小 —— AMF 对象非常小且使用 zlib 压缩。2. 快速序列化 / 反序列化 —— AMF 在 player 中使用本地 C 代码转化,因而运行非常之快。AMF 格式本身就被设计为在低内存和慢 CPU 条件下依然能够快速序列化和反序列化。由于 AMF 数据直接被解析为对象,没有审核解释或解析 AMF 的延迟,对象的创建可一次完成。

3. 本地类型和自定义类的支持 —— 除了 displayObjects,你可以序列化 Flash Player 中的任何对象。在反序列的时候如果自定义类在 Flash Player 中,你也可以将先前序列化的对象映射回自定义类实例。

在 Adobe 宣布 AMF 和 BlazeDS 开源之前,开发人员确实也有一些开源工具可选择来使用 AMF 协议,这些工具由一些团体采用反向工程而得。这些开源项目包括 RubyAMF AMFPHP SabreAMF OpenAMF Granite Data Services(GraniteDS)。拥有一个公开发布的 AMF 规格说明应该只会帮助改善这些实现。Ruby 和 PHP 项目仍将首选在应用程序中使用这些技术以利用 AMF,就如 BlazeDS 是 Java 应用程序在远程访问和消息传递方面是首选。 到目前为止,对于 Java 开发人员来说,GraniteDS 是应用 AMF 协议的首选开源工具。当 BlazeDS 在周二宣布的时候,GraniteDS 的创建者 Franck Wolff 显得有点手足无措,并对 GraniteDS 的未来持有怀疑。他通过 GraniteDS 邮件列表向大家发表了他对于 BlazeDS 的看法:

大家好: 恩……这是一个好消息(尽管我对此感觉还是有点怪)!

对 GDS 来说,唯一可能的将来是为 BlazeDS 遗漏的性能提供一些代码(我主要考虑的是透明外化(transparent externalization)、延迟加载(lazy-loading)的支持、代码生成)……

目前,我想我会停止任何 GDS 进一步的开发……欢迎大家做自由评论。

此致

Franck

在深思之后, Wolff 确实看到了 GraniteDS 的未来发展方向。在一个开源项目运作的样例中,他认为有很多新特性可以贡献给 BlazeDS 项目,或者可以继续独发展 GrainteDS 项目。 > 大家好(这是我的一些新的想法):

  1. 一点点历史回顾: GDS 创立的起因是由于 FDS 太过昂贵,而且更重要的是,它并不与众所周知的持久性 API(EJB3/Hibernate)集成,也不提供任何延迟加载机制。这也是为什么从最初我就创建了这个透明外化(transparent externalization)的特性(特别是 HibernateExternalizer)来进行序列化并保持所有持久的相关 bean 的域(比如 id,version 等)私有。后来,为了避免令人厌烦的手工编写可外部化(Externalizable )AS3 bean 的工作,gas3(GDS 代码生成器)应运而生。
  2. BlazeDS 和 GDS 的比较:令人感到惊奇的是,从严格的远程访问的观点来看,BlazeDS 恰恰是 GDS 一直以来想要实现的方向:使用 RemoteObjects 的经典的 AMF3 远程访问,一个新的基于 Comet 的信道用于在生产者和消费者之间通过 HTTP(非 RTMP)交换 AMF3 对象。另一方面,从持久性的观点来看,BlazeDS 不包含任何数据管理的特性,所以 GDS 可以补充很多非常重要的但 BlazeDS 缺少的特性:EJB3 持久性和延迟加载的支持。
  3. 一点点策略:BlazeDS(LGPL3,含源码)的第一个发布版本预告期为 2008 年初(没有精确的日期……),对于我们来说最好的策略是尽快发布 GDS1.0(在一月底之前),然后共同等待 BlazeDS 公开他们的源码。再然后,我们或者可以拷贝 / 粘贴一些 BlazeDS 的好的代码到 GDS(同一个 license!)中, 或者将外化+延迟加载机制+gas3 添加到 BlazeDS 的特性中去(如果 Adobe 同意的话),或是甚至将 GDS 作为 BlazeDS 的一个插件发布(不知道有没有这个可能性)。非常欢迎发表任何看法!

Cheers,
Franck.

GraniteDS 对集成了 Java 的 Flex 应用程序确实有一些很优秀的特性和优点。另外,BlazeDS 也不仅仅是一个 AMF 规格说明的实现,它提供了一些 GraniteDS 没有的特性,如 push、消息传递。抛开实现不说,很明显,Adobe 向 Flex 平台开源的迈进,对于 Flex 开发人员是百益无害。 查看英文原文: More on RPC in Adobe Flex Applications with AMF, BlazeDS, and/or GraniteDS

2007-12-20 00:562997
用户头像

发布了 71 篇内容, 共 23.5 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

Zebec Protocol 薪酬支付工具 WageLink 上线,掀新一轮薪酬支付浪潮

BlockChain先知

Java常见的锁及同步机制

echoes

用友iuap数据中台又获奖了! 用友

用友BIP

数据驱动

Microsoft Remote Desktop for Mac(远程桌面控制工具)

展初云

Mac 远程软件 microsoft remote desktop

简单好用的批量重命名软件:A Better Finder Rename 12 直装激活版

胖墩儿不胖y

Mac软件 重命名工具 重命名软件 文件重命名

Zebec Protocol 薪酬支付工具 WageLink 上线,掀新一轮薪酬支付浪潮

石头财经

CNCC 2023 | 五位重磅大咖齐聚沈阳,共同探讨「大模型与推荐系统」

小红书技术REDtech

人工智能 AI 算法 #推荐系统 #大模型

我们距离“裸眼3D自由”,还有多远?

脑极体

XR

极狐GitLab 致敬中国 1000万程序员

极狐GitLab

1024 极狐GitLab 致敬

IDC:用友再蝉联中国SaaS市场多项年度第一

用友BIP

企业服务

3D模型金属度怎么调?

3D建模设计

材质 纹理 金属度

Linux绝对路径和相对路径

芯动大师

手把手带你打一场时间序列比赛—数据探索

打工人!

机器学习 时间序列预测

通过 Python 脚本支持 OC 代码重构实践(一):模块调用关系分析

百度Geek说

Python 自动化 重构 脚本 企业号10月PK榜

国际原油价格大波动,航司如何精准降低航油成本?

用友BIP

降本节能

从昏暗到明亮—改善照明环境,提升编程效率

颜淡慕潇

程序员 1024程序员节 明基BenQ ScreenBarBar

基于Web的智慧陆上风电场3D运维平台

2D3D前端可视化开发

风力发电 三维可视化 智慧风电 智慧风场 智慧风电场

数划云与明道云达成产品战略生态合作

数划云

室内LED显示屏和户外LED显示屏亮度标准

Dylan

屏幕亮度 LED显示屏 led显示屏厂家

Java基础面试题【Spring】二

派大星

Java 面试题 java 技术提升

Experience Design for Mac(XD)UI/UX开发工具

展初云

交互设计 Mac软件 adobe xd XD

Bettertouchtool 4 for Mac触控板增强软件

展初云

Mac软件 触控板增强 Bettertouchtool

Adobe Flex应用在RPC上的更多选择:AMF、BlazeDS和GraniteDS_Java_Jon Rose_InfoQ精选文章