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

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

信道

信道是跨越远程处理边界(应用程序域,进程,计算间之间)在应用程序之间传递消息的对象。信道可以在终结点监听入站消息,向基他终结点发送出站消息,或进行这两种操作。

信道须实现IChannel接口,这个接口提供了信息性属性,如:ChannelName,ChannelPriority。IChannelReceiver接口,用于监听特定端口上的特定协议的信道实现。IChannelSender接口用于发送消息的信道实现。TcpChannel和HttpChannel对象都实现了这两种接口,可以发送或接收消息。

.net 提供了几种信道实现:

1IpcChannel

通过使用命名管道为同一台计算机上的多进程应用程序提供高速进程间通信。它执行的功能:

·使用命名管道进行发送方和接收方的通信

·支持以二进制格式和行业标准soap序列化格式编码

·生成并使用对象引用的ChannelDataStore

·支持模拟和委托

·支持在命名管道上利用访问控制列表(ACL)来提供高级访问控制

在应用程序与本机其它进程中的另一应用程序进行通信时,优先使用IpcChannel。

2TcpChannel

二进制格式化程序装所有消息序列化为二进制流,并使用Tcp协议将流传输至URI,它执行以下功能:

·使用tcp socket进行发送方与接收方的通信

·支持以二进制格式和行业标准soap序列化格式编码负载

·生成并使用对象引用的ChannelDataStore

·支持模拟和委托

·支持SSPI加密

当HttpChannel连接到用TcpChannel进行监听的服务器应用程序域时,客户端将收到:基础连接已经关闭:接收时发生错误,这样的异常。存在信道不匹配的问题。

3HttpChannel

使用Soap协议在远程对象之间传输消息。所有的消息都通过SoapFormatter传递,这个格式化器会将消息转换为xml,然后进行序列化,同时向数据流中添加soap头。如果指定二进制格式化器,则会创建二进制数据流。最后通过http协议将数据流传输到URI。HttpChannel符合soap1.1标准,它执行以下功能:

·通过http协议在发送方和接收方之间的通信

·支持以soap和二进制格式编码负载

·将接收方设置为通过.net和tcp套接字接收http请求并发送http响应

·支持模拟和委托

·支持SSPI加密

HttpChannel一次只向给定服务器打开指定数目的连接。默认为2,可通过clientConnectionLimit属性进行设置。

使用.net remoting处理的应用程序来跨应用程序域边界进行通信,需要一个可远程处理的类的实现,一个监听或宿主应用程序域,一个客户端或调用应用程序域,同时段将每个应用程序域中的远程处理系统都配置为对可远程处理的类型使用远程激活

远程对象

为了让其它应用程序域中的对象能访问类的实例,那么这个类要从MarshalByRefObject派生。

public class RemotableType : MarshalByRefObject

{}

这个类支持远程处理的应用程序中跨应用程序域边界访问对象。

同一应用程序域中的对象直接通信。不同应用程序域中的对象的通信方式有两种:

·跨应用程序域边界传输对象副本

·通过代理交换消息

MarshalByRefObject是通过使用代理交换消息来跨应用程序域边界进行通信的对象的基类。

博客园大道至简

http://www.cnblogs.com/jams742003/

时间: 2024-10-21 09:12:22

.net Remoting(2)——信道,MarshalByRefObject类的相关文章

.Net中Remoting通信机制

Remoting通信机制 Remoting介绍 主要元素 通道类型 激活方式 对象定义 Remoting介绍 什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式. 从微软的产品角度来看,可以说Remoting就是DCOM(分布式组件对象模型,分布式组件对象模式)的一种升级,它改善了很多功能,并极好的融合到.Net平台下.Microsoft .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架.这也正是我们使用Remoting的原因.为什么呢?在

浅谈.net remoting 与 webservice

1. .NET Remoting .NET Remoting是微软随.NET推出的一种分布式应用解决方案,被誉为管理应用程序域之间的 RPC 的首选技,它允许不同应用程序域之间进行通信(这里的通信可以是在同一个进程中进行.一个系统的不同进程间进行.不同系统的进程间进行). 更具体的说,Microsoft .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架.也就是说,使用.NET Remoting,一个程序域可以访问另外一个程序域中的对象,就好像这个对象位于自身内

深入理解.net remoting 与webservice

1. .NET Remoting .NET Remoting是微软随.NET推出的一种分布式应用解决方案,被誉为管理应用程序域之间的 RPC 的首选技,它允许不同应用程序域之间进行通信(这里的通信可以是在同一个进程中进行.一个系统的不同进程间进行.不同系统的进程间进行). 更具体的说,Microsoft .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架.也就是说,使用.NET Remoting,一个程序域可以访问另外一个程序域中的对象,就好像这个对象位于自身内

.Net Remoting 调用远程对象

根据需求,我们的系统必须以C/S方式构建,而且是三层架构,这样一来,就出现了服务器端和客户端通信的问题. 为了解决双方的通信问题,还要考虑效率.性能等方面,经过分析.试验,我们根据效率.移植.开发难易等几个因素,舍弃了一开始提出的WebService.消息队列机制,以及有人建议的基于流I/O自己解析数据的通信方式,在分析了目前主流的RPC方式(DCOM.CORBA..NET Remoting)及我们的开发平台后,最终选择了微软新推出的.NET Remoting机制.我们的原因如下: 1..NET

.NET Remoting原理及应用实例:

Remoting:(本文摘自百度百科) 简介: 什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方 式.从微软的产品角度来看,可以说Remoting就是DCOM的一种升级,它改善了很多功能,并极好的融合到.Net平台下.Microsoft .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架.这也正是我们使用Remoting的原因.为什么呢?在Windows操作系统中,是将应用 程序分离为单独的进程.这个进程形成了应用程序代码和数据周围的一道边界

WCF分布式开发必备知识(2):.Net Remoting

.Net Remoting技术,我们可以将其看作是一种分布式处理方式.作为应用程序之间通信的一种机制,.Net Remoting与MSMQ消息队列不同,它不支持离线脱机消息,另外只适合.Net平台间程序的通信.从微软的产品角度来看,可以说Remoting就是分布式组件DCOM的一种升级,它改善了很多功能,并极好的融合到.Net平台下..NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架.这也正是我们使用Remoting的原因.为什么呢?在Windows操作系统中,

跟我一起学WCF(2)——利用.NET Remoting技术开发分布式应用

一.引言 上一篇博文分享了消息队列(MSMQ)技术来实现分布式应用,在这篇博文继续分享下.NET平台下另一种分布式技术——.NET Remoting. 二..NET Remoting 介绍 2.1 .NET Remoting简介 .NET REmoting与MSMQ不同,它不支持离线可得,另外只适合.NET平台的程序进行通信.它提供了一种允许对象通过应用程序域与另一个对象进行交互的框架..NET 应用程序都在一个主应用程序域中执行的,在一个应用程序域中的代码不能访问另一个应用程序域的数据,然而在

第5章分布式系统模式 使用客户端激活对象通过 .NET Remoting 实现 Broker

正在 .NET 中构建一个需要使用分布式对象的应用程序,并且分布式对象的生存期由客户端控制.您的要求包括能够按值或按引用来传递对象,无论这些对象驻留在同一台计算 机上,还是驻留在同一个局域网 (LAN) 中的不同计算机上,或者是驻留在广域网 (WAN) 中的不同计算机上. 实现策略 这 种模式为在 .NET Remoting 中实现客户端激活对象提供了两种实现方式.客户端激活对象 (CAO) 和服务器激活对象 (SAO) 之间的主要区别在于,是什么控制着远程对象的生存期.在使用 CAO 的情况下

初识用.NET Remoting来开发分布式应用

一..NET Remoting简介: .NET Remoting从某种意义上讲是DCOM的替代品.ASP.NET Web服务十分有用,但是这项技术在企业内联网的解决方案中,对于某些业务请求来说并不快,也没有足够的灵活性,而且,ASP.NET Web服务需要有运行时的支持.使用.NET Remoting技术后,可以将Web服务提供给世界上的任何地方.而且可以在所有的应用程序类型中运行Web服务. 二..NET Remoting 的基本原理: 体系结构图如下: 三.几个重要的概念: 1.远程对象: