Flex和.NET协同开发利器FluorineFx 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

本文示例截图:
     

(0)

相关推荐

  • Flex和.NET协同开发利器FluorineFx Flex与.NET互操作

    通过这些方式来完成与服务端的通信是非常方便和简单的,但有他的缺点就是通信数据量较小,如要传输大量的数据或是实现不同对象的序列化传输,它们则满足不了我们的需求,需要寻找另外一种通信协议,另一种高效的传输协议来代替SOAP协议传输的方案,那便是AMF(ActionScript Message Format)协议. 开源项目FluorineFx就是专门针对.NET平台与Flex通信提供的AMF协议通信网关,我们可以通过FluorineFx很方便的完成与.NET的通信. FluorineFx官方提供了安

  • 详解Android Studio中Git的配置及协同开发

    一. Android Stutio配置git setting–>Version Control–>Git–>Path to Git executable中选择git.exe的位置,这个Stutio一般会默认配置好: 配置完路径后点击后面的Test按钮,出现下面提示框则表示配置成功: 二. 将项目分享到github 1. 设置github账号密码 打开Setting–>Version Control–>GitHub,填写完账号密码后,点击Test测试,如果连接成功会弹出如下提示

  • 协同开发巧用gitignore中间件避免网络请求携带登录信息

    目录 协同开发时本地测试 GoFrame如何优雅的获得方法名 巧用中间件 中间件在登录之后设置关键信息到context上下文中 业务逻辑直接通过context直接取值 case when 总结 协同开发时本地测试 昨天的文章中提到了Go如何优雅的进行本地测试,今天分享一下:在多人协同开发中,如果大家都进行本地测试可能会出现的问题. 最大的问题就是git合并的问题,大家都改这个test文件,就会导致有冲突. 我们可以通过把test文件加到.gitignore中来解决这个问题. 比如,我的测试文件所

  • Git多人协同开发紧急修复线上bug操作指南

    目录 使用场景 解决思路 操作流程 附录:Git使用的小技巧 Git命令别名 总结 使用场景 团队协同开发时,生产环境出现bug,需要紧急修复. 每位同学在本地开发,对应本地的dev分支,本地测试通过后提交到测试环境的dev分支. 测试环境有其他同学提交的代码,正在测试中,无法提交到生产环境的master分支. 以上情况导致我们不能在本地基于dev分支修复bug,因为会和其他同学提交的测试中的代码“撞车”,导致无法及时提及到生产环境. 这个时候如何正确使用Git管理代码呢? 解决思路 首先我们从

  • SpringCloud协同开发实现方法浅析

    目录 微服务注册问题 微服务间调用问题 前后端联调问题 相比Springboot开发,SpringCloud开发要复杂的多,因为涉及服务的注册发现,多个微服务模块间的调用等. 最简单的解决方案是每个开发者都在本地启动一套完整的开发环境,包括网关.nacos等各个组成微服务的模块,如果系统模块较少,这种开发方案还可以接受,如果系统太多,本地启动整套环境未免太多臃肿,非常不方便. 微服务注册问题 像下面这张图,倒数第二个服务启动了两个实例,他们两个组成了一个集群.前端在调用接口的时候可能想调用A的该

  • Hutool开发利器MapProxy类使用技巧详解

    目录 概述 场景引入 MapProxy使用 MapProxy源码解析 总结 概述 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”. 目前公司项目中主要采用Hutool作为项目的工具包,相对于google的guava, hutool的工具类采用中文注释,更加符合国人使用.所谓知己知彼,我们需要了解Hutool都具有什么样的功能,才能够最大化发挥它的价值. 本文主要就hutool

  • 教你如何将 Sublime 3 打造成 Python/Django IDE开发利器

    1. 安装 Sublime Text 3 虽然现在的 Sublime 3 还处于 beta 阶段, 但已经非常稳定了, 而且速度比 Sublime 2 得到了增强. Sublime 3 可以到官网下载并安装. Sublime 虽然是免费软件, 但如果有足够的经济能力, 可以考虑购买以表示支持. 2. 安装 Package Control Sublime Package Control 可以说是必须安装的插件, 因为其方便的提供了安装/升级/删除 Sublime 插件的功能, 安装方法见Packa

  • Flex与.NET互操作(十三):FluorineFx.Net实现视频录制与视频回放

    通过它我们可以非常方便的实现在线视频录制.视频直播.视频聊天以及视频会议等类似应用程序的开发. 在<FMS3系列(四):在线视频录制.视频回放 >这篇文章里我写了通过FMS来实现在线视频录制和视频回放的功能,客户端的开发和这篇文章是相同的,不同的是本文将使用Flex来开发. 首先我们来看看使用FluorineFx服务端是如何开发的,建立ApplicationAdapter是必然的,这里我们为本文中的示例程序建立的ApplicationAdapter为VideoApplication,并为其添加

  • 使用flex中的httpservice方法与java进行交互

    地球已经调至震动状态使用flex中的httpservice方法与java进行交互: 一.写服务器: 1.在myeclipse中建立web项目 2.写一个用来打印xml的servlet 3.当使用httpservice与java进行交互的时候不用改写remoting-config.xml文件 4.web.xml文件中配置servlet的访问地址(一般不用配置,当一个servlet建好之后myeclipse就会自动配置好web.xml文 件,不用去改动,但是需要注意的是,当你在导入blazeds开发

  • flex是什么 Flex介绍

    flex通常是指Adobe Flex,是最初由Macromedia公司在2004年3月发布的,基于其专有的Macromedia Flash平台,它是涵盖了支持RIA(Rich Internet Applications)的开发和部署的一系列技术组合.flex的另一个意思是一款生成扫描器的工具,能够识别文本中的词法模式. flex简介 Flex 是一个高效.免费的开源框架,可用于构建具有表现力的 Web 应用程序,这些应用程序利用 Adobe Flash Player和 Adobe AIR, 运行

随机推荐