【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

基于 Adobe AIR 的社交应用开发及案例研究

  • 2010-12-07
  • 本文字数:3639 字

    阅读完需:约 12 分钟

这里是 Adobe 官方网站对于 AIR 的介绍:

Adobe® AIR® 运行时使开发人员能使用 HTML、JavaScript、Adobe Flash® Professional 软件和 ActionScript® 构建 Web 应用程序,这些应用程序可以作为独立的客户端应用程序运行并且不受浏览器的约束。Adobe AIR 作为 Flash Platform 的一个关键组件,为跨设备和平台交付应用程序提供了一个一致、灵活的开发环境,使设计人员和开发人员能完全释放自己的创意。现在提供 AndroidΤΜ BlackBerryΤΜ Tablet OS 和 iOS* 移动操作系统及电视支持。

MixMatchMusic 首席执行官兼共同创始人,MobBase 移动应用程序服务开发人员,Charles Feinn,这样评价 Adobe AIR:

借助 Adobe AIR,我们将相同的代码用于桌面、Tablet 和智能手机,这不仅为我们节省了时间和资金,还提供了部署效率。我们随后可以快速、有效地通过 Adobe 的应用程序分发服务 Adobe InMarket 分发这些应用程序。

Emantras Inc. 首席执行官,Sesh Kumar 也给 Adobe AIR 不错的评价:

使用 Adobe AIR 和 Flash Platform 创建应用程序的投资回报和资源节省真正扭转了形势。AIR 是唯一可用的解决方案,它允许您通过重用代码瞄准智能手机、Tablet、台式机和电视。通过多种设备提供电子教学内容的能力令几乎所有人都能进行学习。

Adobe AIR 诞生数年来,已经从 1.0 版本升级至如今的 2.5 版本,产品日趋成熟,其跨平台理念也从电脑桌面扩展到了移动平台,包括 Android 系统、iOS 系统、黑莓系统等等。

目前在各个领域已经涌现出了许多优秀的使用 Adobe AIR 技术开发的客户端软件,例如在社交应用领域,就有著名的 TweetDeck,Twhirl,Spaz,Seesmic Desktop 等等。他们可以支持 Twitter, Facebook,FriendFeed,Myspace 等国外常用的社交网站。

笔者是一位 JavaEE 和 Flex 开发者,但曾经做过 Web 设计师的工作。在使用如上社交应用的同时,笔者发现中国相应的应用非常稀少,因此萌生了为中国现有的社交网站开发应用的想法。目前笔者开发的豆瓣网应用 DoubanTalk、豆瓣桌面客户端以及新浪微博客户端都受到了网友的热烈欢迎。

Adobe AIR 可谓是开发社交应用的首选。首先,你可以使用 Html、Javascript、ActionScript 以及 Flex 进行开发,这比传统的基于 C++、VB、Java 语言的桌面应用的开发速度快了许多倍。其次,借助于 Flash 技术,你可以设计出极为炫目和体验极佳的用户界面,而传统桌面应用开发技术需要耗费大量精力才能做到。再次,Adobe AIR 的跨平台特性为你省去了开发多平台版本软件的麻烦,最新的 Adobe AIR 甚至支持在手机平台运行,真正做到了“一处编写,处处运行”。

当然,笔者也考虑过使用 SilverLight 与 WPF 技术进行类似开发。虽然 C#语言在与原生操作系统交互上更胜一筹,但是笔者后来还是放弃了。首先因为利用 WPF 技术开发的应用需要.NET Framework,这一运行时安装起来极其麻烦和费时,用户体验非常不好(尤其是 WindowXP 操作系统),而自带此运行时的 Windows7 操作系统目前的普及率并不算高。再次,.NET Framework 运行时的跨平台特性做的远不如 Adobe AIR 成功,而这一点对于社交应用是至关重要的。

当然,AIR 最大的劣势就是不能原生地与操作系统交互。因此,用 AIR 开发本地特性比较多的应用是没有多大优势的。然而,对于本地特性使用很少的社交应用来说,AIR 自带的本地接口以及 AIR2.0 提供的本地程序调用接口(NativeProcess)已经完全够用了。

这里笔者提供一个具体案例——DoubanTalk,来说明如何使用 Adobe AIR 进行社交应用开发。

开发需求

豆瓣网是目前中国比较热门的社交网站,它提供一种类似 Facebook 和 Twitter 形式的社区交流形式,但是是非实名的,另外它还是著名的书评、影评、乐评网站。豆瓣网开放了有限的基于 OAuth 的 API,调用方法是 REST 形式。豆瓣网目前的应用还比较贫乏,现有的应用也不够成熟和易用。

社交应用的吸引力在于给使用者带来不同于网页版本的方便快捷,以及创新的功能。

笔者开发应用的初衷便是希望提供一个这样的应用:能够完成豆瓣的基本功能;能够进行友邻广播的过滤和自动提醒;能够查询书影音信息并查看评论;还能够搜索书影音条目的下载地址。

最终的应用版本基本实现了上述功能,并加入了众多豆瓣网页没有的创新点,例如可以转发我说和日记;可以同步显示豆瓣电台歌词;可以查看同城天气预报等等,这些创新点也是该应用受到热烈欢迎的原因。

应用截图如下:

你可以从这里下载该应用。

实现概览

笔者采用了 Flex3.5 来开发此 AIR 应用。相对于使用 JavaScript 和 Flash Professional 软件,Flex 提供了易于维护和方便开发的 XML 标记语言——MXML 语言。ActionScript 是核心的 Flash Player 编程语言,而 MXML 是建立在其基础上的一个抽象。另外,Flex 提供的各类标准组件大大加快了开发速度。

豆瓣网提供了 REST 形式的 API,返回结果有两种,JSON 和 XML。对于第一种返回结果,可以使用 Adobe 官方提供的 as3corelib 库来进行解析;对于 XML 形式的返回结果,ActionScript3.0 自带的 e4x 语法已经非常强大,解析 XML 非常方便。

部分 API 访问前需要进行 OAuth 认证,可以去 Google 上搜索相应语言对应的 OAuth 库。

在用户数据存储和离线数据存储方面,该应用采用了 Adobe AIR 自带的 Sqllite 本地数据库来储存用户数据。针对于 Sqllite 数据库的数据持久化,可以采用一些持久化框架,也可以自己编写 Sql 语言来实现。

当然,如果数据格式不是太复杂,也可以采用文本文件或者 XML 文件来进行数据存储。

实现细节

这里以应用的一项基本功能——获取最新友邻广播列表来进行说明。获取列表信息需要向豆瓣 API 服务器发出 GET 请求,而通过 Flex 的 HTTPSerivice 组件可以非常方便的发出 GET 请求。

首先,我们需要声明一个 Flex HTTPSerivice 组件:

复制代码
<mx:HTTPService id="miniblogSrv" result="miniblogSrv_result_hander(event)" fault="faultHander(event)"/>

然后,你可以在应用的初始化阶段(例如监听 creationComplete 事件)调用上面的组件发出 GET 请求,请求可以通过 URLVariables 携带参数:

复制代码
var params : URLVariables = new URLVariables();
params['start-index'] =1;
params['max-results'] =20;
var url : String = generalGetURL("http://api.douban.com/people/"+douban_id+"/miniblog/contacts",params);
miniblogSrv.url = url;
miniblogSrv.send();

通过声明上面的 miniblogList 为 [Bindable],返回结果可以与某个 Flex 数据集组件绑定,例如 MX:list 组件。

复制代码
<mx:List width="100%" height="100%" dataProvider="{ miniblogList}"/>

通过使用 Flex 的 itemRenderer 技术,可以针对列表单元项进行个性化定制;而通过 ActionScript3.0 中的 Timer 类,可以进行定时查询以完成广播的自动提醒。

通过使用 ActionScript3.0 中的 URLLoader 和 URLRequst 类可以方便的完成 POST、DELETE、PUT 请求,这里不再赘述。

当然,以上只是一个非常简单的例子以用来展示如何使用 Adobe AIR 来完成基本的 REST 操作。笔者给出的建议是尽量将返回的 XML 数据映射为 ASObject 实体,这样更方便之后的维护;另外可以采用常用的 Flex 框架进行开发,例如 Cairngorm、Mate、Robotleg 等等。

如何发布和部署

Adobe AIR 提供了良好而方便的发布、部署和更新机制。

如何发布?如果你使用的是 Adobe Flash Builder 开发应用,很简单,只需要导出 Release Build 即可;如果你所用的工具并未自带打包功能,你也可以通过 AIR SDK 中的 ADT 命令行参数进行打包。

如何部署?用户只需要安装了 Adobe AIR 运行时,即可通过下载你发布的打包文件非常方便的安装程序。当然,你可以可以通过使用 Adobe AIR Express Install Badge 技术提供用户在线安装的版本,这样用户可以直接在网页上点击一下完成 AIR 运行时和 AIR 应用的同时安装。AIR 安装文件通常非常小巧,安装过程也很快速。

如何自动更新?Adobe AIR 自带的自动更新机制非常好用,只需在远程服务器发布一个符合自动更新格式的 XML 文件即可,应用会在每次启动时自动检查和安装更新程序。当然,开发过程中你也可以使用一些开源的自动更新库。

结论

使用 Adobe AIR 技术进行社交应用的开发,不论是开发速度、界面效果,还是跨平台性,都远远超过其他的桌面软件开发技术。当然,AIR 在游戏、视频、3D 等方面更是有着 Flash 平台得天独厚的优势。目前 AIR 已经初步支持了 Android 等移动操作系统,让我们期待 Adobe AIR 在移动平台上能有更佳的表现!

有兴趣的读者可以到一端网络下载作者开发的其他社交应用软件。

关于作者

作者是一位经验丰富的开发者,在Web 前端、Web 后端、RIA 等方面都有一些研究。在来到Adobe 之前,他曾经担任过Web 设计师、Flash 设计师、JavaEE 工程师、项目架构师等工作。最近他在忙于构建一个统一的社会化应用网络。更多信息可以访问:一端网络


感谢崔康对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2010-12-07 00:002771

评论

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

Matlab实现PCA算法

Shine

三周年连更

软件测试/测试开发丨面试题之软素质与反问面试官篇(附答案)

测试人

软件测试 自动化测试 测试开发 测试用例 ChatGPT

BSN-DDC基础网络详解(十):官方DDC应用SDK

BSN研习社

ShareSDK 新浪微博平台注册指南

MobTech袤博科技

节前超级干货福利放送!这可能是最实用的 Conan 管理依赖贴

Zilliz

非结构化数据 Milvus Zilliz 向量数据库 依赖管理

从不均匀性角度浅析AB实验 | 京东云技术团队

京东科技开发者

A/B 测试 AB实验 企业号 4 月 PK 榜 不均匀 实验准确度

Confidential Containers发布0.5.0版本,龙蜥将基于八大特性构建开箱即用的机密容器解决方案

OpenAnolis小助手

开源 云原生 龙蜥社区 机密计算 机密容器

中移链控制台对接4A平台功能验证介绍

BSN研习社

编程界的新星 — Rust 凭什么被业界青睐(内附学习资源)

Greptime 格睿科技

rust 云原生 时序数据库 分布式时序数据库

如何评价此次“前端已死”言论引起的轩然大波?

这我可不懂

前端 低代码 JNPF

如何优雅的使用策略模式

做梦都在改BUG

浅谈复杂业务系统的架构设计 | 京东云技术团队

京东科技开发者

架构 DDD 架构设计 企业号 4 月 PK 榜 复杂系统

5月7日【飞天Club × 云原生技术实践营—飞天免费计划实践专场】开启报名

阿里巴巴云原生

阿里云 云原生 飞天Club

大型水利投资集团,打造数智财资管理新范式

用友BIP

长春市做等保评测的公司有几家?名单有哪些?

行云管家

等保 等保测评 长春

你不想成长,生活总会逼着你成长,阿里P8架构师分享十年学习生涯

程序知音

Java redis spring java架构 后端技术

通过“群战”实现全民普惠,e签宝带来哪些思考?

ToB行业头条

2023 年最新版Java面试题及答案整理(纯干货,超详细)

架构师之道

Java 面试

干货好文 | 两地三中心到异地双活演变及关键技术探讨

沃趣科技

MySQL 数据库 opengauss

App Store上架流程/苹果app发布流程

雪奈椰子

Matlab实现神经网络

袁袁袁袁满

三周年连更

3月底JAVA面试太难,吃透这份JAVA架构面试笔记后,成功涨到30K

程序知音

Java java面试 java架构 后端技术 Java面试八股文

任务编排:CompletableFuture从入门到精通

做梦都在改BUG

Java CompletableFuture

新浪张俊林:大语言模型的涌现能力——现象与解释

NLP资深玩家

连ChatGPT都不懂的五一调休,到底怎么来的?

禅道项目管理

程序员 GPT 调休

全球首个开发者村启动开村,产业聚力松山湖,共创大湾区创新高地

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

springboot升级过程中踩坑定位分析记录 | 京东云技术团队

京东科技开发者

spring Spring Boot release 企业号 4 月 PK 榜

软件测试/测试开发丨利用ChatGPT自动生成测试用例思维导图

测试人

软件测试 自动化测试 测试开发 测试用例 ChatGPT

GitHub下载已过百万!阿里这份Java虚拟机源码剖析手册真的绝了

做梦都在改BUG

Java JVM 虚拟机

GitHub经典教材!阿里P8的这份SpringBoot精髓到底厉害在哪里?

做梦都在改BUG

Java spring 微服务 Spring Boot 框架

2023年免费的堡垒机就用行云管家!安全感满满!

行云管家

网络安全 等保 小微企业

基于Adobe AIR的社交应用开发及案例研究_Java_饶侠_InfoQ精选文章