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

简介:

注:本文内容原本计划在上一篇《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  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
本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2013/05/13/3076360.html ,如需转载请自行联系原作者
相关文章
|
2月前
|
机器学习/深度学习 存储 计算机视觉
【CVPR2020】ECA-Net:深度卷积神经网络的有效通道注意力
【CVPR2020】ECA-Net:深度卷积神经网络的有效通道注意力
651 1
【CVPR2020】ECA-Net:深度卷积神经网络的有效通道注意力
|
机器学习/深度学习 数据可视化 算法
ECA-Net:深度卷积神经网络的高效通道注意力
最近,**通道注意力机制**已被证明在提高深度卷积神经网络 (CNN) 的性能方面具有巨大潜力。然而,大多数现有方法致力于开发更复杂的注意力模块以获得更好的性能,这不可避免地增加了模型的复杂性。为了克服性能和复杂性权衡的悖论,**本文提出了一种高效通道注意 (ECA) 模块,该模块仅涉及少量参数,同时带来明显的性能增益**。通过剖析 SENet 中的通道注意模块,我们凭经验表明**避免降维对于学习通道注意很重要**,**适当的跨通道交互可以在显着降低模型复杂度的同时保持性能**。因此,**我们提出了一种无需降维的局部跨通道交互策略,可以通过一维卷积有效实现**。此外,**我们开发了一种自适应选
1894 0
ECA-Net:深度卷积神经网络的高效通道注意力
|
18天前
|
机器学习/深度学习 人工智能 计算机视觉
【YOLOv8改进 - 注意力机制】HCF-Net 之 MDCR:多稀释通道细化器模块 ,以不同的稀释率捕捉各种感受野大小的空间特征 | 小目标
HCF-Net是针对红外小目标检测的深度学习模型,采用U-Net改进架构,包含PPA、DASI和MDCR模块。PPA利用多分支特征提取增强小目标表示,DASI实现自适应通道融合,MDCR通过多扩张率深度可分离卷积细化空间特征。实验显示,HCF-Net在SIRST数据集上表现出色,超越其他方法。代码和论文可在给出的链接获取。
|
存储 关系型数据库 MySQL
【.NET Core项目实战-统一认证平台】第四章 网关篇-数据库存储配置(2)
原文:【.NET Core项目实战-统一认证平台】第四章 网关篇-数据库存储配置(2) 【.NET Core项目实战-统一认证平台】开篇及目录索引 上篇文章我们介绍了如何扩展Ocelot网关,并实现数据库存储,然后测试了网关的路由功能,一切都是那么顺利,但是有一个问题未解决,就是如果网关配置信息发生变更时如何生效?以及我使用其他数据库存储如何快速实现?本篇就这两个问题展开讲解,用到的文档及源码将会在GitHub上开源,每篇的源代码我将用分支的方式管理,本篇使用的分支为course2。
1285 0
|
运维 安全 网络安全
.NET HttpWebRequest(请求被中止: 未能创建 SSL/TLS 安全通道)和(基础连接已经关闭: 发送时发生错误)问题查找解决
.NET HttpWebRequest(请求被中止: 未能创建 SSL/TLS 安全通道)和(基础连接已经关闭: 发送时发生错误)问题查找解决
791 0
.NET HttpWebRequest(请求被中止: 未能创建 SSL/TLS 安全通道)和(基础连接已经关闭: 发送时发生错误)问题查找解决
|
数据库
理解 .NET Core中的Channel篇之二——高级通道
  1、复习   在我们以前的文章中,我们看了一些关于Channels如何工作的简单示例,并且看到了一些漂亮的功能,但是在大多数情况下,它与任何其他Queue实现都非常相似。   因此,让我们深入探讨一些更高级的主题。   好吧,虽然说得高级,但是很多事情还是很简单。不过,为了获取更多有价值的信息,还是值得我们去探索的!   2、读写分离
224 0
|
Ubuntu 前端开发 关系型数据库
.NET Core开发的iNeuOS物联网平台部署树霉派(raspbian),从网关到云端整体解决方案。
iNeuOS成功部署在树莓派上,意味着iNeuOS打通了从嵌入式到云端整体链路,为中小企业在物联网建设方面提供了整体解决方案,降低产品研发、项目执行方面的成本。iNeuOS部署在树莓派主要意义在于: (1) 可以形成企业网关产品,应用到系统建设中。 (2) 设备容器可以远程设备数据采集进行远程运维,并且支持设备驱动在线更新。 (3) Web组态建模可以远程配置和开发监测页面,现场屏幕就地显示。 (4) 与云端系统无缝对接,快速进行私有云部署。 (5) 支持接口形式的二次开发,降低人员开发周期和成本。
1236 0
.NET Core开发的iNeuOS物联网平台部署树霉派(raspbian),从网关到云端整体解决方案。
|
存储 中间件 测试技术
【.NET Core项目实战-统一认证平台】第三章 网关篇-数据库存储配置(1)
原文:【.NET Core项目实战-统一认证平台】第三章 网关篇-数据库存储配置(1) 【.NET Core项目实战-统一认证平台】开篇及目录索引 本篇将介绍如何扩展Ocelot中间件实现自定义网关,并使用2种不同数据库来演示Ocelot配置信息存储和动态更新功能,内容也是从实际设计出发来编写我们自己的中间件,本文内容涵盖设计思想内容和代码内容,我希望园友们最好跟着我这个文章的思路先理解好后再看源代码,这样有利于融会贯通,本篇的文档及源码将会在GitHub上开源,每篇的源代码我将用分支的方式管理,本篇使用的分支为course1。
1425 0
|
缓存 安全 中间件
【.NET Core项目实战-统一认证平台】第二章网关篇-定制Ocelot来满足需求
原文:【.NET Core项目实战-统一认证平台】第二章网关篇-定制Ocelot来满足需求 【.NET Core项目实战-统一认证平台】开篇及目录索引 这篇文章,我们将从Ocelot的中间件源码分析,目前Ocelot已经实现那些功能,还有那些功能在我们实际项目中暂时还未实现,如果我们要使用这些功能,应该如何改造等方面来说明。
1303 0
|
SQL 缓存 中间件
【.NET Core项目实战-统一认证平台】第七章 网关篇-自定义客户端限流
原文:【.NET Core项目实战-统一认证平台】第七章 网关篇-自定义客户端限流 【.NET Core项目实战-统一认证平台】开篇及目录索引 上篇文章我介绍了如何在网关上增加自定义客户端授权功能,从设计到编码实现,一步一步详细讲解,相信大家也掌握了自定义中间件的开发技巧了,本篇我们将介绍如何实现自定义客户端的限流功能,来进一步完善网关的基础功能。
1171 0