使用Flash Remoting实现Flex与ColdFusion通信

这是一篇讲解怎样使用Flash Remoting实现Flex与ColdFusion通信的入门级实例教程。通过本例的学 习,我们将了解使用ColdFusion Flash Remoting开发Flex RIAs的基本流程。

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,比如PHPAMFfluorineWebORB 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. 浏览选择Web应用的根目录,输入URL根路径,在上下文根(路径)中填写Web应用的虚拟路径。

设置Web应用

  1. 输入工程名,使用工程的默认路径。

输入工程名

  1. 修改工程主文件名称(如HelloWorld),设置输出文件的路径为在上下文根(路径)的子目录。单击Finish完成工程的创建。如下图:

设置路径

默认的输出文件夹bin在当前工程的根目录下,一般需要修改。使用了Flash Remoting技术的Flex工程的输出文 件目录必须是Web应用上下文根(路径)的子目录,而调用了Flash Remoting服务的Flash输出文件时路径可以随意。

  1. 编写客户端代码:

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

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

二、服务器端:

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

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

效果

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

发表评论