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

简介: remoting提供一种允许对象通过应用程序域去与另一对象进行交互的框架。如果要通过应用程序域进行通信,在remoting中要通过信道(channel)来实现。   信道 信道是跨越远程处理边界(应用程序域,进程,计算间之间)在应用程序之间传递消息的对象。

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

 

信道

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

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

 

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

1IpcChannel

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

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

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

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

·支持模拟和委托

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

 

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

2TcpChannel

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

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

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

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

·支持模拟和委托

·支持SSPI加密

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

3HttpChannel

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

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

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

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

·支持模拟和委托

·支持SSPI加密

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

 

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

 

远程对象

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

public class RemotableType : MarshalByRefObject

{}

 

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

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

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

·通过代理交换消息

 

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

 

博客园大道至简

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

转载请注明:博客园

目录
相关文章
|
7月前
|
IDE API 开发工具
拦截|篡改|伪造.NET类库中不限于public的类和方法
本文除了回顾拦截.NET类库中的方法,实现方法参数的篡改、方法返回结果的伪造,再着重介绍.NET类库中非public类及方法如何拦截。
拦截|篡改|伪造.NET类库中不限于public的类和方法
|
10月前
|
C#
.NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法
.NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法
122 0
|
开发框架 JSON 前端开发
【C#】.net core2.1,自定义全局类对API接口和视图页面产生的异常统一处理
在开发一个网站项目时,异常处理和过滤功能是最基础的模块 本篇文章就来讲讲,如何自定义全局异常类来统一处理
204 0
|
JSON 数据格式
【.NET开发福音】使用Visual Studio将JSON格式数据自动转化为对应的类
【.NET开发福音】使用Visual Studio将JSON格式数据自动转化为对应的类
533 0
【.NET开发福音】使用Visual Studio将JSON格式数据自动转化为对应的类
|
缓存 移动开发 C#
【.Net实用方法总结】 整理并总结System.IO中TextWriter类及其方法介绍
本文主要介绍System.IO命名空间的TextWriter类,介绍其常用的方法和示例说明。
|
C# 开发者 索引
【.Net实用方法总结】 整理并总结System.IO中TextReader类及其方法介绍
本文主要介绍System.IO命名空间的TextReader类,介绍其常用的方法和示例说明。
|
存储 缓存 C#
【.Net实用方法总结】 整理并总结System.IO中StringWriter类及其方法介绍
本文主要介绍System.IO命名空间的StringWriter类,介绍其常用的方法和示例说明。
|
C# 开发者 索引
【.Net实用方法总结】 整理并总结System.IO中StringReader类及其方法介绍
本文主要介绍System.IO命名空间的StringReader类,介绍其常用的方法和示例说明。
|
存储 网络协议 程序员
【.Net实用方法总结】 整理并总结System.IO中Stream类及其方法介绍
本文主要介绍System.IO命名空间的Stream类,介绍其常用的方法和示例说明。
|
缓存 C# 开发者
【.Net实用方法总结】 整理并总结System.IO中StreamWriter类及其方法介绍
本文主要介绍System.IO命名空间的StreamWriter类,介绍其常用的方法和示例说明。