サーバーとの通信
第 1回 はじめに

Flex アプリケーションとサーバーとの通信について

Flex アプリケーションとサーバー通信について、シリーズで説明していきます。

 


目次

第1回 はじめに

第2回 HTTPService を利用する(1) - データをサーバーから受け取る

第3回 HTTPService を利用する(2) - データをサーバーへ送る

第4回 RemoteObject を利用する(1) - 基本編

第5回 RemoteObject を利用する(2) - 基本編(2) (NEW!)

はじめに

Flex でアプリケーションを作りはじると、「どうすればいいのかわからない」と壁にぶち当たるものの一つがサーバーとの通信方法だと思います。 僕自身いろんな人からこのことについて質問されているので一度実際のコーディング方法まで突っ込んでまとめてみようと思いました。 Flex アプリケーションのサーバーとの通信方法は「簡単だけど、少し癖がある」、といった感じでしょうか、この少しの癖は、いろいろな問題に直面した結果として理解したこともたくさんあります。この「少しの癖」は知っている範囲で説明していきたいと思っていますが、それでもすべてではないでしょう。多分より重要なのは「癖」を見抜くための現象解析の方法を知っているかどうかです。ここではサーバー通信について、「何が行われているか」を解析するための様々なテクニックについても説明していこうと思います。

まずは、はじめにということで、次の大前提をしっかりとおさえておいてください。

  • MXML / AS(ActionScript) でコーディングされた Flex アプリケーションはサーバーと通信を行うためのプログラミングをしていない限りサーバーと通信をしません。 Flexプレゼンテーションサーバーは MXML / AS から .swf ファイルを作り、これをクライアントに送り出すまでをします。アプリケーションがサーバーと通信をするかどうかは、サーバーと通信を行うための処理を組み込んだかどうかによります。
     
  • MXML / AS 言語を使ってサーバー側での処理を記述することはできません。サーバー側処理は Java / JSP / Servlet / ( .NET や Java, ColdFusion などで実装された ) Webサービス、などで実装します。
     
  • サーバー側の処理のためには上記テクノロジーを実行するためのサーバー環境が必要になります。 Flex プレゼンテーションサーバーは J2EE サーバー上で動作しますので、この J2EE サーバーをサーバー側処理のための環境として利用することも可能です。 別の見方をすれば、Flex アプリケーションは、Flex プレゼンテーションサーバーと通信をすることも可能ですが、これに制限されるわけではなく、別のサーバーにある、Webサービスや Servlet / JSP などにアクセスをし、結果を取得することもできます。
     
  • Flexアプリケーションが標準でサポートするサーバーとの通信方法は HTTP (GET/POST) / Webサービス / AMF (マクロメディア独自テクノロジー)の3つです。これらはいずれも HTTP プロトコルを使って通信します。 HTTP リクエストが通るネットワーク環境であれば、いずれの方法でも通信をすることができます。いずれも通信方法も HTTP に加え HTTPS での通信もサポートします。
     
  • 上記いずれの通信方法も、クライアントから要求を発行し、これにサーバーが反応に、応答を受け取る「プル型」の通信方法を取ります。
       
  • 上記以外に、低レベル通信API があります。これらを使うと通信ポートの番号から、ソケットの接続の開始、終了までプログラミングで自由にコントロールできます。また Flash Communiction Server というテクノロジーと連携するための API もあります。 これらの API を使う場合、より作りこみが必要です。これらの API を使うとサーバーとの継続的な接続状態を確立することができるので、クライアントからの要求に応じてサーバーが応答を返すのではなく、サーバーからクライアントに強制的にデータを送り込む「プッシュ型」通信メカニズムを実現することができます。
     
  • Flex プレゼンテーションサーバーにはプロキシー機能というものがあります。 これは Flex アプリケーションからのリクエストを Flexプレゼンテーションサーバーがいったん受け取り、ターゲットサーバーへのアクセスを Flex プレゼンテーションが仲介するというものです。 プロキシー機能を介することで、1.サーバー側で接続を管理できる、2.アクセス制限をかけることができる、3.FlashPlayer のクロスドメイン制限を気にしなくてよくなる、などの利点があります。(クロスドメイン制限とは、FlashPlayer のセキュリティー機能で swf をダウンロードしたドメイン以外には、接続サーバー側に接続許可の設定がされていない限り、接続することができないというものです)

第2回では HTTP (GET/POST) の通信をサポートするタグである <mx:HTTPService> タグについて説明します。


ご意見・ご感想

技術レポート一覧へ

トップページ


作成日:2005年2月17日
更新日:2005年4月4日