Flash Remoting

使用 Flash Remoting 和 AMF 可最佳化用戶端/伺服器資料通訊。

您可以使用 XML 將遠端內容載入 SWF 檔案。然而,XML 是執行階段載入和剖析的純文字。XML 最適用於載入限量內容的應用程式。如果您開發的應用程式會載入大量的內容,請考慮使用 Flash Remoting 技術與 Action Message Format (AMF)。

AMF 是一種二進位格式,讓您在伺服器與執行階段之間共享資料。使用 AMF 會縮小資料的大小,進而提昇傳輸的速度。因為 AMF 是執行階段的原生格式,傳送 AMF 資料給執行階段可避免在用戶端執行耗用大量記憶體的序列化和還原序列化作業。遠端閘道會處理這些工作。將 ActionScript 資料類型傳送至伺服器時,遠端閘道會處理伺服器端的序列化。閘道也會傳送對應的資料類型給您。此資料類型是在伺服器上建立的類別,這個類別會公開一組可從執行階段呼叫的方法。Flash Remoting 閘道包括 ZendAMF、FluorineFX、WebORB 及 BlazeDS,以及 Adobe 官方開放原始碼的 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 ?");

連線至遠端閘道非常簡單。不過,有更簡單的方式來使用 Flash Remoting,只要使用包含在 Adobe® Flex® SDK 中的 RemoteObject 類別即可。

備註: Adobe® Flash® Professional 專案中可以使用外部 SWC 檔案 (例如來自 Flex 架構的檔案)。使用 SWC 檔案可讓您使用 RemoteObject 類別及其相依項,而不須使用其餘的 Flex SDK。進階的開發人員甚至可以透過原始 Socket 類別,直接和遠端閘道通訊 (若有需要)。