.Net Remoting教程二:如何使用Marshal、Disconnect、生命周期管理与跟踪服务?

更新于
2026-07-28 06:09:57
14阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2694个文字,预计阅读时间需要11分钟。

.Net Remoting教程二:如何使用Marshal、Disconnect、生命周期管理与跟踪服务?

一、远程对象的激活+在Remoting中存在三种激活方式,一般的实现是通过RemotingServices类的静态方法来完成。工作过程中,实际上是将该远程对象注册到通讯中。由于Remoting没有提供与对应的应用程序的绑定

一、远程对象的激活

  在Remoting中有三种激活方式,一般的实现是通过RemotingServices类的静态方法来完成。工作过程事实上是将该远程对象注册到通道中。由于Remoting没有提供与之对应的Unregister方法来注销远程对象,所以如果需要注册/注销指定对象,微软推荐使用Marshal(一般译为编组)和Disconnect配对使用。在《Net Remoting基础篇》中我已经谈到:Marshal()方法是将MarshalByRefObject类对象转化为ObjRef类对象,这个对象是存储生成代理以与远程对象通讯所需的所有相关信息。这样就可以将该实例序列化以便在应用程序域之间以及通过网络进行传输,客户端就可以调用了。而Disconnect()方法则将具体的实例对象从通道中断开。

  根据上述说明,Marshal()方法对远程对象以引用方式进行编组(Marshal-by-Reference,MBR),并将对象的代理信息放到通道中。客户端可以通过Activator.GetObject()来获取。如果用户要注销该对象,则通过调用Disconnect()方法。那么这种方式对于编组的远程对象是否存在生命周期的管理呢?这就是本文所要描述的问题。

二、生命周期

  在CLR中,框架提供了GC(垃圾回收器)来管理内存中对象的生命周期。

阅读全文

本文共计2694个文字,预计阅读时间需要11分钟。

.Net Remoting教程二:如何使用Marshal、Disconnect、生命周期管理与跟踪服务?

一、远程对象的激活+在Remoting中存在三种激活方式,一般的实现是通过RemotingServices类的静态方法来完成。工作过程中,实际上是将该远程对象注册到通讯中。由于Remoting没有提供与对应的应用程序的绑定

一、远程对象的激活

  在Remoting中有三种激活方式,一般的实现是通过RemotingServices类的静态方法来完成。工作过程事实上是将该远程对象注册到通道中。由于Remoting没有提供与之对应的Unregister方法来注销远程对象,所以如果需要注册/注销指定对象,微软推荐使用Marshal(一般译为编组)和Disconnect配对使用。在《Net Remoting基础篇》中我已经谈到:Marshal()方法是将MarshalByRefObject类对象转化为ObjRef类对象,这个对象是存储生成代理以与远程对象通讯所需的所有相关信息。这样就可以将该实例序列化以便在应用程序域之间以及通过网络进行传输,客户端就可以调用了。而Disconnect()方法则将具体的实例对象从通道中断开。

  根据上述说明,Marshal()方法对远程对象以引用方式进行编组(Marshal-by-Reference,MBR),并将对象的代理信息放到通道中。客户端可以通过Activator.GetObject()来获取。如果用户要注销该对象,则通过调用Disconnect()方法。那么这种方式对于编组的远程对象是否存在生命周期的管理呢?这就是本文所要描述的问题。

二、生命周期

  在CLR中,框架提供了GC(垃圾回收器)来管理内存中对象的生命周期。

阅读全文