客户端激活

客户端激活的对象是其生存期由调用应用程序域控制的对象,正如对象对于客户端是本地对象时对象的生存期由调用应用程序域控制一样。对于客户端激活,当客户端试图创建服务器对象的实例时发生一个到服务器的往返过程,而客户端代理是使用对象引用 (ObjRef) 创建的,该对象引用是从在服务器上创建远程对象返回时获取的。每当客户端创建客户端激活的类型的实例时,该实例都将只服务于该特定客户端中的特定引用,直到其租约到期并回收其内存为止。如果调用应用程序域创建两个远程类型的新实例,每个客户端引用都将只调用从其中返回引用的服务器应用程序域中的特定实例。

在 COM 中,客户端通过保留对对象的引用在内存中保留对象。当最后一个客户端释放其最后一个引用时,对象可以将自身删除。客户端激活在服务器对象的生存期内提供同样的客户端控制,但是却避免了复杂的维护引用操作或为了确认服务器或客户端是否继续存在而进行的频繁 ping 操作。相反,客户端激活的对象使用生存期租约确定它们应继续存在多久。当客户端创建远程对象时,它可以指定该对象应该存在的默认时间长度。如果远程对象到达其默认生存期限制,它将联系客户端以询问自己是否应继续存在以及应继续存在多久(如果应继续存在的话)。如果客户端当前不可用,则还会指定一个默认时间,它是服务器对象在标记自身以供垃圾回收之前尝试联系客户端时应该等待的时间。客户端甚至可能请求不确定的默认生存期,从而有效防止在服务器应用程序域破坏之前回收远程对象。这与服务器激活的不确定生存期之间的区别在于,服务器激活的生存期不确定的对象服务于该类型的所有客户端请求,而客户端激活的实例只服务于负责创建它们的客户端和引用。有关更多信息,请参见生存期租约

为了创建客户端激活的类型的实例,客户端要么以编程方式(或使用配置文件)配置它们的应用程序并调用 new(在 Visual Basic 中为 New),要么在对 Activator.CreateInstance 的调用中传递远程对象的配置。

有关如何创建客户端激活类型的实例的信息,请参见如何:创建客户端激活的类型的实例

请参见

任务

如何:创建客户端激活的类型的实例

概念

远程对象的激活
远程应用程序的配置
服务器激活
生存期租约