.Net Remoting提供了一种允许一个应用域中的对象与另一个应用域中的对象进行交互的框架。是.NET框架中的一个重要技术改进,它用于减轻运行应用程序的系统开销.

中文名

.Net Remoting

作    用

减轻运行应用程序的系统开销

目录

  1. 1 介绍
  2. 2 .NET Remoting的原理
  1. ▪ 1.NET Remoting的体系结构
  2. ▪ 2..NET Remoting的扩展
  1. 3 .NET Remoting的分布式应用

介绍

编辑

从结构上看,.NETRemoting对象非常适合通过网络访问资源,而又无需处理由基于SOAP的Web Service所带来的难题。对于内部网应用程序而言,Web服务器和SOAP协议的使用并不是总有效的。当传输的数据的量很大时, DCOM协议系统开销就太大了。在过去开发人员通常使用DCOM编写程序。有了DCOM,我们习惯于调用均等在服务器上的对象的方法,.Net Remoting就是DCOM的替代者。与DCOM相比,.Net Remo-ting也可以在Internet解决方案中。在Internet解决方案中,DCOM显得不太灵活和效率不高。.Net Remoting.不需要创建存根程序和骨架文件,使用起来比Java的RMI简单而且为处理局域网甚至互联网范围内的资源提供了一个绝佳的方法,使用范围比JAVA的RMI更广泛。使用.Net Remoting框架技术可以匹配和扩展体系结构的每一个部分,不仅增加了它的灵活性,也大大扩展了它的应用范围。.NET Remoting几乎适合于所有涉及远程的工作 [1]  。

.NET Remoting的原理

编辑

1.NET Remoting的体系结构

NETRemoting的体系结构如图1所示。

图1

在图1的客户端应用程序域和服务端应用程序域的分界线构成了 .NET Remoting 的边界。在服务端即服务端应用程序域由传输通道,序列化格式程序和Server Object组成(运行在服务器上的对象称为远程对象)。在客户端即客户应用程序域如图1所示由Client Object、代理、传输通道、序列化格式程序组成。下面分述几个重要的概念。

(1)应用程序域 可以将应用程序域看作是一个逻辑进程。在传统意义上,进程通常被用作隔离的分界线,也就是说,在一进程中运行的应用程序不能访问和破坏另一个进程,应用域就成为进程中新的安全分界线。

(2)客户代理 客户代理分为透明代理和真实代理。其中,透明代理是远程对象的精确副本,它具有远程对象所具有的可用的方法调用,它截取了所有对远程对象的直接方法调用,并将它们传递给真实代理。真实代理是具体的处理,它接受透明代理创建的消息并将其发送到.NET Remoting基础设施用于最终传递给远程对象。

图2

(3)传输通道 .NET Remoting通过通道穿越.NET Remoting边界传输序列化的消息对象,它由格式化接收器、通道接收器、传输接收器组成。其内部结构如图2所示。

常用的是TCP通道和HTTP通道。TCP通道主要用Internet,HTTP通道主要可以和SOAP协议结合用于Internet,可以穿越防火墙。并且还可以根据需要定制通道,如安全加密通道。

(4)对象激活 对象激活分为服务器端激活和客户端激活。服务器端激活分为Singleton和SingleCall模式。 .NET Remoting将服务器端激活类型称为众所周知的对象类型,服务器在应用程序激活对象实例之前会在一个众所周知的统一资源标识符(URI)上发布这个类型。在处理客户端激活时,与处理服务器端激活类型相比,.NET Remoting基础设施激活每个对象实例的时候会给每个客户端激活的类型指派一个URI。

2..NET Remoting的扩展

.NET Remoting具有良好的扩展性,可以根据需要替代真实代理对象、添加接收器对象、替代格式标识符和通道等。介绍通道的定制,具体如下:

(1)创建客户端通道类 客户端通道由三个分别继承IchannelSender,IclientChannelSinkPvovider,IchannelSink的类构成。Public class SDC ClientChannel:IchannelSender{...},…

(2)创建服务器端通道类 服务器端包含两个类,它们分别继承IchannelReceiver和IserverChannelSink Public class SDC ServerChannel:IchannelReceive{...},…

(3)创建名为SDC的类 此类存放服务器和客户端通道所共享的功能。

(4)创建结合了服务器端和客户端类 两者功能的主通道类:Public class SDC Channel: Ichannel, IchannelReceiver{...}, …

.NET Remoting的分布式应用

编辑

在众多的分布式体系应用中,Peer-to-Peer(简称P2P)是近来研究的热点。在这种模型下,每个客户端同时也是一个服务器。此模型与C/S模型主要区别是:应用程序配置Remoting以侦听客户端请求,并通过Remoting来调用类。在大多数P2P应用程序中,给定的对等端同时连接到多个其他的对等端。这就意味着不能使用Remoting静态配置。为此,我们将不在Remoting中注册远程类,而是使用.NETFramework中的一种特殊方法来创建远程对象即Activator. GetObject,它接受两个参数:第一个是要创建的对象类型;第二个是要在其上创建对象的Remoting主机的URL。编码如下:

1

2

3

4

5

6

7

8

9

10

RemotingConfiguration.ApplicationName=″Peer APP″

 ∥设置应用程序名称

 mChannel= NewTcpChannel(CInt(Port.Text))∥创建通道

 ChannelServices.RegisterChannel(mChannel)

 RemotingConfiguration. RegisterWellKnownServiceType(GetType(Listener),″Listener″, WellKnownObjectMode.SingleCall)∥注册远程对象

 这样其他的对等端就可以通过Remoting来使用Listener类,当对等端在侦听时,其他对等端就可以连接到它并与Listener对象进行交互:

 Dim listener As Listener

 … …

 listener= Activator.GetObject(GetType(Listener),url.ToString)

 … …

参考资料

【转】.NET Remoting相关推荐

  1. Microsoft .Net Remoting系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务

    Microsoft .Net Remoting系列专题之二 一.远程对象的激活 在Remoting中有三种激活方式,一般的实现是通过RemotingServices类的静态方法来完成.工作过程事实上是 ...

  2. web service 和 remoting 有什么区别

    其实现的原理并没有本质的区别,在应用开发层面上有以下区别: 1.Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Service就没有什么区别了,一般都喜欢定义为TCP,这 ...

  3. 远程处理Remoting

    日程 ?应用程序域 ?Remoting和原理 ?编程式和管理式配置实例 用应用程序域 操作系统和运行库环境通常会在应用程序间提供某种形式的隔离.例如,Microsoft Windows 使用进程来隔离 ...

  4. .NET Remoting中的通道注册

    今天我的同事使用Remoting注册一个新通道.奇怪的是,通道始终无法注册,总是报告异常"该通道已被占用".我明白这个异常出现的原因,但不明白的是此时系统并未使用任何一个通道,为何 ...

  5. 用Remoting 实现一个文件传输组件

    为了传送文件,用remoting 实现很简单容易,有工程源码和演示程序下载,是从我写的一个网络库的一个子模块:有注解,不加以文字说明了. /**//* 作者:S.F. blog:www.cnblogs ...

  6. Flex与ASP.NET通过Remoting方式进行通讯

    前两天研究了一下Flex与.NET如何进行数据交互,并写了一个文档,后面叙述得还不是很详细,还可以再研究深一点.本文是关于Flex与ASP.NET通过Remoting方式进行通讯的内容,过段时间有空还 ...

  7. .net Remoting(2)——信道,MarshalByRefObject类

    remoting提供一种允许对象通过应用程序域去与另一对象进行交互的框架.如果要通过应用程序域进行通信,在remoting中要通过信道(channel)来实现. 信道 信道是跨越远程处理边界(应用程序 ...

  8. 使用remoting远程控制编译机

    远程对象服务器 using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using S ...

  9. 据lovecherry的一步一步学Remoting序列文章学习.net Remoting日记(2)

    今天学习了服务器端激活和客户端激活的区别!可还是出现了一点点的差错,经过对比得到正确的调用方法,整理如下: 1.服务器端激活,分为两种方式Singleton和SingleCall方式 Server端A ...

  10. Remoting Practice Sample

    Remoting Practice Sample 这两天研究了一下Remoting, 改了MSDN 的例子. 那个例子不是很方便. 我做了如下改进: 整个sample做成一个solution 用了wi ...

最新文章

  1. html5 图形化操作,HTML5的图像及动画图形操作-20210525222751.ppt-原创力文档
  2. Android App解决卡顿慢之内存抖动及内存泄漏(发现和定位)
  3. 7个相同小球4个不同盒子_【计算启蒙】4个游戏陪娃玩懂“数拆分”,加减法都不用愁!...
  4. 解决关于M1芯片版Mac外接U盘、移动固态硬盘发热问题
  5. 10万美元奖金!CVPR 2021 重磅赛事,安全AI挑战者计划
  6. Matplotlib安装感想
  7. mysql表连接_SELECT中的多表连接
  8. socket编程(四)
  9. 2020.06.25 端午节快乐
  10. java poi导出excel模板_Java poi实现导出excel,添加数据有效性,生成模板
  11. Atitit react 详细使用总结 绑定列表显示 attilax总结 1. 前言 1 1.1. 资料数量在百度内的数量对比 1 1.2. 版本16 v15.6.1 1 1.3. 引入js 2
  12. 【月径流预测】基于matlab未来搜索算法算法优化BP神经网络月径流预测【含Matlab源码 2001期】
  13. OpenUDID 和 IDFA 比较
  14. 更改RStudio快捷键
  15. 关键点检测评价指标OKS
  16. 用excel对2000年-2015年游戏行业分析
  17. #174-D: expression has no effect报错解决方法
  18. c#对话框,文件打开对话框,
  19. 使用make latexpdf, 报错The font “SourceHanMonoSC-Regular“ cannot be found.但是这个字体实际上已经安装了。
  20. 三相四线插座,三相四线制,三相五线制

热门文章

  1. 【剑指offer - C++/Java】14、链表中倒数第k的节点
  2. [kafka]kafka集群实践
  3. python学习笔记(五)缩进
  4. CCTF部分赛题分析
  5. 修改spfile位置
  6. 2008秋季-计算机软件基础-未交实验报告名单
  7. 公司间交易学习笔记---概述
  8. [小错误][JAVA][数组初始化]数组静态初始化和动态初始化不能混用
  9. [计算机网络][HTTP]
  10. [Leedcode][JAVA][第445题][链表][栈]