Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 438
Эндрю Троелсен
Например, при каждом вызове клиентом члена удаленного MBR-обьекта, являющегося САО-типом или WKO-синглетом, время лизинга снова устанавливается равным пяти минутам. Но кроме автоматического обновления интервала времени лизинга при вызове клиента, среда выполнения .NET обеспечивает три дополнительные альтернативы.
• Установки лизинга по умолчанию для удаленных объектов могут переопределяться файлами *.config.
• Могут использоваться спонсоры лизинговой схемы сервера, действующие от имени удаленного объекта, время лизинга которого уже истекло.
• Могут использоваться спонсоры лизинговой схемы клиента, действующие от имени удаленного объекта, время лизинга которого уже истекло.
public interface ILease {
TimeSpan CurrentLeaseTime { get; }
LeaseState CurrentState { get; }
TimeSpan InitialLeaseTime { get; set; }
TimeSpan RenewOnCallTime { get; set; }
TimeSpan SponsorshipTimeout { get; set; }
TimeSpan Renew(TimeSpan renewalTime);
}
Интерфейс ILease не только позволяет получить информацию о текущих параметрах лизинга (с помощью CurrentLeaseTime, CurrentState и InitialLeaseTime), но и обеспечивает возможность построения "спонсоров" лизинга (более подробно об этом будет говориться позже). Роль каждого из членов ILease описана в табл. 18.6.
Таблица 18.6. Члены интерфейса ILease
Член | Описание |
---|---|
CurrentLeaseTime | Читает информацию о времени, оставшемся до отключения данного объекта при отсутствии новых вызовов методов объекта |
CurrentState | Читает информацию о текущем состоянии лизинга, представленную значением перечня LeaseState |
InitialLeaseTime | Читает или устанавливает исходное время лизинга. Исходное время лизинга – это время от начала активизации объекта до истечения лизинга при отсутствии новых вызовов методов объекта |
RenewOnCallTime | Читает или устанавливает значение времени, на которое вызов удаленного объекта увеличивает значение CurrentLeaseTime |
SponsorshipTimeout | Читает или устанавливает значение времени ожидания спонсора для возвращения времени возобновления лизинга |
Register() | Перегруженный метод, регистрирующий спонсора данного лизинга |
Renew() | Возобновляет лизинг с указанным временем |
Unregister() | Удаляет указанный спонсор из списка спонсоров |
internal class LeaseInfo {
public static void LeaseStats(ILease itfLease) {
Console.WriteLine(***** Информация о лизинге *****");