`
limingnihao
  • 浏览: 1826215 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring.net + FluorineFx 项目搭建 之 三、编写Flex接口代码

阅读更多

三、编写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>

 

0
0
分享到:
评论

相关推荐

    跟我一步步搭建+Flex+FluorineFx+ASP[1].NET.doc

    总结来说,搭建Flex+FluorineFx+ASP.NET环境涉及安装多个组件,创建对应的项目,并在客户端和服务器端编写代码以实现数据通信。FluorineFx作为中间层,使得Flex应用能够无缝地与ASP.NET服务交互,从而提供强大的RIA...

    跟我一步步搭建 Flex+FluorineFx+ASP.NET

    在本文中,我们将一起学习如何搭建一个基于Flex、FluorineFx和ASP.NET的开发环境,以及创建一个简单的项目。Flex是Adobe开发的RIA(Rich Internet Application)框架,用于构建富交互式前端应用;FluorineFx是.NET...

    跟我一步步搭建+Flex+FluorineFx+ASP.NET整理.pdf

    搭建Flex+FluorineFx+ASP.NET的整合开发环境是一项技术性的工作,涉及多个关键组件的安装和配置。以下是一步步的详细说明: 一、安装软件与配置 1. **MyEclipse 6.0.1**:这是一款集成开发环境(IDE),用于Java、...

    asp.net通过FluorineFx传DataTable到Flex

    **FluorineFx** 是一个开源的.NET到Flash/Flex Remoting框架,它提供了.NET与Adobe Flex之间的通信桥梁,使得.NET服务器端的复杂业务逻辑可以无缝地与Flex前端进行交互。通过FluorineFx,开发者可以轻松地在.NET环境...

    Flex+.Net+Cairngorm+Fluorine的HelloWorld演示

    这个“Flex+.Net+Cairngorm+Fluorine的HelloWorld演示”旨在帮助开发者理解如何将这些技术整合在一起,实现跨平台的通信,并掌握Cairngorm框架的应用。 Flex 是一种基于ActionScript和MXML的开源框架,由Adobe提供...

    flex+fluorinefx access交互测试

    **FluorineFX** 是一个.NET Remoting框架,专为Flex应用程序设计,允许它们与ASP.NET、WCF、Web Services等.NET服务进行无缝通信。它支持AMF(Action Message Format),这是一种高效的数据交换格式,能提高Flex与...

    Flex 4 asp.net VS2010 FluorineFX

    6. **编写客户端代码**:在Flex中调用服务方法,通过AMF通道与ASP.NET服务进行通信。你可以直接操作Flex组件的数据属性,它们会自动同步到服务器。 7. **测试和调试**:运行ASP.NET服务器和Flex客户端,测试数据...

    在线拍照 c# flex+fluorineFx+webservices

    标题中的“在线拍照 c# flex+fluorineFx+webservices”揭示了这是一个基于C#技术,使用Flex前端和FluorineFx作为SOAP Web服务客户端库的在线拍照系统。让我们详细了解一下这些关键技术点。 **C#(Sharp)**: C#是...

    fluorineFx实现Flex与.NET交互实例代码

    FluorineFx是.NET平台上一个流行的开源库,它提供了Flex和.NET之间的集成,使得开发人员可以使用...深入研究这些代码,开发者可以学习到如何将FluorineFx整合进自己的项目,提升Flex和.NET应用程序的协同工作能力。

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

    2. **定义ActionScript接口**:在Flex代码中定义一个接口,表示要调用的ASP.NET服务的方法,如获取数据、保存数据等。 3. **配置FluorineFx**:在ASP.NET项目中添加FluorineFx的相关配置,包括设置AMF端点和启用...

    Flex(PureMVC) asp.net FluorineFx操作数据库

    标题中的“Flex(PureMVC) asp.net FluorineFx操作数据库”表明这是一个关于使用Adobe Flex(一种基于ActionScript的前端开发框架)与后端ASP.NET通过FluorineFx进行数据交互并操作数据库的项目。以下是相关知识点的...

    flex与.net通信的FluorineFx模板

    2. 在.NET项目中配置FluorineFx,定义要暴露给Flex的远程服务。 3. 创建Flex应用,并设置相应的Remoting配置,指定服务器地址和要调用的服务。 4. 在ActionScript代码中,通过RemoteObject或WebService组件调用.NET...

    在VS2010上用FluorineFX和Flex 4开发项目(asp.net)

    在使用Visual Studio 2010 (VS2010) 开发项目时,结合FluorineFX和Adobe Flex 4可以创建出强大的富互联网应用程序(RIA)。这些技术允许开发者构建具有高度交互性和动态用户体验的Web应用。下面将详细介绍如何在VS...

    AMF.rar_FluorineFx_FluorineFx amf_amf__flex_flex amf

    2. **配置服务端**: 创建.NET服务,如ASP.NET Web服务或WCF服务,并使用FluorineFx提供的特性或类来暴露AMF接口。 3. **AMF通道设置**: 配置服务器端的AMF通道,以便处理AMF请求和响应。 4. **客户端集成**: 在Flex...

    Flex_FluorineFx_ASP.NET

    Flex_FluorineFx_ASP.NET 是一个技术组合,涉及到Adobe Flex、FluorineFx以及ASP.NET这三者在Web开发中的应用。这个主题主要关注如何利用这些技术创建富互联网应用程序(RIA)并实现客户端与服务器之间的高效通信。 ...

    Flex和.NET协同开发利器FluorineFx

    FluorineFx 是一个开源框架,专门设计用于解决 Flex 客户端与 .NET 服务端之间的高效通信问题。它实现了 AMF(ActionScript Message Format)协议,这是一种二进制数据格式,能够提供比传统的 SOAP 协议更快、更轻量...

    FluorineFx+Flex视频聊天室源代码

    综上所述,FluorineFx+Flex视频聊天室源代码项目涉及了多种技术,包括Flex的UI设计、FluorineFx的.NET服务集成、AMF的数据交换以及实时音视频通信的实现。通过深入研究这个源代码,开发者可以学习到如何构建一个功能...

    c#使用的FluorineFx.net必须dll库,rtmp协议通信相关

    开发的时候,只需要将5个dll导入就可以了,安装程序是从官网上下载的FluorineFx.net安装程序,版号是1.0.0.15。 导入5个dll之后,就可以用c#按照官网上的教程进行rtmp协议进行通信了,不过教程上对于rtmp协议的用法...

    Flex与.NET互操作

    **FluorineFx**是一个开源项目,专门为.NET平台与Flex之间的通信提供了一个AMF协议通信网关。通过FluorineFx,开发者可以轻松地在Flex与.NET之间建立高速、稳定的数据通信通道,并且支持实时文本聊天、视频通话等...

Global site tag (gtag.js) - Google Analytics