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

所属分类: 网页制作 / Flash 阅读数: 482
收藏 0 赞 0 分享

在本系列文章的前面几篇文章中所介绍的访问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>
更多精彩内容其他人还在看

Flex 对象持久化

总有人问我关于Flex对象序列化和持久化的问题,很多人认为对象不能拷贝到服务器,其实浅度的拷贝是可以做到的。
收藏 0 赞 0 分享

XML TO ArrayCollection 两种实现方式

最近研究FLEX,在网上看过100遍同一篇文章,结果测试不通,不知道到底能不能跑通,最后翻资料自己试验处理。
收藏 0 赞 0 分享

java TO ArrayCollection

因为new ArrayCollection 需要 array对象,event.result是空间返回对象(JAVA方法返回值)所以类型不同无法使用new 构造ArrayCollection ,可是恶心的FLEX偏偏支持javalist=ArrayCollection
收藏 0 赞 0 分享

Flex DataGrid DataGridColumn数据颜色多样化-类型替换

用得多了,发觉自己了解的真的是九牛之一毛都没有,最近用到了从后台读出数据时显示的问题,相信很多人都有用整形数据来代替字符串数据的情况
收藏 0 赞 0 分享

flex PopUpManager使用说明

PopUpManager在产生TitleWindow时应记录当前的TitleWindow,目前只能通过1)获取
收藏 0 赞 0 分享

Flex 字符串ReplaceAll使用说明

用过FLEX中String类型的朋友可能知道,replace这个方法并不过替换所有内容。那么我们需要替换所有内容怎么办?
收藏 0 赞 0 分享

基于Socket的网络连接 Flex与.NET互操作(一)

Flash/Flex也支持基于Socket的网络连接 ,服务器端可以是C++,VB,C#,Java等任一语言开发。监听一个网络端口便可以接收到Flash/Flex开发的客户端的连接。
收藏 0 赞 0 分享

基于WebService的数据访问(上) Flex与.NET互操作(二)

Flex提供了<mx:WebService>、<mx:HTTPService>和<mx:RemoteObject>标签来直接访问远程数据,这用于与各种不同语言环境开发提供的远程服务端数据源(如WebService)进行数据交互通信显得更加容易.
收藏 0 赞 0 分享

基于WebService的数据访问(下) Flex与.NET互操作(三)

在上一篇文章《Flex与.NET互操作(二):基于WebService的数据访问(上) 》中介绍了通过<mx:WebService>标签来访问Webservice。实际上我们也可以通过编程的方式动态的访问WebService,Flex SDK为我们提供了WebServ
收藏 0 赞 0 分享

Flex与.NET互操作 使用HttpService、URLReqeust和URLLoader加载/传输数据

在前两篇文章中分别介绍了Flex与.NET的WebService之间的数据交互通信知识,本文将介绍另外一种加载数据以及发起请求的方式。
收藏 0 赞 0 分享
查看更多