.net Remoting(2)——信道,MarshalByRefObject类
remoting提供一种允许对象通过应用程序域去与另一对象进行交互的框架。如果要通过应用程序域进行通信,在remoting中要通过信道(channel)来实现。
信道
信道是跨越远程处理边界(应用程序域,进程,计算间之间)在应用程序之间传递消息的对象。信道可以在终结点监听入站消息,向基他终结点发送出站消息,或进行这两种操作。
信道须实现IChannel接口,这个接口提供了信息性属性,如:ChannelName,ChannelPriority。IChannelReceiver接口,用于监听特定端口上的特定协议的信道实现。IChannelSender接口用于发送消息的信道实现。TcpChannel和HttpChannel对象都实现了这两种接口,可以发送或接收消息。
.net 提供了几种信道实现:
(1)IpcChannel
通过使用命名管道为同一台计算机上的多进程应用程序提供高速进程间通信。它执行的功能:
·使用命名管道进行发送方和接收方的通信
·支持以二进制格式和行业标准soap序列化格式编码
·生成并使用对象引用的ChannelDataStore
·支持模拟和委托
·支持在命名管道上利用访问控制列表(ACL)来提供高级访问控制
在应用程序与本机其它进程中的另一应用程序进行通信时,优先使用IpcChannel。
(2)TcpChannel
二进制格式化程序装所有消息序列化为二进制流,并使用Tcp协议将流传输至URI,它执行以下功能:
·使用tcp socket进行发送方与接收方的通信
·支持以二进制格式和行业标准soap序列化格式编码负载
·生成并使用对象引用的ChannelDataStore
·支持模拟和委托
·支持SSPI加密
当HttpChannel连接到用TcpChannel进行监听的服务器应用程序域时,客户端将收到:基础连接已经关闭:接收时发生错误,这样的异常。存在信道不匹配的问题。
(3)HttpChannel
使用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是通过使用代理交换消息来跨应用程序域边界进行通信的对象的基类。
.net Remoting(2)——信道,MarshalByRefObject类相关推荐
- Remoting压缩信道的编程配置方式
在网上看到(包括MSDN中)关于自定义压缩信道的配置方式都是使用*.config配置文件的方式,可以是我的框架中是自定义的配置文件,编程实现Remoting的配置,要编程配置自定义信道方法如下: 服务 ...
- 【转】浅谈.net remoting 与webservice
1. .NET Remoting .NET Remoting是微软随.NET推出的一种分布式应用解决方案,被誉为管理应用程序域之间的 RPC 的首选技,它允许不同应用程序域之间进行通信(这里的通信可以 ...
- WCF分布式开发必备知识(2):.Net Remoting
上一节我们学习了网络分布式编程中的MSMQ消息队列技术.本节我们将学习分布式编程的另外一个重要的技术.Net Remoting,文章的结构还是先讨论基本概念,再来探讨具体的技术实现,希望能和大家一起交 ...
- Remoting系列(二)----建立第一个入门程序
http://www.cnblogs.com/Ring1981/archive/2006/07/23/455043.aspx Remoting系列(二)----建立第一个入门程序 下面的Remotin ...
- .net remoting 与webservice
目录(?)[+] 浅谈net remoting 与webservice NET Remoting 2Web Service 3NET Remoting与Web Service比较 浅谈.net rem ...
- .net remoting 技术
Remoting 编辑 目 录 1简介 2主要元素 3两种通道 4激活方式 5对象定义 6服务器 7客户 8基础补充 9小结 1简介 什么是Remoting,简而言之,我们可以将其看作是一种分布式处理 ...
- 在使用 .NET Remoting 技术开发跨进程通信时可能遇到的各种异常
在使用 .NET Remoting 开发跨进程应用的时候,你可能会遇到一些异常.因为这些异常在后验的时候非常简单但在一开始有各种异常烦扰的时候却并不清晰,所以我将这些异常整理到此文中,方便小伙伴们通过 ...
- Microsoft .Net Remoting系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务
Microsoft .Net Remoting系列专题之二 一.远程对象的激活 在Remoting中有三种激活方式,一般的实现是通过RemotingServices类的静态方法来完成.工作过程事实上是 ...
- 初识用.NET Remoting来开发分布式应用 (转载)
初识用.NET Remoting来开发分布式应用 一..NET Remoting简介: .NET Remoting从某种意义上讲是DCOM的替代品.ASP.NET Web服务十分有用,但是这项技术在企 ...
最新文章
- vim java 注释_centOS7 下的vim java补全
- IDEA创建多个模块MavenSpringBoot项目
- MYSQL的索引类型:PRIMARY, INDEX,UNIQUE,FULLTEXT,SPAIAL 有什么区别?各适用于什么场合?...
- iOS内存泄漏的常见情况
- 课后作业-阅读任务3
- 计算机对医学影像学的作用,医学影像技术中数字图像处理的重要性
- shell if判断语句
- 别乎略安身立命的基础本领
- [2019.2.28]BZOJ4033 [HAOI2015]树上染色
- Linux下部署PHP_YAF框架
- 计算机组成原理自考pdf,全国高等教育自学考试计算机组成原理.pdf
- cs6导入库闪退 flash_flash导入文件闪退 如何定位已关机的手机
- CSS基础--属性设置
- python词频统计_用Python实现一个词频统计(词云+图)
- python做var模型_在Python中使用pandas statsmodels的VAR模型
- java 匿名函数_Java8学习系列之匿名函数Lambda
- 阿里云 语音通知 语音验证码 收不到 白名单
- 10G整数文件中寻找中位数
- 基于android的学单词app
- 肇庆学院计算机科学与技术学院,信息科学技术学院:赴肇庆学院交流学习