Flexフレームワークで変わるRIA開発の現場
連載インデックスへ
第5回

Flexアプリを3つのパブリック・クラウドと連携する方法


AKABANA
有川 榮一
2010/9/10


【3】Windows Azure+AMF MessagingでクラウドFlex

 Windows Azure(以下、Azure)は、Windows Azure Platformの開発環境、サービス・ホスティング環境、およびサービス管理環境として機能するクラウドOSです。

 本稿では、AzureにAMF通信を行えるオープンソースの「AMF Messaging Gateway」をデプロイしてFlexと連携させてみましょう。

Windows Azureの準備

 Windows Azure Accountを作成して、Windows Azure Developer Portalのサイトから準備します。Azureの証明書やサービスの管理などの詳細は、下記記事を参考にしてください。

AMF Messaging Gatewayの準備

 AMF Messaging Gateway(以下、AMG)は、IIS上で動くHTTPモジュールです。このAMGを使うと、AMF通信ができます。

 ダウンロードページから「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のサービスを開発するためには、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プロジェクトにコピーします。また、DLLフォルダに入っている下記3つのファイルを[参照設定]にします。

  • log4net.dll
  • Akabana.Amf.dll
  • Akabana.Amf.Messaging.Gateway.dll

AMGの設定

 AMGの設定は、「Web.config」ファイルに追記します。AMGは、【WebRoleのプロジェクト名】で指定されたアセンブリの中からサービスクラスを探します。

<?xml version="1.0"?>
<configuration>
<configSections>
<section name="akabana.amf.messaging.gateway" type="Akabana.Amf.Messaging.Gateway.Configuration.XmlConfigurator, Akabana.Amf.Messaging.Gateway"/>
</configSections>




<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="MessagingGateway" type="Akabana.Amf.Messaging.Gateway.MessagingGateway, Akabana.Amf.Messaging.Gateway"/>
</modules>
</system.webServer>
<akabana.amf.messaging.gateway endPoint="/gateway.aspx">
<assemblies>
<assembly type="【WebRoleのプロジェクト名】"/>
</assemblies>
</akabana.amf.messaging.gateway>
</configuration>

サンプルC#サービスの作成

 サービスクラスは、BlazeDSの場合と同様のインターフェイスで作成します。ただし、C#で実装するので、モデルクラスも作成する必要があります。

 Echoクラスは、Wordを保持してFlexに返すためのサービスクラスです。また、MessagingService要素を使って、このクラスをechoとして公開します。

using Akabana.Amf.Messaging;
using samples.echo.model;
 
namespace samples.echo.service
{
    [MessagingService(Name = "echo")]
    public class EchoService
    {
        public Echo execute(Word word)
        {
            return new Echo() { word = word };
        }
    }
}

 Wordクラスは、Flexから入力されるデータモデルです。

    public class Word
    {
        public string text { get; set; }
    }

 Echoクラスは、Wordを保持してFlexに返すためのデータモデルです。

    public class Echo
    {
        public Word word { get; set; }
    }

ローカルで試すためにMXMLファイルを修正

 接続URLを「http://127.0.0.1:81/gateway.aspx」に変更して再コンパイルをして、「bin-debug」の中に生成されたファイルを「WebRole1/app/」へコピーします。

 サンプルFlexアプリケーションを実行するには、Visual Studioの[Debug]ボタンをクリックして、Webブラウザで「http://127.0.0.1:81/app/EditApp.html」にアクセスします。

接続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だけではなくモバイルPackager for iPhoneAIR for AndroidAndroid 2.2からのFlash Player搭載)でも動作するようになります。その際にも、AMF通信の軽量さと高速さは、重要になっていくと考えられます。本稿が、AMF通信を使用したクラウドRIA開発の参考になれば幸いです。

@IT関連記事


Amazon S3とAdobe AIRで“クラウドRIA”を作ってみた
クラウドの“クライアント”としてRIAを試す(2) S3 Firefox OrganizerプラグインのようにAmazon S3のデータ構造を体験できるサンプルをActionScriptライブラリで作成
リッチクライアント & 帳票」フォーラム 2009/9/29
AzureのストレージをJavaで扱えるWindowsAzure4j
ユカイ、ツーカイ、カイハツ環境!(14) 
AzureストレージサービスのデータをJavaから参照・更新・削除するプログラムや、そのための無料Eclipseプラグインの使い方を紹介
Java Solution」フォーラム 2010/4/15
クラウド活用「雲活」のために押さえるべき39のポイント
安藤幸央のランダウン(50)
 活用するべきサービスか否か、クラウドの利点・問題点、クラウドプラットフォーム提供企業になるための条件、開発者がするべきことに分けて紹介
Java Solution」フォーラム 2010/2/2
編集部より:クラウドコンピューティングに興味を持った読者は下記インデックスページをご確認ください。随時更新中で、クラウド・コンピューティングの最新情報も分かります。

クラウド技術入門
クラウド・コンピューティング技術。そのすべては、ここにある
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などモバイルにも有効


リッチクライアント&帳票 全記事一覧へ



HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日 月間