使用Flash Remoting实现Flex与ColdFusion通信

来源:互联网 发布:二胡淘宝网 编辑:程序博客网 时间:2024/05/17 01:05

哈哈,轉載該篇文章主要用來自己睇傑,無他意,來源:http://www.riafan.com/default.asp

Flash Remoting Service是Flex访问数据的三种方式之一,它没有Flex Data Service那么强大,但是比HTTP Service的效率高。不管是Flex Data Service还是WebORB都需要额外会费,而ColdFusion Flash Remoting Service在ColdFusion  MX 7中内置的,如果我们已经安装有ColdFusion MX 7,就可以直接使用ColdFusion Flash Remoting Service技术了。Flex与ColdFusion Flash Remoting Service的通信实质是Flash Player与Flash Remoting的通信,数据是通过AMF的数据传输方式方式来实现的。Flex 2对于AFM0和AMF3都是支持的。相对于AFM0,AMF3是一种全新的技术,目前还没有技术规范。另一方面,许多开源软件也开始支持AMF3,比如PHPAMF、fluorine、WebORB for Ruby on Rails以及WebORB for PHP。不过目前还是以ColdFusion Flash Remoting 最为最为正宗。

一、客户端

下面我们就用Flex Builder来用创建本实例所用的简单Flex应用。请大家注意步骤的细节。

  1. 打开Flex Builder,选择File>New>Flex Project>ColdFusion Flash Remoting Service。

  1. 单击Next,设置工程名称(如flashservices),工程路径默认不变。

  1. 修改工程主文件名称(如HelloWorld),设置输出文件的路径。单击“Finish”完成工程的创建。如下图:

默认的输出文件夹bin在当前工程的根目录下,一般需要修改。因为新版的Flash播放器更加限制跨域访问。Flash player 7及以前我们还能在本地访问Flash Remoting Service,Flash player 8也能在编译环境下访问。但在Flex Builder中,即使有编译环境下也不能跨域访问。因此,输出文件夹必须在Web应用的根目录下。

  1. 编写客户端代码:  

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    
<mx:RemoteObject id="cfService" destination="ColdFusion"
    source
="flashservices.remoting.HelloWorld"  showBusyCursor="true" />
    
<mx:TextInput id="txtName"/>
    
<mx:Button label="Say Hello" click="cfService.sayHello(txtName.text)"/>
    
<mx:Label text="{cfService.sayHello.lastResult}" fontSize="18"/>
</mx:Application>

我们此处采用mxml不编写代码的,当然我们也可以用AS3来实现相同的功能。在这个实例中,我们用<mx:RemoteObject>新建了一个remoteObject对象,该对象使我们能访问AMF编码的CF组件HelloWorld的方法方法sayHello。其destination属性为服务器端的真正服务或我们想要调用的对象,该destination可以在services-config.xml或者包含文件中设置。其source属性来指定CF组件的服务路径:flashservices.remoting.Services

接着通过按钮的click事件调用服务器端的服务器方法sayHello,该方法将txtName组件的输入值作主参数。最后将调用成功后返回的结果绑定到label组件来显示。

二、服务器端:

不管是AMF0还是AMF3,服务器端的代码是一样的。请参看使用ColdFusion Flash Remoting开发Flash应用中的后台代码。

运行该程序。效果如下图:

小结:在本实例中,交换的数据都是字符,属于简单型数据类型,其实用HTTP Service应该更合适。Flash Remoting Service的高效主要体现在处理复杂数据上。我们会在以后的教程中陆续介绍。