Как работают интерфейсы 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