/// <summary> /// 取一个远程对象接口 /// </summary> /// <param name="_interfaceName"></param> /// <returns></returns> public static object GetRemotingInterface(string _interfaceName) { if (serverObjectLib.ContainsKey(_interfaceName)) { object _icsObject = serverObjectLib[_interfaceName]; try { MarshalByRefObject _mo = _icsObject as MarshalByRefObject; ILease lease = (ILease)_mo.GetLifetimeService(); if (lease.CurrentState == LeaseState.Active) { return(_icsObject); } } catch (Exception e) { string errmsg = e.Message; } sponsorLib.Remove(_interfaceName); serverObjectLib.Remove(_interfaceName); } IServiceFactory _serviceFactory = (IServiceFactory)RemotingClientSvc.GetAppSvrObj(typeof(IServiceFactory)); RemotingClientSvc.BindTicketToCallContext(SessionClass.CurrentTicket); MarshalByRefObject _ret = _serviceFactory.GetInterFace(_interfaceName) as MarshalByRefObject; ILease clease = (ILease)_ret.GetLifetimeService(); SinoSZClientSponsor _sp = new SinoSZClientSponsor(); clease.Register(_sp); //为自己注册生存期租约主办方 sponsorLib.Add(_interfaceName, _sp); serverObjectLib.Add(_interfaceName, _ret); return(_ret); }
/// <summary> /// 通过Remoting 接口创建远程接口对象 /// </summary> virtual protected void CreateObject() { IServiceFactory _serviceFactory = (IServiceFactory)RemotingClientSvc.GetAppSvrObj(typeof(IServiceFactory)); RemotingClientSvc.BindTicketToCallContext(SessionClass.CurrentTicket); MarshalByRefObject _ret = _serviceFactory.GetInterFace(InterfaceName) as MarshalByRefObject; ILease clease = (ILease)_ret.GetLifetimeService(); sponsor = new SinoSZClientSponsor(); clease.Register(sponsor); //为自己注册生存期租约主办方 remoteObject = _ret; }