三、编写Flex的Remoting调用接口代码
3.1 编写默认Sample类的内容
当建立“FluorineFx ServiceLibrary”类库时,默认会生成一个Sample类,在此类添加方法,则就可以让Flex端调用。
3.1.1 首先得到Service对象
在Sample的构造方法中获取对象的引用。
public Sample()
{
IApplicationContext context = WebApplicationContext.GetRootContext();
this.userService = context.GetObject("userService") as IUserService;
}
3.1.2 通过调用Service方法然实现功能
public Boolean Logon(string userName, string password)
{
return userService.Logon(userName, password);
}
3.2 自定义Flex端Remoting调用类
默认情况下此类是自动生成的Sample类,也可以自定义,这样可以使用Spring框架在XML中初始化需要用到的服务对象。
首先,定义三个类,①给前台Flex放接口的类FlexService;②继承IFlexFactory接口的类SpringFlexFactory;③继承FactoryInstance类的类SpringFactoryInstance;
3.2.1FlexService类写法:
using System;
using System.Collections.Generic;
using System.Text;
using FluorineFx;
using Li.Interfaces;
namespace Li.FlexService
{
[RemotingService]
public class FlexService
{
private IUserService UserService;
public FlexService(IUserService UserService)
{
this.UserService = UserService;
}
/// <summary>
/// 用户登陆
/// </summary>
/// <param name="userName"></param>
/// <param name="password"></param>
/// <returns></returns>
public Boolean Logon(string userName, string password)
{
return this.UserService.Logon(userName, password);
}
}
}
3.2.2SpringFlexFactory类写法:
using System;
using System.Collections.Generic;
using System.Text;
using FluorineFx.Messaging;
namespace Li.FlexService
{
class SpringFlexFactory : IFlexFactory
{
#region IFlexFactory 成员
public FactoryInstance CreateFactoryInstance(string id, System.Collections.Hashtable properties)
{
return new SpringFactoryInstance(this, id, properties);
}
public object Lookup(FactoryInstance factoryInstance)
{
return (factoryInstance as SpringFactoryInstance).Lookup();
}
#endregion
}
}
3.2.3SpringFactoryInstance类的写法:
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using FluorineFx.Messaging;
using System.Collections;
using Spring.Context;
using Spring.Context.Support;
namespace Li.FlexService
{
class SpringFactoryInstance : FactoryInstance
{
public SpringFactoryInstance(IFlexFactory factory, string id, Hashtable properties)
: base(factory, id, properties)
{
}
public override object Lookup()
{
IApplicationContext context = WebApplicationContext.GetRootContext();
return context.GetObject(context.GetObjectNamesForType(typeof(FlexService)).FirstOrDefault());
}
}
}
3.3.4需要更改三个配置文件:
①在“FluorineFx ASP.NET Web Site”站点下“WEB-INF\flex\ services-config.xml”配置文件中,根services-config下添加:
<factories>
<factory id="springFlexFactory" class="Li.FlexService.SpringFlexFactory" />
</factories>
②在“FluorineFx ASP.NET Web Site”站点下“WEB-INF\flex\remoting-config.xml”配置文件中,在destination下的properties 添加一个标签 <factory>springFlexFactory</factory>
<destination id="fluorine">
<properties>
<factory>springFlexFactory</factory>
<source>*</source>
</properties> ...
</desination>
③在web.config配置文件中,实例化FlexService类,在spring下的objects添加一个object标签
<object type="Li.FlexService.FlexService, Li.FluorineFx">
<constructor-arg ref="userService" />
</object>
3.3 Flex端调用C#接口
1、首先将“FluorineFx ASP.NET Web Site”网站站点,配置到IIS上。在IIS上新建虚拟目录。
2、在Flex端使用RemoteObject标签进行后台调用,
3、RemoteObject标签中的属性配置为:
①destination内容为:“FluorineFx ASP.NET Web Site”站点下“WEB-INF\flex\remoting-config.xml”配置文件下,destination标签的id内容;
②endpoint内容为:“FluorineFx ASP.NET Web Site”站点下“Gateway.aspx”页面的IIS地址。
③Source内容为: “FluorineFx ServiceLibrary”类库下,编写Flex接口代码的类的包路径(默认为Sample类,自定义时按情况)。
3、 RemoteObject标签中需要添加的内容:
①fault事件:调用后台失败时激发的事件,进行调用失败处理;
②showBusyCursor="true":当调用后台未返回时,鼠标成加载状(钟表转动动画);
③method标签:name为要调用后台的方法名,result为调用此方法成功后激发的事件。
4、 需要调用时形如:调用remoteObject.UserLogin(参数1, 参数2);
<mx:RemoteObject id="remoteObject" destination="fluorine" endpoint="http://192.1.1.113/liWebService/Gateway.aspx"
source=" Li.FlexService.FlexService" fault="remoteFaultHandler(event)" showBusyCursor="true">
<mx:method name="UserLogin" result="UserLoginResultHandler(event)" />
</mx:RemoteObject>
登录功能简单代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" minWidth="1003" minHeight="600" fontSize="12">
<mx:Script>
<![CDATA[
import mx.events.CloseEvent;
import mx.events.FlexEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
/**
* 登陆按钮,事件处理
*/
private function buttonLogon_clickHandler(event:MouseEvent):void
{
this.generalRemoteObject.Logon( this.textInputUserName.text, this.textInputPassword.text );
}
private function logonResultHandler( event:ResultEvent ):void
{
if( event.result )
{
Alert.show("登陆成功");
}
else
{
Alert.show("登陆失败,用户名或密码错误");
}
}
public function remoteFaultHandler( event:FaultEvent ):void
{
Alert.show("remote后台请求错误");
}
]]>
</mx:Script>
<mx:RemoteObject id="generalRemoteObject" destination="fluorine" showBusyCursor="true"
endpoint="http://192.1.1.113/liWebService/Gateway.aspx"
source="Li.FlexService.FlexService" >
<mx:method name="Logon" result="logonResultHandler(event)"/>
</mx:RemoteObject>
<mx:HBox horizontalCenter="0" verticalCenter="90" width="400" verticalAlign="middle">
<mx:Form >
<mx:FormItem label="用户名:">
<mx:TextInput id="textInputUserName" width="150" />
</mx:FormItem>
<mx:FormItem label="密码:">
<mx:TextInput id="textInputPassword" width="150" displayAsPassword="true" />
</mx:FormItem>
</mx:Form>
<mx:Button label="登陆" click="buttonLogon_clickHandler(event)" />
</mx:HBox>
</mx:Application>
分享到:
相关推荐
总结来说,搭建Flex+FluorineFx+ASP.NET环境涉及安装多个组件,创建对应的项目,并在客户端和服务器端编写代码以实现数据通信。FluorineFx作为中间层,使得Flex应用能够无缝地与ASP.NET服务交互,从而提供强大的RIA...
在本文中,我们将一起学习如何搭建一个基于Flex、FluorineFx和ASP.NET的开发环境,以及创建一个简单的项目。Flex是Adobe开发的RIA(Rich Internet Application)框架,用于构建富交互式前端应用;FluorineFx是.NET...
搭建Flex+FluorineFx+ASP.NET的整合开发环境是一项技术性的工作,涉及多个关键组件的安装和配置。以下是一步步的详细说明: 一、安装软件与配置 1. **MyEclipse 6.0.1**:这是一款集成开发环境(IDE),用于Java、...
**FluorineFx** 是一个开源的.NET到Flash/Flex Remoting框架,它提供了.NET与Adobe Flex之间的通信桥梁,使得.NET服务器端的复杂业务逻辑可以无缝地与Flex前端进行交互。通过FluorineFx,开发者可以轻松地在.NET环境...
这个“Flex+.Net+Cairngorm+Fluorine的HelloWorld演示”旨在帮助开发者理解如何将这些技术整合在一起,实现跨平台的通信,并掌握Cairngorm框架的应用。 Flex 是一种基于ActionScript和MXML的开源框架,由Adobe提供...
**FluorineFX** 是一个.NET Remoting框架,专为Flex应用程序设计,允许它们与ASP.NET、WCF、Web Services等.NET服务进行无缝通信。它支持AMF(Action Message Format),这是一种高效的数据交换格式,能提高Flex与...
6. **编写客户端代码**:在Flex中调用服务方法,通过AMF通道与ASP.NET服务进行通信。你可以直接操作Flex组件的数据属性,它们会自动同步到服务器。 7. **测试和调试**:运行ASP.NET服务器和Flex客户端,测试数据...
标题中的“在线拍照 c# flex+fluorineFx+webservices”揭示了这是一个基于C#技术,使用Flex前端和FluorineFx作为SOAP Web服务客户端库的在线拍照系统。让我们详细了解一下这些关键技术点。 **C#(Sharp)**: C#是...
FluorineFx是.NET平台上一个流行的开源库,它提供了Flex和.NET之间的集成,使得开发人员可以使用...深入研究这些代码,开发者可以学习到如何将FluorineFx整合进自己的项目,提升Flex和.NET应用程序的协同工作能力。
2. **定义ActionScript接口**:在Flex代码中定义一个接口,表示要调用的ASP.NET服务的方法,如获取数据、保存数据等。 3. **配置FluorineFx**:在ASP.NET项目中添加FluorineFx的相关配置,包括设置AMF端点和启用...
标题中的“Flex(PureMVC) asp.net FluorineFx操作数据库”表明这是一个关于使用Adobe Flex(一种基于ActionScript的前端开发框架)与后端ASP.NET通过FluorineFx进行数据交互并操作数据库的项目。以下是相关知识点的...
2. 在.NET项目中配置FluorineFx,定义要暴露给Flex的远程服务。 3. 创建Flex应用,并设置相应的Remoting配置,指定服务器地址和要调用的服务。 4. 在ActionScript代码中,通过RemoteObject或WebService组件调用.NET...
在使用Visual Studio 2010 (VS2010) 开发项目时,结合FluorineFX和Adobe Flex 4可以创建出强大的富互联网应用程序(RIA)。这些技术允许开发者构建具有高度交互性和动态用户体验的Web应用。下面将详细介绍如何在VS...
2. **配置服务端**: 创建.NET服务,如ASP.NET Web服务或WCF服务,并使用FluorineFx提供的特性或类来暴露AMF接口。 3. **AMF通道设置**: 配置服务器端的AMF通道,以便处理AMF请求和响应。 4. **客户端集成**: 在Flex...
Flex_FluorineFx_ASP.NET 是一个技术组合,涉及到Adobe Flex、FluorineFx以及ASP.NET这三者在Web开发中的应用。这个主题主要关注如何利用这些技术创建富互联网应用程序(RIA)并实现客户端与服务器之间的高效通信。 ...
FluorineFx 是一个开源框架,专门设计用于解决 Flex 客户端与 .NET 服务端之间的高效通信问题。它实现了 AMF(ActionScript Message Format)协议,这是一种二进制数据格式,能够提供比传统的 SOAP 协议更快、更轻量...
综上所述,FluorineFx+Flex视频聊天室源代码项目涉及了多种技术,包括Flex的UI设计、FluorineFx的.NET服务集成、AMF的数据交换以及实时音视频通信的实现。通过深入研究这个源代码,开发者可以学习到如何构建一个功能...
开发的时候,只需要将5个dll导入就可以了,安装程序是从官网上下载的FluorineFx.net安装程序,版号是1.0.0.15。 导入5个dll之后,就可以用c#按照官网上的教程进行rtmp协议进行通信了,不过教程上对于rtmp协议的用法...
**FluorineFx**是一个开源项目,专门为.NET平台与Flex之间的通信提供了一个AMF协议通信网关。通过FluorineFx,开发者可以轻松地在Flex与.NET之间建立高速、稳定的数据通信通道,并且支持实时文本聊天、视频通话等...