首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

[转] [Flash/Flex] Flex框架上的AIR开发现场-第5回 Flex应用和3个公共云的协作法

2012-11-10 
[转] [Flash/Flex] Flex框架下的AIR开发现场--第5回 Flex应用和3个公共云的协作法http://bbs.9ria.com/thr

[转] [Flash/Flex] Flex框架下的AIR开发现场--第5回 Flex应用和3个公共云的协作法
http://bbs.9ria.com/thread-76411-1-1.html



第5回
Flex应用程序和3个公共云的协作方法

RIA和云协作有何好处?

    最近云处理服务增多了起来。究其原因则是现在具备了构筑服务的工具以及运服务的低成本化。在使用HTML或文本格式通信的服务中, 传输量会随着客户端的访问量增加而增加。这样一来,就产生了延迟和传输量增大的问题。
    如果使用RIA客户端,基本上只处理数据,因而能减少延时和传输量。本文将具体介绍这种公共云上的Web服务和RIA的协作方法。客户端采用Flex,公共云端采用Amazon EC2、Google App Engine、Windows Azure来处理。
    另外,在Flex和云协作的通信格式中,推荐使用与Flex配合最好的AMF。下面就先谈谈AMF。 

比XML和JSON速度更快的通信格式AMF
    AMF的全称是Action Message Format,是一种二进制格式。有以下2种规格:
    ?AMF0
    ?AMF3 
  为什么说AMF最适合与云协作?简而言之,就是因为AMF是二进制数据,比起文本格式传输量少,能以低成本实现高速通信。下面分成3个理由详细地进行说明。

□ 推荐AMF的理由【其一】轻量
    AMF是二进制格式。通过将数据二进制序列化来实现轻量化。比起基于XML和JSON的文本格式,只有XML的1/10,JSON的1/4左右。尤其在大批量的数据处理中,能发挥显著作用。

□ 推荐AMF的理由【其二】高速
    发送轻量级数据,因而数据传输量少,能进行高速通信。

□ 推荐AMF的理由【其三】低成本
    比起XML和JSON,转换成Actionscript对象的成本非常低。而且在Flash Player内部会进行自动类映射,这同样也降低了开发成本。


Flex应用程序的例子
    这回的Flex应用程序例子中,我们将介绍3个连接云端应用程序上公开服务的Flex应用程序。功能为将输入的字符发送至服务,再显示结果。






□ 在Flash Builder中查看代码
    MXML代码如下



本例的应用程序可以在这里下载。可在Flash Builder中方便地导入这个.fxp格式的文件。
□ 连接URL的修改
    从Flex应用程序连接到Web应用程序/服务的URL,可以在开发或部署时改变设置。




    接下来,下载Tomcat6,安装EC2的服务器实例。 



Apache Tomcat - Apache Tomcat 6 Downloads via kwout


□ BlazeDS的准备
    BlazeDS是Adobe公司发布的开源项目。具有Remoting和messaging功能。



BlazeDS - BlazeDS - Adobe Open Source via kwout



  下载最新版BlazeDS 4、解压「blazeds-bin-4.0.1.17657.zip」得到「blazeds4.war」文件。

□本地开发环境的准备
    接着准备可在本地开发JavaWeb服务的环境。在这里,由Java EE版Eclipse建立EC2+BlazeDS 4的服务。
    首先与EC2中安装Tomcat一样,在本地也安装Tomcat,并在Eclipse中引入。





□ 建立工程
    要开发BlazeDS的Web服务,首先得建立工程。在新建工程向导中选择“DynamicWebProject”。




    在Target runtime中选择Tomcat。




    将类文件的输出位置修改为部署用的classes目录。




    设置部署用的Context root。




    点击Finish按钮,工程就建好了。




    下一步,在WebContent目录中、展开刚才的blazeds4.war。




□ BlazeDS的设置
    下面进行BlazeDS的设置。向WebContent\WEB-INF\flex\remoting-config.xml文件中添加公开的Web服务。如下所示,
samples.echo.service.EchoService就被公开成名为echo的Web服务。



    启动Tomact,在Web浏览器这输入“http://127.0.0.1:8080/blazeds4sample/app/EditApp.html”访问Flex应用程序。

□ 将连接URL改成云服务器,部署到EC2
    部署前,必须将连接URL修改为“http://【EC2-Server】/blazeds4sample/messaging/amf”,再进行Flex应用程序的发布编译。将EC2-Server改为部署位置的主机名。然后将bin-release目录中生成的文件复制到“blazeds4sample/WebContent/app/”下面。
    接着,在Eclipse中生成blzazeds4sample工程的war文件,以便在Tomcat服务器实例上发布 。




    Target runtime选择Tomcat。




    将生成的blzazeds4sample.war复制到Tomcat的webapp目录。重启Tomcat,便部署完成。
    通过访问“http://【EC2-Server】/blazeds4sample/app/EditApp.html”来确认部署是否成功。(请将EC2-Server改为部署位置的主机名)
    本例建立的EC2服务可从此处下载。



  【2】Google App Engine+T2架构的云Flex
    Google App Engine(GAE)是Google提供的云服务。在这种以Jetty为Web容器的Java EE环境中,对可使用的API有严格的限制。因此BlazeDS 4基本上不能运行。
    本文将介绍在GAE上部署T2Web框架,与Flex协作。
□ GAE的准备
    为使用GAE,首先需要注册Google账号。
Google アカウント via kwout




□ T2的准备

    T2是简单易用的Web框架。通过注释可处理各种请求。还具有可通过插件扩展功能的结构。
t-2 - Project Hosting on Google Code via kwout





    本文,组合T2和AMF来建立服务。首先、在以上网站下载t2-0.6.3-ga.zip文件。解压后得到t2-0.6.3-ga.jar文件。
□ 本地开发环境的准备
    接着,准备能在本地开发服务的环境。
    为了开发GAE服务,需要在Eclipse或Flash Builder中安装Google Plugin for Eclipse插件。这样就具备了GAE的开发和部署环境。
 从以下Google Plugin for Eclipse更新站点安装。
Eclipse 3.3(Europa)请使用“http://dl.google.com/eclipse/plugin/3.3”
Eclipse 3.4(Ganymede)请使用“http://dl.google.com/eclipse/plugin/3.4”
Eclipse 3.5(Galileo)请使用“http://dl.google.com/eclipse/plugin/3.5”


    这里假设为Eclipse 3.5,选择[Help]→[Install]。



    安装完成后重启Eclipse,在菜单栏下面会显示Google Plugin for Eclipse按钮。选择[Preferences]→[Google]→[App Engine],可进行各种设定。



□ 建立工程
    下面来建立GAE上开发Web服务的工程吧。首先,在新建工程向导中选择“Web Application Project”。



    按下Next按钮后,在工程设置的Google SDK部分,选择“Use Google App Engine”。



    点击Finish按钮,工程就建好了。



   接着、将以下T2所需的jar文件复制到war/WEB-INF/lib目录中,将t2-0.6.3-ga.jar设置到编辑路径。另外,请删除Servlet等用不到的类。
t2-0.6.3-ga.jar
commons-0.6.7-ga.jar
logback-classic-0.9.15.jar
logback-core-0.9.15.jar
slf4j-api-1.5.6.jar



□ T2的设定
    在web.xml中添加T2的设定。




□ 建立Java服务的例子
    在例子中,我们建立和BlazeDS同样接口和数据模型。不同的是,这次遵循的是T2的规则。
    在BlazeDS中,建立的是Service类。T2中则是建立Echo页面。使用Page注释,将下面的服务类公开为“echo”。


    在工程上右击,选择“Debug”。打开Web浏览器,输入“http://127.0.0.1:8888/app/EditApp.html”,运行Flex应用程序。

□ 将连接URL改成云服务器,部署到GAE
    部署前,必须将连接URL修改为“http://【GAE-APP】.appshot.com/t2amf”,再进行Flex应用程序的发布编译。将GAE-APP改为部署位置的主机名。然后将bin-release目录中生成的文件复制到“t2sample/war/app”下面。

    然后按下图中最左边的按钮,打开下面的部署对话框。在Email中输入Google账号的ID,Password中输入Google账号的密码。按下Deploy按钮,向GAE部署程序。







    通过访问“http://【GAE-APP】.appshot.com/app/EditApp.html”来确认部署是否成功。(请将GAE-APP改为部署位置的主机名)
    本例建立的GAE服务可从此处下载。





【3】Windows Azure+AMF Messaging架构的云Flex
    Windows Azure(Azure)是具有Windows Azure Platform开发环境、服务托管环境以及服务托管环境功能的云操作系统。
    本文将介绍在Azure上部署能与AMF通信的开源的AMF Messaging Gateway,使之与Flex协作。
□ Windows Azure的准备
    在Windows Azure Developer Portal网站注册Windows Azure账号。
□ AMF Messaging Gatewayの準備
    AMF Messaging Gateway(AMG)是运行于IIS上HTTP模块。通过它能进行AMF通信。




amfmessaging via kwout


    从下载页面下载amg-1.0.0-ga.zip文件。解压后得到Akabana.Amf.dll和Akabana.Amf.Messaging.Gateway.dll文件。
□ 本地开发环境的准备
    下面准备能在本地开发Web服务的环境。下载安装Windows Azure Tools for Microsoft Visual Studio 1.2。
    请确认已安装了相匹配的IIS 7.0和SQLServer 2005。这样环境就准备好了。
□ 建立工程

    要开发Azure服务,需要新建Azure Cloud Service工程。Azure Tools安装完成后,启动Visual Studio 2010,在建立工程中选择Azure Cloud Service工程。




    这里使用的云服务是WebRole。WebRole是由处理HTTP(HTTPS)请求的Web应用程序所构成。




    按下OK按钮,资源和工程便建好了。




    接着,将刚才解压后的amg-1.0.0-ga文件夹中的gateway.aspx文件复制到WebRole工程。再将下面3个DLL目录中的文件放到编译路径。
log4net.dll
Akabana.Amf.dll
Akabana.Amf.Messaging.Gateway.dll





□ AMG的设定
    在Web.config文件中添加AMG的设定。AMG会在“WebRole工程名”中指定的程序集中找到服务类。


□ 建立C#服务的例子
    服务类,我们建立与BlazeDS的相同的接口。但是是用C#实现,因此需要建立数据模型类。
    Echo类是保存Word并返回给Flex的服务类。通过使用MessagingService元素,以echo作为名称公开该类。


    点击Visual Studio的Debug按钮。打开Web浏览器,输入“http://127.0.0.1:81/app/EditApp.html”,运行Flex应用程序。
□ 将连接URL改成云服务器,部署到Azure
    部署前,必须将连接URL修改为“http://【AZU-APP】.cloudapp.net/gateway.aspx”,再进行Flex应用程序的发布编译。将AZU-APP改为部署位置的HostedService名称。然后将bin-release目录中生成的文件复制到WebRole1/app目录下。
    右击工程,在上下文菜单中选择“发布”。




  选择Credentials(证书)、HostedServiceSlot to deploy to和Storage Account to deploy througt,按下OK按钮,开始部署。




    打开Web浏览器,通过访问“http://【AZU-APP】.cloudapp.net/app/EditApp.html”来确认部署成功。请将AZU-APP修改为部署位置的HostedService名称。
    本例建立的Azure服务可从此处下载。

AMF也能用在Android和iPhone等移动平台
    本文演示了1个Flex应用程序和3个云端Web应用程序的部署,并通过AMF通信协作。感觉怎么样呢?
    今后的Flex/Flash/Adobe AIR应用程序不仅在PC,在移动平台(Package for iPhone、AIR for Android、Android 2.2开始的内置Flash Player)上也能运行。届时,AMF通信的轻量级和高速化特性也会变得尤为重要吧。若本文对您有些许帮助,则将深感荣幸。

热点排行