remoting采用客户端激活的方式。
为了实现客户端意外退出后,服务端能及时获知。采用remoting的生命周期管理,客户端用续租的方式保持连线,一旦租期过期,服务端通过TrackingHandler类的DisconnectedObject方法来获取掉线的客户端远程对象实例,并在在线列表中删除该客户端。以下是客户端订约和续租的代码
rm=new CallsetBizRemote();
sponsor = new ClientSponsor();
//每次服务器上远程对象租用过期后将自动调用sponsor的Renewal()来接受续订,下面指定了续订的时间
sponsor.RenewalTime=TimeSpan.FromSeconds(5);
ILease lease =(ILease)rm.GetLifetimeService();
lease.Register(sponsor);但是,在实际应用中却很不稳定,有时客户端意外退出,服务器能正常跟踪,但有时服务器却半天无反应,有时客户端正常,服务器却误认客户端退出,难道remoting的生命周期管理是垃圾?!