用FLEX远程连接Fluorinefx,主要是用到NetConnection
使用工具:VS2008(必须安装了Fluorinefx),FLEX
步骤入下:
打开VS2008, 点击菜单 "文件"---->
"新建"---->
"项目"---->
Visual Studio 已安装的模板 选 Fluorinefx ServiceLibrary
会建立以下文件:
第二个ServiceLibrary123是一个类库,对类库点右键,"添加"---"类",添加一个名为"Test.cs"的类,
using System; using System.Collections.Generic; using System.Text; using FluorineFx; namespace ServiceLibrary123 { /// <summary> /// Fluorine sample service. /// </summary> [RemotingService("Fluorine sample service")] //这行不能少 public class Test { public Test() { // // TODO: 在此处添加构造函数逻辑 // } /// <summary> /// /// </summary> /// <param name="sName"></param> /// <returns></returns> public string hello(string sName) { return "这里是Fluorine端,欢迎你:" + sName; } } }
然后对着解决方案"ServiceLibrary123"点右键,
为解决方案添加网站
"添加"---->"新建网站"---->选"Fluorinefx ASP.NET Web Site"
图个方便,我直接把地址填为本地IIS,其实应该和之前我们建的库放在同一个文件夹,不过还是可以使用的.
建立完成后:
设置http://localhost/Fluorinefx123/为启动项目 ,设置Console.aspx为起始页,即可运行
只要能在运行界面找到Test类和其hello方法,服务器端就算配置成功了
下面来用FLEX编写客户端
打开FLEX 点菜单"File"---->"New"---->"Flex Project", project name 随便起.
添加一个名为RemotingConnection.as的AS类,继承NetConnection类.代码如下
package { import flash.net.NetConnection; import flash.net.ObjectEncoding; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.Event; import flash.system.Security; public class RemotingConnection extends NetConnection { public function RemotingConnection(gatewayUrl:String) { //设置通信权限 Security.allowDomain(gatewayUrl); //设置数据格式 this.objectEncoding = ObjectEncoding.AMF0; //连接网关 this.connect(gatewayUrl); } } }
修改testNetConnection.mxml代码入下
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import flash.display.Sprite; import RemotingConnection; import flash.net.Responder; import mx.controls.Alert; public var gateway:RemotingConnection; public var responder:Responder; public var CheckFlag:String = null; public function init():void { //连接网关 //成功连接 if(this.thisinput.text!="") { gateway = new RemotingConnection("http://localhost/Fluorinefx123/Gateway.aspx"); //通讯方法 参数1为要调用的服务器端的方法, //参数2为成功和失败时调用的方法,由Responder包装, //参数3为要传进的参数,我这里是TextInput的Text gateway.call("ServiceLibrary123.Test.hello",new Responder(onResult,onFault),this.thisinput.text); } else { Alert.show("请输入信息"); } } /*************************** * 返回成功 **/ public function onResult(resultt:String):void { if(this.thistext.text=="") {this.thistext.text=resultt} else{ this.thistext.text=this.thistext.text+"\n"+resultt; } } /*************************** * 返回失败 **/ public function onFault(fault:String):void { Alert.show(fault); } ]]> </mx:Script> <mx:Panel x="178" y="59" width="269" height="238" layout="absolute" borderStyle="solid" borderColor="#DFE2DD" backgroundColor="#DAEE95" cornerRadius="8" title="连接远程FluorineFx" fontSize="13"> <mx:Canvas x="0" y="0" width="249" height="184" cornerRadius="8" borderStyle="solid" backgroundColor="#FBFBD6"> <mx:TextInput x="58" y="7" id="thisinput"/> <mx:Label x="8" y="7" text="输入:" width="42" height="20" fontSize="15"/> <mx:TextArea x="58" y="40" height="86" id="thistext" editable="false"/> <mx:Button x="112" y="134" label="读取" fontSize="14" click="init()"/> </mx:Canvas> </mx:Panel> </mx:Application>
运行程序: