视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Flex与ASP.net交互
2025-10-03 15:18:53 责编:小OO
文档
Flex与ASP.NET通过Remoting方式进行通讯 

          前两天研究了一下Flex与.NET如何进行数据交互,并写了一个文档,后面叙述得还不是很详细,还可以再研究深一点。本文是关于Flex与ASP.NET通过Remoting方式进行通讯的内容,过段时间有空还会把其它的通讯方式也描述一下,顺便也会把Flex3与FluorineFx数据类型转换这方面的内容讲一下,都是通过在网上找资料和自己研究所总结出来的,应该说讲得还是很浅,毕竟学得还不深,继续努力学习! 

一、软件:

1、Flex平台:Adobe Flex Builder 3

2、.Net平台:Visual Studio .Net 2008

3、Remoting网关:Fluorine

4、第三方组件:RemoteObjectAMF0

 

二、介绍:

1、Fluorine是一种开源的AMF(ActionScript Messaging Formatter)网关,专门负责Flex3.0与.Net交互时的数据类型转换。Fluorine现支持ActionScript 2.0和ActionScript 3.0,所以Fluorine也可作为Flash与.Net交互时的AMF网关。

2、RemoteObjectAMF0组件是一种基于MXML的第三方组件,用于连接AMF网关。

3、好处:

(1)交互时数据类型的自动转换。因为Flex与.NET的数据类型是不同的,例如Flex的Date与.NET中的DateTime类型。这样就导致Flex与.NET进行数据交互过程中必须进行数据类型的转换。这种数据类型的转换我们可以自己通过编写相关的代码来实现,例如在Flex及.NET中编写一个实体类对其取得的数据进行类型转换。而利用Fluorine这种网关来实现数据交互的话,它能够实现.NET与Flex中的数据类型的自动对应转换,这样从一定程度上就减轻了我们对其数据类型处理的烦恼。

(2)交互效率的提高:利用网关进行数据交互的话,它使得Flex能够直接与.Net的数据处理类进行通信,而不必像再通过另一层中间数据交互层来实现,从一定程度上它的交互效率会提高很多。

(3)这是一个开源的网关。

 

 

三、基本配置

1、服务器端的搭建:

(1)安装FluorineFx,安装完后在目录中会有“Source”及“Samples”两个文件夹,“Samples”文件夹中包含了一些在VS.Net环境中使用Fluorine的例子。“Source”文件夹中包含了有关Fluorine的源代码。(代码未具体去研究)

(2)安装好Fluorine之后,系统自动在VS.Net 2008新建网站中增加一个模板:FluorineFx ASP.NET Web Application。选择该模板,创建一个.NET网站。

 

                                                                               图3.1 

 

a)打开Visual Studio 2008,分别选择 文件 -> 新建 -> 网站

    b)选择已安装模板“FluorineFx ASP.NET Web Application”。

c)运行项目,获取.NET自带服务器生成的端口,及网址,本项目中是 http://localhost:4166/FluorineTest/

(3)利用VS的模板进行创建后,系统会自动加载一些引用,以及创建相关文件,并进行简单配置。创建完后的项目结构如图所示:

 

图3.2

“Bin”中的Dll就是用Fluorine的源文件所生成的程序集,“Templates”是一些模板。“WEB-INF/flex”中包含了XML都是些配置文件。“Gateway.aspx”是个空页面,其网页地址就是Fluorine的网关地址。

2、客户端的配置:

   客户端的配置有三种方法,(三者选一就可以)一种是通过向导来设置参数,从而创建Flex;另一种是通过指定services-config.xml配置文件来设置;第三种是利用第三方组件RemoteObjectAMF0来连接,这种方式就不用再去配置services-config.xml。(推荐用第三种方法)

 (1)向导设置方法:

步骤1. 新建Flex工程。选择ColdFusion Flash Remoting。如图3.3:

必须选择coldfusion

步骤2. 配置服务器。Deployed to J2EE server。如图3.4: 

 Content  root应该是website1或者FluorineTest

(2)services-config.xml配置文件来设置 

 

 修改工程的属性,如图3.5:

修改“Additional compiler arguments”,设置services-config.xml配置文件的路径,可以指向刚才建立的VS.Net项目中的“WEB-INF/flex”中的services-config.xml路径。也可以将services-config.xml这个文件拷贝到调用文件的同级目录中,然后如上面所设。 

 

 (3)利用第三方组件RemoteObjectAMF0来连接,这种方法讲到时再进行介绍。

 

四、通信过程

1、在VS.Net中编写数据处理类HelloWorld.cs文件(可以新建一个FluorineFx ServiceLibrary类库文件,将所有的数据处理类放到库中上,然后在网站中调用此类库,这里就不创建了)。HelloWorld.cs文件的代码如下所示:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using FluorineFx;

 

namespace FluorineHelloWorld

{

    /// 

    ///HelloWorld 的摘要说明

    /// 

    [RemotingService()]

    public class HelloWorld

    {

        public HelloWorld()

        {

            //

            //TODO: 在此处添加构造函数逻辑

            //

        }

        public string FromFluorine(string userName)

        {

            return "您好," + userName + "!此消息来自Fluorine Flash Remoting";

        }

    }

}

 

RemotingService属性并不是必需的,不过使用该属性,在配置了服务浏览器的Web应用上可以通过Console.aspx查看远程服务类文件,以及调用该服务的ActionScrip。例如可以在上页类文件中设置断点,然后将Console.aspx设置为起始页,启动项目。页面会跳转到Fluorine.aspx页面,当调用FromFluorine()函数时,就会中断。下图是对函数所进行的调用结果。

 

图4.1

2、配置Flex工程中的services-config.xml。主要是设置这个endpoint属性。让其指向之前得到的网关地址,另外就是设置了“destination”。

   

                         class="flex.messaging.services.RemotingService"

                 messageTypes="flex.messaging.messages.RemotingMessage">

           

                

                   

               

               

                    *

               

           

       

   

   

       

                         class="flex.messaging.endpoints.AMFEndpoint"/>

       

   

 

3、如下创建一个MXML文件。

    

                    import mx.rpc.events.FaultEvent;

            import mx.rpc.events.ResultEvent;

           import mx.controls.Alert;

        

        public function clickBtnHelloWorld():void{

             sampleRemoteObject.FromFluorine(this.txtHelloWorld.text);

        }

            public function RemoteResult(re:ResultEvent):void

            { 

                var str:String = re.result as String;

                Alert.show(str); 

            }

        

            public function RemoteFault(re:FaultEvent):void

            {

                Alert.show("Message:" + re.fault.faultString,"出错");

            }           

        ]]>

    

 

    

            id="sampleRemoteObject"

        destination="fluorine"

        source="FluorineHelloWorld.HelloWorld"

        showBusyCursor="true">

        

        

                

    

    

        

        

    

 

这里创建了一个RemoteObject对象,并设置了其id属性,“destination”指向services-config.xml中的“destination”的id,source对应VS.Net类,前面FluorineHelloWorld是命名空间,后面HelloWorld是类名。“showBusyCursor”是指在交互时鼠标的状态是否为设置为繁忙。

RemoteObject中创建了一个method方法,“name”属性跟所要调用的VS.Net类中的函数名相同,“result”设置返回结果后的处理事件,“fault”设置交互过程中出错后的处理事件 。

4、运行Flex,结果如下:

图4.2

图4.3

 

五、使用RemoteObjectAMF0来连接fluorine网关

1、上面连接网关是利用了Flex自带的RemoteObject组件来实现,利用这个组件来实现的话,需要在创建项目时对项目进行配置,或者利用配置文档进行配置,这些在上面已经做了详细的介绍。现在介绍的是利用RemoteObjectAMF0组件来实现。这个组件是一种基于MXML的第三方组件,用于连接AMF网关,同时它是一个开源的组件。

2、下载RemoteObjectAMF0后解压,在“src”文件夹中就可以看到关于该组件的源代码,它基本上是对flex中的RemoteObject组件进行的重写。可以将“src”文件夹中的“com”文件夹全部拷贝到flex的工程中,也可以将其编译成库文件再引用到Flex工程中。

3、这时将“com”文件夹拷贝到了工程中。要使用该组件,默认情况下,要在MXML文件中的“Applications”标签中加入命名空间“xmlns:renaun="com.renaun.rpc.*"”。

4、RomoteObjectAMF0组件的定义语法如下所示:

    

       

    

 

RemoteObjectAMF0组件的“endpoint”属性指明AMF网关地址,“source”属性指明类的名称空间,<名称空间:method>组件的name属性指向类中的方法,必须与类中的定义相同,result事件处理返回的数据。

5、RemoteObjectAMF0的调用方法跟上面讲RemoteObject时差不多,比如都可以通过sampleRemoteObject.FromFluorine(this.txtHelloWorld.text);去调用.NET中的FromFluorine()方法。

 

 

 

来自:http://www.cnblogs.com/sailrui/archive/2008/08/23/1274802.html

Tag标签: FLEX与.NET通信,Fluorine

posted on 2008-08-24 17:48 『小小菜鸟』 阅读(1367) 评论(2)  编辑 收藏 网摘 所属分类: FLEX 

评论

#1楼  2008-09-16 11:25 Song1w [未注册用户] 

请问楼主第三方组件RemoteObjectAMF0比起Flex内建组件的好处只有不需要配置xml吗?感觉除了这一项用法差不多。   回复  引用     

#2楼  2009-04-27 16:03 zhuweiDotNet [未注册用户] 

楼主,为什么建工程的时候选择ColdFusion Flash Remoting,而且还是Deployed to J2EE server,,难道后台服务不是asp.net呢,希望楼主给予解释....   回复  引用    下载本文

显示全文
专题