写点什么

基于 Facebook 和 Flash 平台的应用架构解析(三)

2009 年 8 月 28 日

续上篇…

独立Flash Facebook 站点应用

图5 描绘了独立的Flash Facebook 站点应用的架构。其主要区别是Facebook 服务器不再代为处理全部浏览器请求。另外,现在你还必须在客户端代码中用 Facebook API Facebook Connect 处理用户的登录。如果使用 Facebook API 处理登录,用户需在新的浏览器窗口中登录 Facebook 并返回到你的应用中。为了避免在 Facebook 站点登录,为用户提供更无缝的登录体验,你可以使用 Facebook Connect

图 5 独立的 Flash Facebook 站点应用

  1. 当用户在你的站点上访问应用时,浏览器向你的服务器发送 HTTP 请求——请求一个 HTML 或任何服务端页面。
  2. 服务器返回包含了对你的 SWF 文件的引用的 HTML/JS 页面。如果使用 Facebook Connect,该 HTML 页面会包括部分用于初始化 Facebook Connect 的 JavaScript 代码(说明)。
  3. 用户浏览器向你服务器请求内嵌在 HTML 页面中的 SWF 文件。
  4. 你的服务器返回 SWF 文件。
  5. SWF 文件中的 ActionScript 代码直接异步请求 Facebook 服务器——方法是使用官方提供的 ActionScript 3.0 Library for Facebook Platform。你每次可以提交单独一个调用,也可以提交成批调用。在这种情况下,最初对 Facebook 服务器的调用必须获得授权;一旦用户成功登录 (最好使用 Facebook Connect),得到了 Session Key,那么后续所有 Facebook API 调用所需的签名就会由 ActionScript 3.0 Library for Facebook Platform 的类生成。当然,Facebook 必须通过跨域策略文件开放了访问权限,且 API 调用中传送了所需参数。有关此问题的更多信息,请参看前 面在 Flash iFrame 应用部分的讨论。
  6. Facebook 服务器向你的 Flash 应用返回 XML 或 JSON 格式的数据,并由你的应用处理这些数据。
  7. 若 需实现任何服务端处理功能(如在你的服务器上保存某些数据),可在 ActionScript 代码中通过远程过程调用方法实现(可以是 HTTP、Web Service 和 Flash Remoting)。其中最便捷的方法当属 Flash Remoting——它通过开源的二进制 Action Message Format(AMF)实现服务器和 Flash Player 间的数据交换。
  8. 若有必要,服务器可与 Facebook 服务器进行其他通讯。
  9. 你的服务器处理 Facebook 服务器返回的结果数据。
  10. 你的服务器将数据返回给用户浏览器中的 Flash 应用。图 5 中,我们利用 Flash Remoting 和 AMF 交换数据,当然你也可用 Web Service、SOAP、HTTP 实现文本或 XML 格式的数据交换。

Flash Facebook 桌面应用

最后,让我们来讨论 Flash Facebook 桌面应用的架构。基于 Flash 平台的桌面应用,就是 AIR 应用(这个地方请再斟酌一下)。有关构建 AIR 应用的更多信息,请参阅 AIR 文档 AIR 开发者中心。Flash Facebook 桌面应用(如图 6)的架构,和前面讨论过的独立 Flash Facebook 站点应用非常类似,唯一的不同是此时不需要浏览器,SWF 文件也存在于安装了 AIR 应用的用户本地计算机上。

图 6 Flash Facebook 桌面应用

  1. 用户安装并运行 AIR 桌面程序。
  2. SWF 文件中的 ActionScript 代码直接异步请求 Facebook 服务器——方法是使用宿主 Google 代码上 官方提供的 ActionScript 3.0 Library for Facebook Platform。你每次可以提交单独一个调用,也可以提交成批调用。在这种情况下,最初对 Facebook 服务器的调用必须获得授权;一旦用户成功登录 (最好使用 Facebook Connect),得到了 Session Key,那么后续所有 Facebook API 调用所需的签名就会由 ActionScript 3.0 Library for Facebook Platform 的类生成。当然,Facebook 必须通过跨域策略文件开放了访问权限,且 API 调用中传送了所需参数。有关此问题的更多信息,请参看前 面在 Flash iFrame 应用部分的讨论。
  3. Facebook 服务器向你的 Flash 应用返回 XML 或 JSON 格式的数据,并由你的应用处理这些数据。
  4. 若 需实现任何形式的服务端处理功能(如在你的服务器上保存某些数据),可在 ActionScript 代码中通过远程过程调用方法实现 (可以是 HTTP、Web Service 和 Flash Remoting)。其中最便捷的方法当属 Flash Remoting——它通过开源的二进制 Action Message Format (AMF) 实现服务器和 Flash Player 间的数据交换。
  5. 若有必要,服务器可与 Facebook 服务器进行其他通讯。
  6. 你的服务器处理 Facebook 服务器返回的结果数据。
  7. 你的服务器将结果数据返回给 Flash 桌面程序。图 6 中利用 Flash Remoting 和 AMF 交换数据,当然你也可用 Web Service、SOAP、HTTP 实现文本或 XML 格式的数据交换。

总结与引申

本系列文章介绍了三类基于 Flash 和 Facebook 平台的应用:基于 Facebook 的嵌入式应用、Web 站点式的独立应用和桌面应用。对于任何 Facebook 应用,你都可将 Flash 程序包纳在 iFrame 或 FBML 应用中。具体来说,从架构和处理流程角度可分为六种子类型?(本文的架构图和流程处理适用于):基于 Facebook 非 Flash 的 iFrame/FBML 应用,基于 Facebook 的 Flash iFrame/FBML 应用,以及 Flash 站点应用、Flash 桌面应用。 有关 iFrame 和 FBML 应用区别的更多信息,请参考 iFrame、FBML Flash Facebook 应用比较。有关构架基于 Facebook 的 Flash 应用的详细步骤,请观看快速构建Facebook 应用视频,或阅读利用Flexible 构建Facebook 应用快速入门。

作者简介

Jeanette Stallons:Flex 独立培训师、顾问。她为包括 Adobe、Oracle、Boeing、Wachovia、Morgan Stanley 和 Charles Schwab 在内的很多公司讲过课。在此之前,她分别在 Allaire、Macromedia 和 Adobe 工作过,具体参与过的工作包括培训、架构设计、 写作以及 Flash、Flex 等应用以及其他产品的开发。她最新参与的项目是 Adobe 的 Flex Learning Paths。在这个项目中,她担任程序员,同时也是内容专家。

阅读英文原文 Understanding the architecture of applications built on the Facebook and Flash Platforms

相关内容

基于Facebook 和Flash 平台的应用架构解析(一)

基于Facebook 和Flash 平台的应用架构解析(二)


译者简介:罗小平,上海某大型公司互联网中心技术总监, CSDN 大版主,网络 ID 为 lxpbuaa(桂枝香在故国晚秋),曾著有《Delphi 精要》一书。个人博客为 http://blog.csdn.net/lxpbuaa ,他的 Email 和 MSN 为 lxpbuaa AT 263.net

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

2009 年 8 月 28 日 00:304251
用户头像

发布了 26 篇内容, 共 67164 次阅读, 收获喜欢 2 次。

关注

评论

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

欧盟推出新数字法案,会是一场“锄强扶弱”的数字监管变革吗?

脑极体

阿里P8手把手教你!微信小程序的事件处理,安卓系列学习进阶视频

欢喜学安卓

android 程序员 面试 移动开发

深度剖析原理!2020年Android网络编程总结篇,已开源

欢喜学安卓

android 程序员 面试 移动开发

架构师 3 期 3 班 -week5- 作业

zbest

作业 week5

和 lvgo 一起学习设计模式.PDF

星尘的一个朋友

Java 设计模式 23种设计模式

Flutter动态创建UI实现方案

FisherJoe

DBA 的效率加速器——CloudQuery v1.3.0 上线!

CloudQuery社区

数据库 运维 开发 dba

今天发的被删了,不是我没写

lidaobing

28天写作

十日谈:我的 2020

escray

2020 七日更 十日谈

程序员告诉你:C/C++后台开发需要学习哪些技能书

赖猫

c++ Linux 后台开发

【Java入门】String,StringBuffer和StringBuilder

HQ数字卡

Java 七日更

Android知识体系大纲!Android平台HTTPS抓包解决方案及问题分析,年薪50W

欢喜学安卓

android 程序员 面试 移动开发

TypeScript | 第一章:环境搭建及基础数据类型

梁龙先森

typescript 前端 七日更

突破某度云盘下载限速,提速30倍!想学?我教你啊

Silently9527

百度云 HTTP

Win10环境前后端分离项目基于Vue.js+Django+Python3实现微信(wechat)扫码支付流程(2021年最新攻略)

刘悦的技术博客

django Vue 微信支付 python3 请求数据 扫码

灵魂一击!详解Java中的IO输入输出流

程序员小毕

Java 程序员 架构 io

创业感悟 | 2021是继续打工还是选择创业?

黑马腾云

创业

架构师训练营第十一周作业

文智

极客大学架构师训练营

第九周-作业

jizhi7

甲方日常 71

句子

工作 随笔杂谈 日常

既生 var 何生 let

喵叔

七日更

【STL 源码剖析】浅谈 STL 迭代器与 traits 编程技法

herongwei

c++ 后端 迭代器模式 源码剖析 stl

生产环境全链路压测建设历程 16:淘宝网高可用历程的总结

数列科技杨德华

全链路压测 七日更

阿里不允许使用 Executors 创建线程池!那怎么使用,怎么监控?

小傅哥

Java JVMTI 线程池 七日更 Executors

第13周

袭望

vivo 商城架构升级-SSR 实战篇

vivo互联网技术

前端 服务端 Node SSR

第九周-总结

jizhi7

不讲码德!坏味道偷袭我这个老码农

爱笑的架构师

Java 代码审查 代码坏味道 代码规范 七日更

我们该如何正确的中断一个线程的执行??

冰河

Java 并发编程 多线程 高并发 中断线程

架构师 3 期 3 班 -week5- 总结

zbest

总结 week5

架构的业务属性

soolaugust

架构 设计 架构师 七日更

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

基于Facebook和Flash平台的应用架构解析(三)-InfoQ