客户端激活

本主题介绍一项传统技术,保留该技术是为了向后兼容现有的应用程序,不建议对新的开发使用该技术。现在应该使用  Windows Communication Foundation (WCF) 来开发分布式应用程序。

客户端激活的对象是由调用应用程序域控制其生存期的对象,正如对象对于客户端是本地对象时对象的生存期由调用应用程序域控制一样。在创建客户端激活的对象时,客户端将调用服务器。服务器实例化远程对象,并将对象引用 (ObjRef) 返回给客户端。客户端使用该 ObjRef 创建远程对象的代理。每当客户端创建客户端激活对象的实例时,都会收到与远程对象的特定服务器实例进行通信的代理,直至其租约过期,内存被回收为止。

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

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

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

有关如何使用配置文件来配置宿主应用程序以便创建客户端激活类型的信息,请参见<activated> 元素(服务实例)。有关如何使用配置文件来配置客户端以便使用客户端激活类型的信息,请参见<activated> 元素(客户端实例)

另请参见

任务

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

概念

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