2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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:562786
用户头像

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

关注

评论

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

三顾茅庐,七面阿里,终拿25k*16offer,我的面试历程

程序知音

Java 后端 java面试 Java进阶 Java面试八股文

群星闪耀,众志成城 | 2023年4月《中国数据库行业分析报告》精彩抢先看

墨天轮

数据库 云原生 opengauss 国产数据库 AI4DB

火山引擎DataTester上线全新MAB智能调优实验

字节跳动数据平台

AB testing实战 A/B测试 企业号 5 月 PK 榜

扒去Spring事件监听机制的外衣,竟然是观察者模式

Java spring 设计模式 观察者模式 事件监听

Reactive响应式编程系列:解密reactor-netty如何实现响应式

大步流星

Reactive响应式编程系列 reactor-netty reactor-netty原理

解密Elasticsearch:深入探究这款搜索和分析引擎 | 京东云技术团队

京东科技开发者

elasticsearch redis 底层原理 企业号 5 月 PK 榜 画像系统

工赋开发者社区 | 装备制造企业数字化转型总体框架

工赋开发者社区

2023年厦门等保二级备案办理流程

行云管家

等级保护 等保备案 厦门

Prompt 技巧指南-让 ChatGPT 回答准确十倍!

Zilliz

openai ChatGPT

免费堡垒机选择开源还是商业免费版好?

行云管家

开源 堡垒机 安全运维 免费堡垒机

牛掰!阿里人用7部分讲明白百亿级高并发系统(全彩版小册开源)

Java 系统设计 高并发

限量!腾讯高工用4部分讲清楚了Spring全家桶+微服务

Java spring 微服务 Spring Cloud Spring Boot

细节!3部分讲明白HotSpot:运行时+编译器+垃圾回收器

Java JVM 虚拟机 hotspot

RocketMQ消费者是如何负载均衡的

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 5 月 PK 榜

传感器接线方式详解

鸿蒙之旅

OpenHarmony 三周年连更

ShareSDK Facebook平台注册指南

MobTech袤博科技

人工智能大模型这场游戏才刚刚开始吗?还是在走下坡路? | 社区征文

迷彩

AI大模型 大模型时代 三周年征文 三周年连更

TiDB 在 IPv6 的 K8S 和物理机环境的部署

TiDB 社区干货传送门

安装 & 部署 数据库架构选型 数据库前沿趋势

一起单测引起的项目加载失败惨案 | 京东云技术团队

京东科技开发者

spring 单元测试 bean 企业号 5 月 PK 榜 Javaassist

java 中为什么有了 spring 还再来个 springboot?

海拥(haiyong.site)

三周年连更

面向万物智联的应用框架的思考和探索(中)

HarmonyOS开发者

新手必看|StarRocks 入门教程来啦!

StarRocks

数据库 大数据 数据湖 OLAP 数仓

深入理解 slab cache 内存分配全链路实现

bin的技术小屋

内存管理 Linux Kenel 内存池 slab

共享电单车的未来市场如何?值得做吗?

共享电单车厂家

共享电单车投放 本铯共享电动车 共享电动车生产厂家 共享电单车发展趋势

无需nms,onnxruntime20行代码玩转RT-DETR

Openlab_cosmoplat

深扒!阿里人用6部分讲完Java性能调优:多线程+设计模式+数据库

Java 性能优化 性能调优

单点登录实现思路和方案

Java 单点登录

如何维护好TiDB的三颗仙丹——索引、SQL和IO

TiDB 社区干货传送门

数据库架构设计

如何在Github参与开源项目的建设

骑牛上青山

GitHub 开源 PR

可观测性平台-数据洞察(2)-网站性能探究

Yestodorrow

前端 可观测性 网站性能

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