Remoting整理


一 服务端激活方法整理

服务端有两种激活服务的方式,

1,通过RemotingConfiguration.RegisterServiceType方法,传入Type和URL。

       方法优点:可以选择模式(Singleton,SingleCall),如果选择SingleCall则支持并发,不受生命周期管理。

       方法缺点:激活之后则不能够注销。

2,通过RemotingServices.Marshal方法,传入一个实例化之后的MarshalByRefObject类和url。

      方法优点:可以进行注销,通过RemotingServices.Disconn方法就可以实现,也就是说可以实现动态加载。

      方法缺点:只能是Singleton模式,如果需要考虑并发性能,则不能考虑这种。

另外,通过2方法注册的服务器对象受生命周期管理,如果不进行设置,则默认生命周期为300秒。

参考文献:http://www.cnblogs.com/wayfarer/archive/2004/07/30/28723.html


二,服务端模式Singleton,SingleCall的区别

http://www.cnblogs.com/larryyangming/archive/2010/02/26/1674402.html


三,Remoting生命周期管理

参考:http://www.cnblogs.com/wayfarer/archive/2004/08/05/30437.html

.Net Remoting在每个应用程序域中都引入一个租用管理器,为每个服务器端的SingleTon,或每个客户端激活的远程对象保存着对租用对象的引用

但是对于服务器端激活的SingleCall方式,由于它是无状态的,对于每个激活的远程对象,都由CLR的GC来自动回收,因此对于SingleCall模式激活的远程对象,不存在生命周期的管理。

ILease接口定义了有关生命周期的属性,均为TimeSpan值。如下:
InitialLeaseTime:初始化有效时间,默认值为300秒,如果为0,表示永不过期;
RenewOnCallTime:调用远程对象一个方法时的租用更新时间,默认值为120秒;
SponsorshipTimeout:超时值,通知Sponsor(发起人)租用过期后,Remoting会等待的时间,默认值为120秒;
CurrentLeaseTime:当前租用时间,首次获得租用时,为InitializeLeaseTime的值。

租用周期有可以设置有效的时间值,也可以设置为永不过期,

设置永不过期有2中方式,一种是通过设置租用管理器属性,一种是通过override InitializeLifetimeService方法,方法返回null表示永不过期,值得注意的是:由于租用管理器是针对所有服务器对象的,如果出现2种同时使用时,(override)对象的租用配置优先级高于服务器端配置.

另外如果需要设置指定的时间过期则通过以下override,并设置时间来实现。

 public override object InitializeLifetimeService()
 {
  ILease lease = (ILease)base.InitializeLifetimeService();
  if (lease.CurrentState == LeaseState.Initial)
  {
   lease.InitialLeaseTime = TimeSpan.FromMinutes(1);
   lease.RenewOnCallTime = TimeSpan.FromSeconds(20);
  }
  return lease;  
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr蹇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值