Flex与.NET互操作 了解FluorineFx的环境配置(远程对象、网关、通道、目的地)_Flex

在本系列文章的前面几篇文章中所介绍的访问Webservice的方法,也就是一种远程对象方法,只不过他是基于WEB服务(WebServie)的远程访问,不是基于远程对象(Remoting Object)的的远程访问。要想直接实现基于对象的远程访问是比较麻烦的,然后FluorineFx则专门为我们提供了该功能,通过 FluorineFx的核心库来开发远程对象(Remoting Object)服务,具体是怎么实现的呢?

FluorineFx要求为远程对象提供[RemotingService]标记来提供远程对象服务,看看下面的RemotingServiceAttribute的详细定义:

1 [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
2 public sealed class RemotingServiceAttribute : Attribute
3 {
4     public RemotingServiceAttribute();
5     public RemotingServiceAttribute(string serviceName);
6 }

     从上一篇文章中的示例代码可以看出,使用.NET(c#)定义了一个Sample的远程对象服务类,并为其指定了[RemotingService],详细如下:

 1     [RemotingService("Fluorine sample service")]
 2     public class Sample
 3     {
 4         public Sample()
 5         {
 6         }
 7 
 8         public string Echo(string text)
 9         {
10             return "Gateway echo: " + text;
11         }
12     }

     从上一篇文章中搭建FluorineFx与.NET的开发环境过程中就已经出现过Flex客户端调用FluorineFx的远程对象示例,下面我们在来看看这个示例:

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>

 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的非可视化组件<mx:RemoteObject>进行远程对象连接。其中的 source属性指定远程对象,格式为全限定名(命名空间+类名)。destination属性是非常重要的,这决定了Flex客户端是否可以正确的访问到远对象,相关配置如下:

1     <destination id="fluorine">
2         <properties>
3             <source>*</source>
4         </properties>        
5     </destination>

     在<mx:RemoteObject>组件内部使用<mx:Mothod>组件配置远程对象中的方法,详细见本文前面部分。要真实实现远程对象访问的核心是对象的适配器和连接通道:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <service id="remoting-service"
 3     class="flex.messaging.services.RemotingService"
 4     messageTypes="flex.messaging.messages.RemotingMessage">
 5     <adapters>
 6         <adapter-definition id="dotnet" class="FluorineFx.Remoting.RemotingAdapter" default="true"/>
 7     </adapters>
 8 
 9     <default-channels>
10         <channel ref="my-amf"/>
11     </default-channels>
12 
13     <destination id="fluorine">
14         <properties>
15             <source>*</source>
16         </properties>        
17     </destination>
18 </service>

     实际开发中我们可以进行自定义通信通道,默认情况下是使用FluorineFx为我们提供的默认连接通道:

1     <channels>
2         <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
3             <endpoint uri="http://{server.name}:{server.port}/{context.root}/Gateway.aspx" class="flex.messaging.endpoints.AMFEndpoint"/>
4             <properties>
5                 <!-- <legacy-collection>true</legacy-collection> -->
6             </properties>
7         </channel-definition>
8     </channels>

时间: 2024-09-20 00:42:49

Flex与.NET互操作 了解FluorineFx的环境配置(远程对象、网关、通道、目的地)_Flex的相关文章

基于flex4技术从零开发flex博客系统:1 开发环境配置与hello world

一,如何学好flex 学习技术,最好的方法莫过于边学边用,一边阅读官方文档,一边在项目中实践.但是官方文档太过乏味:若是没人带,从头做项目又不知从何下手.若是有这么一个人,从他最初学习到最后学有所成,这个过程一一被记录下来,别人沿着他这个轨迹学习,一定会更容易入门. 对于初学者,学习内容若太难了,不易理解:若太容易了,又丧失了学习的兴趣与动力.cookbook居说很好,例子很丰富,无论什么问题都能找到答案.但CookBook只是只是针对简单.单一问题的解答集合,很松散,问题与问题之间没有联系,解

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

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

FluorineFx.NET的认证(Authentication )与授权(Authorization)Flex与.NET互操作 九_Flex

应用程序可根据用户信息授予和拒绝执行.FluorineFx.NET的认证和授权使用.Net Framework基于角色的安全性的支持. 比如说我们需要自定义一个认证与授权的方案,指定那些远程服务上的那些方法将要被认证或授权以及授权用户角色组等,我们就需要自定义一个 LoginCommand并实现ILoginCommand接口或者继承于 FluorineFx.Security.GenericLoginCommand(此类实现了ILoginCommand接口)基类.接口定义如下:  1 namesp

Flex与.NET互操作(八) 使用FluorineFx网关实现远程访问_Flex

于此,本文将使用FluorineFx网关来提供数据服务等多项功能来介绍通过FluorineFx实现远程访问的相关知识点. FluorineFx提供的远程访问包括有很多方面的知道点,本文只介绍其中的三个知识点:访问远程对象返回对象,返回DataTable,返回DataSet对象.FluorineFx安装包里自带有相关的示例程序,要学习更多可直接参考这些示例程序.      在实现访问前我们同样来做一些准备工作,建立好远程对象,如下:  1 namespace Fluorine.ServiceLib

Flex与.NET互操作(七)

Flex与.NET互操作(七):了解FluorineFx的环境配置(远程对象.网关.通道.目的地) 注:本文内容原本计划在上一篇<Flex与.NET互操作(六):Flex和.NET协同开发利器FluorineFx >中写出,考虑到写在一起文章内容太长 故分为两篇. Flex中的远程对象访问,也就是服务端提供一个远程服务对象(RemotingService Object),在Flex客户端通过相应的访问技术去调用远程 对象的过程. 在本系列文章的前面几篇文章中所介绍的访问Webservice的方

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

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

Flex与.NET互操作(十二):FluorineFx.Net的及时通信应用(Remote Shared Objects)(三)_Flex

FluorineFx所提供的远程共享对象(Remote Shared Objects)和FMS的共享对象的功能是一样,对于熟悉FMS开发的朋友来说,学习FluorineFx的远程共享对象是非常简单的.       共享对象可以在服务器端创建,也可以在客户端创建.在客户端创建共享对象的方法和使用FMS开发是一样的,创建一个 NetConnection对象,通过该对象的connect()方法连接到服务器,然后通过SharedObject.getRemote()方法就可以在客户端创建一个远程共享对象.

Flex与.NET互操作(八):使用FluorineFx网关实现远程访问

关于远程访问在本系列文章中陆续的写了不少示例了,本文没有准备深入的去探讨,为了巩固FluorineFx网关的学习和使用.于此,本文将 使用FluorineFx网关来提供数据服务等多项功能来介绍通过FluorineFx实现远程访问的相关知识点. FluorineFx提供的远程访问包括有 很多方面的知道点,本文只介绍其中的三个知识点:访问远程对象返回对象,返回DataTable,返回DataSet对象.FluorineFx安装包里自带有相关的 示例程序,要学习更多可直接参考这些示例程序. 在实现访问

Flex与.NET互操作(十五)

Flex与.NET互操作(十五):使用FluorineFx中的字节数组(ByteArray)实现图片上传 前几天一位朋友问我一个问题,他说:"我用HTTP接口或是WebService接口可以实现图片上传功能,那么用FluorineFx如何实现图片 上传功能呢?",其实仔细看官方文档和示例程序的自己都可以找到答案,实现上传可以有很多种实现,这里我以官方所提供是示例为基 础稍加改动,通过ByteArray类实现图片上传. 首先建立FluorineFx库和网站,在远程服务器类里添加一个处理文