注:本文内容原本计划在上一篇《Flex与.NET互操作(六):Flex和.NET协同开发利器FluorineFx 》中写出,考虑到写在一起文章内容太长故分为两篇。

Flex中的远程对象访问,也就是服务端提供一个远程服务对象(RemotingService Object),在Flex客户端通过相应的访问技术去调用远程对象的过程。

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

1 [AttributeUsage(AttributeTargets.Class, AllowMultiple =false)]2 publicsealedclassRemotingServiceAttribute : Attribute3 {4 publicRemotingServiceAttribute();5 publicRemotingServiceAttribute(stringserviceName);6 }

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

1 [RemotingService("Fluorine sample service")]2 publicclassSample3 {4 publicSample()5 {6 }7 8 publicstringEcho(stringtext)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 internalfunction onClick():void5 {6 service.Echo(txtInput.text);7 }8 9 internalfunction onResult(evt:ResultEvent):void10 {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与.NET互操作(七):了解FluorineFx的环境配置(远程对象、网关、通道、目的地)...相关推荐

  1. Vue第七章:项目环境配置及单文件组件 vue脚手

    第七章:项目环境配置及单文件组件 vue脚手架 回顾: 组件之间的通信 父传子:正向传递 vue允许 自动触发 ​ props ​ 1.先在子组件中定义期待的属性名和类型 ​ 2.在父组件中调用子组件 ...

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

    FluorineFx.NET的认证(Authentication )与授权(Authorization)和ASP.NET中的大同小异,核实用户的身份既为认证,授权则是确定一个用户是否有某种执行权限,应 ...

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

    本文主要介绍使用FluorineFx.Net来实现视频录制与视频回放,FluorineFx如同FMS一样,除了有AMF通信,RTMP协议,RPC和远程共享对象外,它同样具备视频流服务的功能.通过它我们 ...

  4. 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(七)Ubuntu开发环境配置

    文章目录 1.配置Ubuntu初始开发环境 2.使用git工具下载源码 3.使用repo工具获取内核以及工具链 3.1 本地下载 3.2 配置repo 3.4 下载源码 3.5 同步最新代码 4.配置 ...

  5. Flex与.NET互操作系列文章

    本系列文章主要介绍了关于Flex与.NET结合开发中的一些互操作性,包括网络通信.数据加载.数据传输.文件传输.以及应用于Flex与.NET协作开发的通信网关开源项目FluorineFx的相关知识点. ...

  6. Flex与.NET互操作系列文章索引

    本系列文章主要介绍了关于Flex与.NET结合开发中的一些互操作性,包括网络通信.数据加载.数据传输.文件传输.以及应用于Flex与.NET协作开发的通信网关开源项目FluorineFx的相关知识点. ...

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

    远程共享对象(Remote Shared Objects) 可以用来跟踪.存储.共享以及做多客户端的数据同步操作.只要共享对象上的数据发生了改变,将会把最新数据同步到所有连接到该共享对象的应用程序客户 ...

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

    关于远程访问在本系列文章中陆续的写了不少示例了,本文没有准备深入的去探讨,为了巩固FluorineFx网关的学习和使用.于此,本文将使用FluorineFx网关来提供数据服务等多项功能来介绍通过Flu ...

  9. Flex与.NET互操作(十四):FluorineFx的AMF协议通信

    AMF(Action Message Format)在开发Flash/Flex应用中使用频率是非常高的,相对普通的HTTP.WebService的SOAP等多种数据通信方式的效率更高,有人曾经做过这方 ...

最新文章

  1. php动画,(轻松学PHP-JS篇)jQuery学习-动画
  2. 怎么查看linux是不是as7u4,Linux下搭建Android开发环境
  3. 前端三十一:标签的属性
  4. 负载测试与压力测试的区别
  5. 微信上线青少年模式,开启后这些功能无法使用
  6. python tus股票数据分析_python 股票量化分析(一)---基于Tushare平台的个股历史行情获取...
  7. Server Less 助力前端全栈
  8. python已知有列表_python 列表常用方法
  9. 否极泰来?中国恒大暴涨17% 恒大汽车涨超6%
  10. 带你学 Redis: 基本命令 String 操作(三)
  11. 垂直搜索引擎完整实现
  12. tensorflow神奇问题
  13. python写csv文件按升序排列_用python给csv里的数据排序的具体代码
  14. C语言——指针篇(四)多维数组和多维指针(内含数组指针和指针数组笔记)
  15. /etc/profile
  16. 内大考研计算机专业课,2019计算机考研专业课核心考点梳理
  17. c++——const关键字
  18. VC++使用dump定位release程序崩溃问题
  19. java弹出子窗口_java实现点击按钮事件弹出子窗口
  20. python 数组去重_python数组去重

热门文章

  1. C++ edmond karp和ford fulkerson求最大流算法(附完整源码)
  2. c++对象拷贝语意学
  3. QT的QStyle类的使用
  4. QT的QProxyStyle类的使用
  5. QT的QMainWindow类的使用
  6. 03_TF2 Guide、文档清单(数据输入、估计器、保存模型、加速器、性能调优等)、TF2库和扩展库(TensorBoard、数据集、TensorFlow Hub、概率和统计分析库、图像处理库)
  7. 1.VMwareTools的安装,vmware启动的时候,虚拟机黑屏,解决办法
  8. spring+cxf调用webservice接口
  9. 窗口分析函数_13_生成相邻上一个元素
  10. java invalidate_Java Component.invalidate方法代码示例