使用 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 ?");
连接到远程网关很简单。但是,使用 Adobe® Flex® SDK 中包含的 RemoteObject 类可使用 Flash Remoting 更简单。
注:
外部 SWC 文件(如 Flex 框架中的某个此类文件)可在 Adobe® Flash® Professional 项目内使用。通过使用 SWC 文件,您可以使用 RemoteObject 类及其相关性,而无需使用其余 Flex SDK。如有必要,高级开发人员甚至可以通过原始 Socket 类直接与远程网关通信。