Flash Remoting

クライアントとサーバーの最適化されたデータ通信のためには、Flash Remoting および AMF を使用します。

リモートコンテンツを SWF ファイルにロードするのに XML を使用することができます。ただし、XML はランタイムがロードおよび解析するプレーンテキストです。XML は限られた量のコンテンツをロードするアプリケーションに適しています。大容量のコンテンツをロードするアプリケーションを開発している場合は、Flash Remoting テクノロジーと Action Message Format(AMF)の使用を検討してください。

AMF は、サーバーとランタイム間でのデータ共有に使用されるバイナリ形式です。AMF を使用すると、データのサイズを縮小して、転送速度を改善できます。AMF はランタイムのネイティブフォーマットなので、AMF データをランタイムに送信すると、メモリを集中的に使用するシリアル化および非シリアル化をクライアント側で避けることができます。これらのタスクはリモートゲートウェイが処理します。ActionScript データタイプをサーバーに送信すると、リモートゲートウェイがシリアライゼーションをサーバーサイドで処理します。また、ゲートウェイは対応するデータタイプをユーザーに送信します。このデータタイプはサーバー上で作成されたクラスです。ランタイムから呼び出すことのできる一連のメソッドが公開されています。Flash Remoting ゲートウェイには、ZendAMF、FluorineFX、WebORB および BlazeDS(アドビ システムズ社が提供している公式オープンソースの Java Flash Remoting ゲートウェイ)があります。

次の図は、Flash Remoting の概念図です。

次の例では、NetConnection クラスを使用して Flash Remoting ゲートウェイに接続します。

// Create the NetConnection object 
var connection:NetConnection = new NetConnection (); 
  
// Connect to a Flash Remoting gateway 
connection.connect ("http://www.yourserver.com/remotingservice/gateway.php"); 
  
// Asynchronous handlers for incoming data and errors 
function success ( incomingData:* ):void 
{ 
    trace( incomingData ); 
} 
  
function error ( error:* ):void 
{ 
    trace( "Error occured" ); 
} 
  
// Create an object that handles the mapping to success and error handlers 
var serverResult:Responder = new Responder (success, error); 
  
// Call the remote method 
connection.call ("org.yourserver.HelloWorld.sayHello", serverResult, "Hello there ?");

リモートゲートウェイへの接続は簡単です。Adobe® Flex® SDK に含まれている RemoteObject クラスを使用すれば、Flash Remoting をさらに簡単にできます。

注意: Adobe® Flash® Professional プロジェクト内では、外部の SWC ファイル(Flex フレームワークのファイルなど)を使用できます。SWC ファイルを使用すれば、RemoteObject クラスとその依存クラスを使用できます。他の Flex SDK は必要ありません。上級開発者は、必要に応じて、未加工型の Socket クラス経由でリモートゲートウェイと直接通信できます。