Flash Remoting with FluorineFx .NET[转]

像我这样的菜鸟能看懂的FluorinerFX .NET简单教程[根据我的配置少许变动]:
(原文:http://fck.name/archives/flash-remoting-with-fluorinefx-net/)
开发环境:安装了FluorineFx的VS2008/2005,Flash CS3 pro。[我的是vs2003 flex3]
服务器端建立:在VS里新建一个空的解决方案,在此解决方案里添加“FluorineFx ServiceLibrary”项目,然后再在此解决方案里添加一个“FluorineFx ASP.NET Web Site”网站项目,在新建立的FluorineFx ServiceLibrary里创建类,提供公共方法,用于提供给客户端的远程调用,Sample.cs类清单如下:
[我的vs2003里新建:FluorineFxWebApplication项目,起名为Flfx,生成项目后,自动生成个Sample.cs类]

using System;
using FluorineFx;

namespace Flfx
{
    
/// <summary>
    
/// Fluorine sample service.
    
/// </summary>
    [RemotingService("Fluorine sample service")]
    
public class Sample
    {
        
public Sample()
        {
        }

        
public string Echo(string text)
        {
            
return "Gateway echo: " + text;
        }
        //下面的方法非自动生成
        
public Array nameList(Array namearr)
        {
            
//对客户端传来的数组进行排序
            Array.Sort(namearr);
            
return namearr;
        }

    }
}

客户端建立:这里的AS3里有几个重要的类
1、NetConnection类,连接与调用远程应用程序服务器的公共接口(公共方法)
2、Responder类,用于处理服务器的返回值,Responder对象可以拥有两个定义的方法来处理返回的结果:result和status。如果返回的结果为错误,则将调用status处理函数,否则将调用result处理函数来处理远程.net方法返回的结果。
看看文档类FluorineFlash.as的实现:

package {
    
import flash.display.Sprite;
    
import flash.events.Event;
    
import flash.net.NetConnection;
    
import flash.net.ObjectEncoding;
    
import flash.net.Responder;
 
    
public class FluorineFlash extends Sprite {
        
private var nc:NetConnection;
        
private var rp:Responder;
        
private var names:Array;
 
        
public function FluorineFlash() {
            init();
            startCall();
        }
        
private function init():void {
            
//建立一个数组,用于传给远程.net方法做参数
            names=["SunNeon","FCK","Neon"];
            nc
=new NetConnection();
            
//以处理来自服务器的返回值
            rp=new Responder(successResult,errStatus);
            
//指示应对其调用回调方法的对象
            nc.client=nc;
            
//设置采用的编码
            nc.objectEncoding = flash.net.ObjectEncoding.AMF3;
            nc.connect(
"http://localhost/Flfx/Gateway.aspx");
        }
        
private function startCall():void {
            trace(
"调用远程nameList方法!");
            
//执行调用远程nameList方法,并为方法传递names数组
            nc.call("Flfx.Sample.nameList",rp,names);
        }
        
private function successResult(result:Array):void {
            trace(
"返回结果:"+result);
            trace(
"调用成功!");
            
//关闭连接
            nc.close();
        }
        
private function errStatus(result:Boolean):void {
            trace(
"发生错误!");
            nc.close();
        }
    }
}

 

我们在客户端AS里定义了一个数组names,然后通过nc对象的 call(”Flfx.Sample.nameList”,rp,names)方法把数组作为远程方法nameList的参数传递给Flfx项目里Sample类的nameList公共方法,并对其数组进行排序,然后返回给FLASH!
FLASH输出结果为:

调用远程nameList方法!
返回结果:FCK,Neon,SunNeon
调用成功
!


感谢原作者.

posted @ 2008-12-24 10:54  aoogur  阅读(693)  评论(0编辑  收藏  举报