Flex与.NET互操作(六):Flex和.NET协同开发利器FluorineFx

在本系列前面几篇文章中分别介绍了通过WebService、HTTPService、URLLoader以及FielReference等组件或类来完成Flex与.NET服务端的通信的相关知识点。通过这些方式来完成与服务端的通信是非常方便和简单的,但有他的缺点就是通信数据量较小,如要传输大量的数据或是实现不同对象的序列化传输,它们则满足不了我们的需求,需要寻找另外一种通信协议,另一种高效的传输协议来代替SOAP协议传输的方案,那便是AMF(ActionScript Message Format)协议。

开源项目FluorineFx就是专门针对.NET平台与Flex通信提供的AMF协议通信网关,我们可以通过FluorineFx很方便的完成与.NET的通信。

FluorineFx官方提供了安装包的下载和在线文档,可以帮助我们有效的利用FluorineFx来开发。

FluroineFx官方网站:http://www.fluorinefx.com/

FluroineFx下载地址:http://www.fluorinefx.com/download.html

FluroineFx在线文档:http://www.fluorinefx.com/docs/fluorine/index.html

OK,下面我们来看看使用FluroineFx通信的.NET和Flex配置。开发环境选择如下:

.NET:Microsoft Visual Studio 2008 + .NET Framework 3.5

Flex:Adobe Flex Builder CS3 + Flex SDK 3.2

FluroineFx:FluorineFx v1.0.0.15 (点击可下载)

一、.NET服务端的开发

通过Microsoft Visual Studio 2008 创建创建解决方案,并添加FluroineFx服务器库,如下图示:

FluorineFx服务库添加成功后会发现,项目模板会自动为我们创建一个Sample类和一个Echo方法,如下:

1 namespace FlexDotNet.ServiceLibrary  2 {  3     /// <summary>  4     /// Fluorine sample service.  5     /// </summary>  6     [RemotingService("Fluorine sample service")]  7     public class Sample  8     {  9         public Sample() 10         { 11         } 12  13         public string Echo(string text) 14         { 15             return "Gateway echo: " + text; 16         } 17     } 18 }

接着添加FluorineFx 网站到解决方案,添加成功后网站会自动引用FluorineFx服务库的dll。如下图:

到这里我们可以简单的测试FluorineFx的.NET服务端是否成功创建。通过在浏览器中查看FluroineFx网站中的Console.aspx或是将网站设置为启动项目并设置Console.aspx为启始页运行网站都可以,程序便会运行到FluorineFx的控制台,展开左边项目的Services节点便会看到上面模板为我们创建的类和方法,点击方法节点在右边就可以进行简单的测试了,如下图示:

OK,到这里.NET的服务器端就开发完成了,这里我们需要记住几点,在接下来的Flex开发中需要根据这些参数来进行配置。

FluorineFx的.NET网站目录:F:\Demo\FlexDotNet\Web

FluorineFx的.NET网站虚拟目录:/Web

FluorineFx的.NET网站URL:http://localhost:2836/Web

接受Flex客户端请求的URL:http://localhost:2836/Web/Gateway.aspx

有了上面这些东西配置Flex就简单了,首先创建Flex项目,并将项目路径指向前建立的FluorineFx网站的根路径:

如上图,将Application type设置为:Web application,Application Server type设置为:ASP.NET,然后“Next”。进入下一个创建项目向导界面,将Server设置为:"Use Internet Information Services (IIS)",Web Application root同样指向FluorineFx网站的根路径,Web Appliation URL则设置为上面我们获取到的路径便OK,详细见下图:

按照上面步骤配置好后通过点击“Validate Configuration”进行配置验证,如过验证结果是: The web application root and the URL are valid.则代表配置正确,可以直接点下一步只到完成项目的创建。

Flex项目创建完毕,下面在通过一些相应的配置就可以通过FluorineFx和.NET通信了。开发项目属性设置面板,设置其Flex Compiler为下图所示(-services的配置也可以设置为相对路径):

设置Flex Server为如下配置,可以点“Validate Location”验证设置的正确性:

最后设置输出路径就完成了Flex端的配置了:

到这里Flex端的配置就全部完成,下面我们通过FluorineFx库模板为我们生成的Sample为例来测试下该环境是否可以通过,在Flex的mxml文件下通过<mx:RemoteObject>标签来访问远程对象,详细如下:

1 <mx:RemoteObject id="service" destination="fluorine" 2     source="FlexDotNet.ServiceLibrary.Sample"> 3         <mx:method name="Echo" result="onResult(event)"> 4         </mx:method> 5 </mx:RemoteObject>

这里需要注意的是destination需要设置为与remoting-config.xml中的destination的id一致,source则配置为远程对象的全路径(名称空间+类),通过<mx:method>标签配置远程对象下的方法并设置其成功调用后的结果处理函数,下面便可通过id去调用远程方法了。

1 <mx:Script>  2     <![CDATA[  3         import mx.rpc.events.ResultEvent;  4         internal function onClick():void  5         {  6             service.Echo(txtInput.text);  7         }  8           9         internal function onResult(evt:ResultEvent):void 10         { 11             txtResult.text = evt.result.toString(); 12         } 13     ]]> 14 </mx:Script>

下面是完整的Flex客户端mxml的代码定义:

 1 <?xml version="1.0" encoding="utf-8"?>  2 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">  3     <mx:RemoteObject id="service" destination="fluorine"  4         source="FlexDotNet.ServiceLibrary.Sample">  5             <mx:method name="Echo" result="onResult(event)">  6             </mx:method>  7     </mx:RemoteObject>  8       9     <mx:Script> 10         <![CDATA[ 11             import mx.rpc.events.ResultEvent; 12             internal function onClick():void 13             { 14                 service.Echo(txtInput.text); 15             } 16              17             internal function onResult(evt:ResultEvent):void 18             { 19                 txtResult.text = evt.result.toString(); 20             } 21         ]]> 22     </mx:Script> 23      24     <mx:Panel x="53" y="52" width="250" height="200" layout="absolute" title="测试FluorineFx" fontSize="12"> 25         <mx:TextInput x="35" y="21" id="txtInput"/> 26         <mx:Button x="35" y="63" label="确 定" fontWeight="normal" click="onClick()"/> 27         <mx:Label x="35" y="95" text="结 果:"/> 28         <mx:TextInput x="35" y="123" width="160" id="txtResult"/> 29     </mx:Panel> 30 </mx:Application> 31

本文示例截图:      

版权说明

本文属原创文章,欢迎转载,其版权归作者和博客园共有。

作      者:Beniao

文章出处:http://beniao.cnblogs.com/  或  http://www.cnblogs.com/

就我初学者而言,这篇文章写的非常详细,在使用的过程中遇到的问题,都能在该文章的评论中找到答案,非常好,带入门,很不错。

Flex与.NET互操作(六):Flex和.NET协同开发利器FluorineFx,布布扣,bubuko.com

时间: 2024-10-25 03:04:44

Flex与.NET互操作(六):Flex和.NET协同开发利器FluorineFx的相关文章

2013-2014(第六届)中国嵌入式开发从业人员调查报告

2013-2014(第六届)中国嵌入式开发从业人员调查报告查看 >>调查背景 在嵌入式.移动互联网.物联网等热门技术日益普及的今天,以实现智能化为核心目标的典型技术,已经成为了整个信息产业毋庸置疑的主旋律.特别是近1 年,以智能家居.智能医疗.可穿戴设备等为首的大量智能硬件批量的进入到人们的生活,更让这一场智能技术的变革成为势不可挡的潮流.事实上,随着产业的变 革和发展,IT行业也已经被重新定义,从Information Technology(信息技术)领域发展为Intelligent Tec

南沙政府应急系统之GIS一张图(arcgis api for flex)讲解(六)地图搜索模块

config.xml文件的配置如下: 1 <widget label="地图搜索" icon="assets/images/emergency_resource_over.png" 2 config="widgets/Search/SearchWidget.xml" url="widgets/Search/SearchWidget.swf" /> 源代码目录如下: 地图搜索模块的源代码原理解析,详细的代码在下载的开

JavaScript - flex布局测试案例【flex】主轴方向

<div class="container"> <p>flex-direction</p> <div id="radios"> <input type="radio" name="same" value="row" checked>row <input type="radio" name="same"

第六章|网络编程-socket开发

1.计算机基础 作为应用开发程序员,我们开发的软件都是应用软件,而应用软件必须运行于操作系统之上,操作系统则运行于硬件之上,应用软件是无法直接操作硬件的,应用软件对硬件的操作必须调用操作系统的接口,由操作系统操控硬件. 比如客户端软件想要基于网络发送一条消息给服务端软件,流程是: 1.客户端软件产生数据,存放于客户端软件的内存中,然后调用接口将自己内存中的数据发送/拷贝给操作系统内存 2.客户端操作系统收到数据后,按照客户端软件指定的规则(即协议).调用网卡发送数据 3.网络传输数据 4.服务端

【Mongodb教程 第十六课 】 分享NO-SQL开发实战

最近研究了一下NOSQL,现整理目录如下: 一.关系数据库的瓶颈: 二.NOSQL概述: 三.NOSQL中的热门数据库MongoDB介绍及安装配置: 四.MongoDB开发模式及实战: 一.关系数据库的瓶颈 从90年代到至今,关系数据库扮演了最重要的角色,它的性能,可扩展性.稳定性.数据的备份和恢复机制等都非常好,关系数据库发展到现在已经非常成熟,它提供给使用者的是一整套体系,包括数据存储.数据备份恢复.数据加解密.应用开发驱动.图形化配置维护工具.安全策略等等.图1中展示了世界上各种数据库的使

第六篇T语言实例开发,多点找色应用

---恢复内容开始--- 多点找色应用 文字,图形特征的获取 多点找色 功能原型 窗口多点找色(窗口句柄,x1,y1,x2,y2,颜色值,色点组,相似度,方向,返回x,返回y) 功能说明 根据指定的多点查找颜色坐标 窗口句柄 窗口句柄 x1 左上角坐标x y1 左上角坐标y x2 右下角坐标x y2 右下角坐标y 颜色值 起点颜色值,颜色格式为"RRGGBB-DRDGDB|RRGGBB-DRDGDB|…………",颜色排列为RGB格式 色点组 色点组(格式为"x1|y1|RRG

上班的第四百六十八天——第一次参与游戏开发

今天是我参与游戏开发的第一天,用一个字形容吧,就是"累". 说实话,我明天已经不想去了.看着他们个个油光满面,连头发都是油的,身上还有股味道,就知道昨天晚上加班太晚,没时间洗澡,其实这个我是能忍的.但是看着他们个个都驼背,薄弱的身躯显得肚子特别大,好像被一座大山压了很久那样子,眼睛里补满血丝,主程更是咳到心口痛.作为程序员,应该是属于精英分子,但是他们的样子告诉我,这是农民工啊!我开始急躁了,我做下去是不是也会这样呢? 当然,这个只是其次.最主要还是工作内容,我应聘的是C++游戏服务器

BizTalk动手实验(十六)EDI-AS2解决文案开发配置

1 课程简介 通过本课程熟悉EDI.AS2解决文案的开发与配置,本动手实验步骤及内容采用微软官方SDK完成,学员在实验过程中结合官方教程来完成本实验 本实验基于BizTalk 2013(Windows Server 2012 64bit + SQL Server 2012 + BizTalk 2013 + Visual Studio 2012), 同样适用于BizTalk 2010环境.AS2 Demo文件夹为:C:\Program Files (x86)\Microsoft BizTalk S

第六模块:WEB框架开发 第1章&#183;Django框架开发50~100

51-表关系之一对一 52-表关系之多对多 53-表关系之一对多 54-表关系总结 55-ORM生成关联表模型 56-多表操作之一对多添加记录 57-多表操作之多对多添加记录 58-基于对象跨表查询之一对多 59-基于对象跨表查询之一对一 60-基于对象跨表查询之多对多 61-基于对象跨表查询之sql语句 62-基于双下划线的跨表查询1 63-基于双下划线的跨表查询2 64-聚合与分组查询 65-Ajax简介 66-Ajax的简单实现 67-Ajax传递数据 68-基于AJax的登录验证 69-