Как работают интерфейсы ISponsor и ILease?

Я создал объект, который наследуется от MarshalByRefObject а также ISponsor, В моей реализации ISponsor Я просто возвращаю временной интервал, чтобы указать, как долго я хочу обновлять объект.

Когда я звоню InitializeLifetimeService() чтобы получить ILease ссылка будет передана в мой ISponsor объект, который он никогда не использовал из примеров, которые я видел.

ISponsor просто, кажется, возвращает TimeSpan без фактического использования ILease ссылка. Но я уверен, что здесь происходит больше, так как удаленное взаимодействие вовлечено.

Как ISponsor а также ILease работа, в частности, с точки зрения продления жизни объекта?

2 ответа

Решение

В родительском AppDomain вы получаете объект ILease с помощью вызова InitializeLifetimeService или GetLifetimeService с прокси-экземпляром объекта в новом AppDomain. Вам никогда не нужно реализовывать ILease самостоятельно (кроме тестирования в вашей реализации ISponsor).

Затем вы регистрируете свой собственный объект Sponsor, который реализует ISponsor с вызовом ILease.Register и настраивает объект ILease с тайм-аутами.

Когда ваш объект Sponsor вызывается с помощью Renewal, вы можете указать, как долго он будет поддерживаться, а также настроить / отобразить свойства, переданные в экземпляре ILease.

В клиентском приложении, где вы хотите продлить аренду удаленного объекта, вы обычно получаете интерфейс ILease для этого объекта, вызывая

ILease lease = (ILease)RemotingServices.GetLifetimeService( remoteObject );

а затем передать его ваш собственный объект спонсора

lease.Register( customSponsor );

где ваш собственный класс спонсора будет выглядеть примерно так:

private class CustomSponsor : MarshalByRefObject, ISponsor
{
    public TimeSpan Renewal(ILease lease)
    {
        Debug.Assert(lease.CurrentState == LeaseState.Active);
        //Renew lease by 5 minutes

        return TimeSpan.FromMinutes(5);
    }
}

Для получения дополнительной информации ознакомьтесь с этой полезной статьей MSDN о лизинге и спонсорстве. http://msdn.microsoft.com/en-us/magazine/cc300474.aspx

Ссылка больше не работает - она ​​была в выпуске за декабрь 2003 года, который можно скачать в формате CHM с той же страницы.

Ссылка на обратную дорогу машины здесь:

https://web.archive.org/web/20080906214332/http://msdn.microsoft.com/en-us/magazine/cc300474.aspx

Другие вопросы по тегам