BT

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

作者 Jeanette Stallons ,译者 罗小平 发布于 2009年8月28日 | 被首富的“一个亿”刷屏?不如定个小目标,先把握住QCon上海的优惠吧!

续上篇......

独立Flash Facebook站点应用

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

独立的Flash Facebook站点应用

图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应用的用户本地计算机上。

Flash Facebook桌面应用

图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中文站用户讨论组中与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论
提供反馈
错误报告
商务合作
内容合作
Marketing
InfoQ.com及所有内容,版权所有 © 2006-2016 C4Media Inc. InfoQ.com 服务器由 Contegix提供, 我们最信赖的ISP伙伴。
北京创新网媒广告有限公司 京ICP备09022563号-7 隐私政策
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.