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  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 >




本文转自 beniao 51CTO博客,原文链接:http://blog.51cto.com/beniao/137933,如需转载请自行联系原作者

目录
相关文章
|
8月前
|
机器学习/深度学习 存储 计算机视觉
【CVPR2020】ECA-Net:深度卷积神经网络的有效通道注意力
【CVPR2020】ECA-Net:深度卷积神经网络的有效通道注意力
1279 1
【CVPR2020】ECA-Net:深度卷积神经网络的有效通道注意力
|
容器
.NET Core-作用域与对象释放行为详解
.NET Core-作用域与对象释放行为详解
|
3月前
|
数据采集 传感器 监控
.NET 工控网关 轻量级组态软件
【10月更文挑战第10天】.NET 工控网关是一种基于 .NET 平台开发的设备,用于连接工业控制系统中的不同网络和设备,实现数据传输和协议转换。它能统一处理多种协议(如 Modbus、Profibus)的数据,便于后续系统处理。.NET 平台的优势包括开发效率高、跨平台能力强及安全性高,适用于工业物联网环境。此外,轻量级组态软件具备体积小、资源占用少的特点,可在资源受限的设备上运行,提供数据采集、监控、报警及数据分析等功能,简化工业自动化过程。
|
4月前
|
存储 安全 物联网
.NET 跨平台工业物联网网关解决方案
【9月更文挑战第28天】本文介绍了利用 .NET 构建跨平台工业物联网网关的解决方案。通过 .NET Core 和多种通信协议(如 MQTT 和 Modbus),实现工业设备的高效接入和数据采集。系统架构包括设备接入层、数据处理层、通信层、应用层和数据库层,确保数据的准确采集、实时处理和安全传输。此外,还详细阐述了设备身份认证、数据加密及安全审计等机制,确保系统的安全性。该方案适用于不同操作系统和工业环境,具备高度灵活性和扩展性。
117 1
|
4月前
|
前端开发 关系型数据库 MySQL
ThingsGateway:一款基于.NET8开源的跨平台高性能边缘采集网关
ThingsGateway:一款基于.NET8开源的跨平台高性能边缘采集网关
137 2
|
6月前
|
存储 关系型数据库 算法框架/工具
Ceph对象网关,多区域网关
Ceph对象网关,多区域网关
54 6
|
6月前
|
机器学习/深度学习 人工智能 计算机视觉
【YOLOv8改进 - 注意力机制】HCF-Net 之 MDCR:多稀释通道细化器模块 ,以不同的稀释率捕捉各种感受野大小的空间特征 | 小目标
HCF-Net是针对红外小目标检测的深度学习模型,采用U-Net改进架构,包含PPA、DASI和MDCR模块。PPA利用多分支特征提取增强小目标表示,DASI实现自适应通道融合,MDCR通过多扩张率深度可分离卷积细化空间特征。实验显示,HCF-Net在SIRST数据集上表现出色,超越其他方法。代码和论文可在给出的链接获取。
|
7月前
|
开发框架 .NET API
ASP.NET Core Web中使用AutoMapper进行对象映射
ASP.NET Core Web中使用AutoMapper进行对象映射
|
8月前
|
C#
.NET开发中合理使用对象映射库,简化和提高工作效率
.NET开发中合理使用对象映射库,简化和提高工作效率
200 0
|
JSON 数据格式
.NET Core - 配置绑定:使用强类型对象承载配置数据
.NET Core - 配置绑定:使用强类型对象承载配置数据