电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

Microsoft.NetRemoting系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务VIP免费

Microsoft.NetRemoting系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务_第1页
1/10
Microsoft.NetRemoting系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务_第2页
2/10
Microsoft.NetRemoting系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务_第3页
3/10
Microsoft .Net Remoting 系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务 我写的.Net Remoting系列专题: Microsoft .Net Remoting系列专题之一:.Net Remoting基础篇 Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触 Microsoft .Net Remoting 系列专题之二 一、远程对象的激活 在 Remoting 中有三种激活方式,一般的实现是通过 RemotingServices 类的静态方法来完成。工作过程事实上是将该远程对象注册到通道中。由于 Remoting 没有提供与之对应的Unregister 方法来注销远程对象,所以如果需要注册/注销指定对象,微软推荐使用 Marshal(一般译为编组)和 Disconnect 配对使用。在《Net Remoting 基础篇》中我已经谈到:Marshal()方法是将 MarshalByRefObject 类对象转化为 ObjRef 类对象,这个对象是存储生成代理以与远程对象通讯所需的所有相关信息。这样就可以将该实例序列化以便在应用程序域之间以及通过网络进行传输,客户端就可以调用了。而 Disconnect()方法则将具体的实例对象从通道中断开。 根据上述说明,Marshal()方法对远程对象以引用方式进行编组(Marshal-by-Reference,MBR),并将对象的代理信息放到通道中。客户端可以通过 Activator.GetObject()来获取。如果用户要注销该对象,则通过调用 Disconnect()方法。那么这种方式对于编组的远程对象是否存在生命周期的管理呢?这就是本文所要描述的问题。 二、生命周期 在 CLR 中,框架提供了 GC(垃圾回收器)来管理内存中对象的生命周期。同样的,.Net Remoting使用了一种分布式垃圾回收,基于租用的形式来管理远程对象的生命周期。 早期的 DCOM 对于对象生命周期的管理是通过 ping 和引用计数来确定对象何时应当作为垃圾回收。然而 ping 引起的网络流量对分布式应用程序的性能是一种痛苦的负担,它大大地影响了分布式处理的整体性能。.Net Remoting 在每个应用程序域中都引入一个租用管理器,为每个服务器端的 SingleTon,或每个客户端激活的远程对象保存着对租用对象的引用。(说明:对于服务器端激活的 SingleCall 方式,由于它是无状态的,对于每个激活的远程对象,都由 CLR的 GC 来自动回收,因此对于 SingleCall 模式激活的远程对象,不存在生命周期的管理。) 1、租用 租用是个封装了 TimeSpan 值的对象,用以管理远程对象的生存期。在.Net Remoting 中提供了定义租用功能的 IL...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

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

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部