Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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;
        }