`
lxn014wg
  • 浏览: 35814 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Flex与Asp的通信

 
阅读更多

Flex与Asp的通信
2011年11月09日
             前两天研究了一下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:
  
  步骤2.配置服务器。Deployed to J2EE server。如图3.4:
  
  (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文件的代码如下所示:
  usingSystem;
  usingSystem.Data;
  usingSystem.Configuration;
  usingSystem.Web;
  usingSystem.Web.Security;
  usingSystem.Web.UI;
  usingSystem.Web.UI.HtmlControls;
  usingSystem.Web.UI.WebControls;
  usingSystem.Web.UI.WebControls.WebParts;
  usingFluorineFx;
  namespaceFluorineHelloWorld
  {
  ///
  ///HelloWorld的摘要说明
  ///
  [RemotingService()]
  publicclassHelloWorld
  {
  public HelloWorld()
  {
  //
  //TODO:在此处添加构造函数逻辑
  //
  }
  publicstring 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”。
  
  
  
  
  
  
  
  
  
  *
  
  
  
  
  
  
                    3、如下创建一个MXML文件。
                          
  
  
         
  
  
  
  
  
  
  这里创建了一个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”属性指明类的名称空间,组件的name属性指向类中的方法,必须与类中的定义相同,result事件处理返回的数据。
  5、RemoteObjectAMF0的调用方法跟上面讲RemoteObject时差不多,比如都可以通过sampleRemoteObject.FromFluorine(this.txtHelloWorld.text);去调用.NET中的FromFluorine()方法。
分享到:
评论

相关推荐

    Flex与ASP.Net通信(FluorineFx)程序例子

    Flex与ASP.Net通信对数据库的操作,通信方式FluorineFx, 环境:vs2008+flex3.0 数据库:sqlserver2005

    Flex与asp.net页面通过JS通信源码Js与Flex互通信

    Js与Flex互通信 Aspx页面通过JS动态态传参数给Flex, Js回调Flex方法

    Flashcs3.Flex与asp.php通信总结包含数据库

    Flashcs3.Flex与asp.php之间的通信总结包含数据库,含代码

    flex和asp.net的一个简单的通信例子

    flex利用webservice和asp.net通信的一个简单的例子。flex客户端将登录用的名字和密码传递给后台服务器端。在vs2008中新建web服务。即后缀名为.asmx的文件。

    Flash_cs3、Flex与asp、php通信总结(包含数据库)

    看到flash和asp文件时面变量名就知道相互是怎么传送的呢,对于数据库的一些插入,更新,查询的操作,只要接收flash的数据,直接运行asp相关数据库操作命令就行了.直接复制到IIS的路径下即可测试.在线观看地址:...

    新闻发布系统(asp.net与flex通信) v1.1

    本程序源码全部由个人编写! 设计思想是两层架构 可以自己根据需要自己扩展!本项目灵活性很强! 文件说明: HeYang.Common 公共层 (防止注入、取时间) HeYang.DAL 访问层 (数据库操作) HeYang.DataHelper ...

    Flex HTTPService with ASP.NET.zip

    帶有ASP.NET的Flex HTTPService ... Adobe Flex中有許多方法可以與ASP.NET(或簡單地說,服務器端語言)進行通信。 HttpService,WebService,WebORB,FluorineFx等。在本教程中,我僅關注HTTPService。

    赫阳新闻发布系统(asp.net与flex通信) v1.1.rar

    本系统 适合于 商业 也适合于个人学习 尤其是对一些初学者来说,绝对是一个好的学习源码, 本程序源码全部由个人编写! 设计思想是两层架构 可以自己根据需要自己扩展!本项目灵活性很强! ...HeYang.Common 公共层 ...

    Flex FluorineFx Helloword 实例

    此资源主要是flex通过fluorineFx与asp.net通信的实例。包含全部代码和说明文档。

    赫阳新闻发布系统(asp.net与flex通信) v1.1

    赫阳新闻发布系统(asp.net与flex通信) v1.1,本系统 适合于 商业 也适合于个人学习,尤其是对一些初学者来说,绝对是一个好的学习源码,没有版权 随便流传!青海.赫阳QQ:6726785(JAVA.赫阳),本程序源码全部由个人...

    asp.net知识库

    深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...

    vc代码合集

    2012-06-11 09:50 3,412,722 内部文件非内部程序员禁止访问谢谢1234567890123456789能够实现文件的多选,统一上传,从而实现文件的批量上传Flex多文件上传源码VS2005.rar 2012-06-11 10:08 1,481,225 几个C语言小...

Global site tag (gtag.js) - Google Analytics