初始化租约

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

实例化 MarshalByRefObject 派生类时,.NET Remoting Framework 会调用该对象的 InitializeLifetimeService 方法。此方法将返回一个租约对象,其中包含远程对象的默认生存期值。通过在服务器应用程序配置文件中指定其他值(使用 <lifetime> 元素)或重写 InitializeLifetimeService,可以修改这些默认值。

请注意,当在配置文件中指定其他值时,将更改服务器应用程序承载的所有对象的默认生存期值。通过重写 InitializeLifetimeService,可以更改特定类的默认生存期值。

重写 InitializeLifetimeService

重写 InitializeLifetimeService 时,必须检查 CurrentState 的值。只有 CurrentState 等于 Initial 时,才能更改租约值。

影响生存期服务的唯一调用是从 .NET 远程处理基础结构中调用 InitializeLifetimeService,此调用会激活租约。其他代码也可以调用 InitializeLifetimeService 并创建租约,但该租约在返回到 .NET 远程处理基础结构之前将一直保持其初始状态。

如果 InitializeLifetimeService 返回了 null,对象的生存期将无限大,在卸载宿主应用程序域之前,不会对其进行垃圾回收。

通常,InitializeLifetimeService 的实现会调用该基类的相应方法,以检索远程对象的现有租约。如果该对象从未经过封送处理,返回的租约将处于其初始状态,您可以对租约属性进行设置。对该对象进行封送处理后,租约将由其初始状态变为活动状态,任何初始化租约属性的尝试都将被忽略并引发异常。激活远程对象时,将调用 InitializeLifetimeService。在激活调用中,可以为租约提供一个主办方列表;激活租约后,可以随时添加其他主办方。

有关如何重写 InitializeLifetimeService 方法的信息,请参见如何:重写 InitializeLifetimeService 接口

另请参见

任务

如何:重写 InitializeLifetimeService 接口

概念

续订租约
远程处理示例:生存期
生存期租约