Flexアプリを3つのパブリック・クラウドと連携する方法
AKABANA
有川 榮一
2010/9/10
Adobe CS5の新しい中核を担うFlex 4のフレームワーク。ワークフローを初めRIA開発現場がどう変わるかを、Flash Builder 4やFlash Catalyst、Adobe AIR 2などの技術・ツール・フレームワークなどの機能を紹介しながら解説する連載(編集部)
RIAとクラウドの連携は、何がメリットなのか?
クラウド・コンピューティングを活用してサービス提供することが、最近増えてきています。理由として、サービス構築のツールの提供や、クラウドサービスの低価格化が影響しています。しかし、HTMLやテキストフォーマット通信で提供しているサービスでは、クライアント側からのアクセスが多くなると、転送量が多くなります。すると、レイテンシが増加し転送コストが大きくなるなどの問題が出てきます。
そこでクライアント側をRIAにすると、基本的にデータのやりとりのみになるので、転送量を抑えてレイテンシを小さくすることができます。本稿では、そんなパブリック・クラウド上のWebサービスとRIAの連携について具体的な方法を紹介します。クライアント側はFlex、パブリック・クラウド側は、Amazon EC2やGoogle App Engine、Windows Azureを扱います。
また、Flexとクラウドを連携するときの通信フォーマットには、Flexと最も相性が良いAMFを選択することをお勧めします。まずは、AMFについて解説します。
XMLやJSONより速い通信フォーマット「AMF」とは
AMFとは、「Action Message Format」と呼ばれるバイナリフォーマットです。仕様書は下記で公開されています。
AMFがFlexとクラウド連携に最適な理由を簡単にいうと、バイナリなのでテキストフォーマットに比べると転送量を少なくして通信の高速が低コストで実現できるからです。以下で3つの理由に分けて、詳細に説明します。
□ AMFを勧める理由【その1】軽量
AMFは、バイナリデータです。データをバイナリにシリアライズすることで、軽量化を図っています。XMLやJSONベースのテキストフォーマットに比べると、XMLだと約1/10、JSONだと約1/4軽量になります。大規模データなどを扱う場合に、特に効果を発揮します。
□ AMFを勧める理由【その2】高速
送信するデータが軽量なので、データ転送量が少なくなり高速な通信ができます。
□ AMFを勧める理由【その3】低コスト
XMLやJSONに比べて、ActionScriptオブジェクトへの変換コストが非常に低いです。また、Flash Playerでは内部的に自動クラスマッピングを行うので、開発コストも抑えられます。
サンプルFlexアプリの概要
今回作成するサンプルは、3つのクラウドのWebアプリケーション上に公開されているサービスに接続するFlexアプリケーションです。仕様としては、入力された文字をサービスに送信して、その結果を表示するシンプルなものです。
□ Flash Builderでサンプルの見た目を確認してみよう
サンプルのMXMLコードを以下に示します。
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
>
<fx:Declarations>
<s:RemoteObject id="echoRO"
destination="echo"
endpoint="http:///gateway.aspx"
>
<s:method name="execute"/>
</s:RemoteObject>
<s:CallResponder id="echo_result"/>
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import samples.echo.model.Echo;
import samples.echo.model.Word;
private function clickHandler(event:MouseEvent):void{
var word:Word = new Word();
word.text = wordTxt.text;
echo_result.token = echoRO.execute(word);
}
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout verticalAlign="middle"
horizontalAlign="center"/>
</s:layout>
<s:HGroup verticalAlign="middle">
<s:RichText text="Word:"/>
<s:TextInput id="wordTxt"/>
</s:HGroup>
<s:Button label="Send Word"
click="clickHandler(event)"/>
<s:RichText text="{echo_result.lastResult as Echo}"/>
</s:Application>
Flash Builderなどの開発環境をダウンロード してコードやUIの見た目を確認してみてください。Flash BuilderはEclipseベースのスタンドアロン版と、Eclipseプラグイン版があるので、後ほど説明する各パブリック・クラウドごとの開発環境/Eclipseプラグインとも相性が良いです。以下の記事が、環境構築の参考になると思います。
Flash Builder 4でAdobe AIRアプリを作ってみた 業務用Flashアプリ開発ツールの新機能を試す 新機能の目玉「データ中心型開発」とは何なのか? 簡単なRSSリーダーのサンプルを作りながら、新機能をイロイロ紹介 「リッチクライアント & 帳票」フォーラム 2010/3/24 |
本稿で作ったFlexアプリケーションは、こちらからダウンロードできます。.fxp形式なので、Flash Builderなら簡単にインポートできると思います。
□ 接続URLの修正
FlexアプリケーションからWebアプリケーション/サービスへの接続URLは、開発時とデプロイ時で設定を変更します。
<s:RemoteObject id="echoRO"
destination="echo"
endpoint="【Webアプリケーション/サービスの接続URL】"
>
<s:method name="execute"/>
</s:RemoteObject>
どのように変えるかは、次ページから、以下のように各パブリック・クラウド別に説明します。サービスの開発とデプロイを行って、Flexアプリケーションと連携してみましょう。
- 【1】Amazon EC2+BlazeDS 4でクラウドFlex
- 【2】Google App Engine+T2でクラウドFlex
- 【3】Windows Azure+AMF MessagingでクラウドFlex
1-2-3-4 |
INDEX | ||
Flexフレームワークで変わるRIA開発の現場(5) Flexアプリを3つのパブリック・クラウドと連携する方法 |
||
Page1 RIAとクラウドの連携は、何がメリットなのか? XMLやJSONより速い通信フォーマット「AMF」とは サンプルFlexアプリの概要 |
||
Page2 【1】Amazon EC2+BlazeDS 4でクラウドFlex |
||
Page3 【2】Google App Engine+T2でクラウドFlex |
||
Page4 【3】Windows Azure+AMF MessagingでクラウドFlex AMFは、AndroidやiPhoneなどモバイルにも有効 |
リッチクライアント&帳票 全記事一覧へ |
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|