Схема лизингового управления, используемая по умолчанию

Схема лизингового управления, используемая по умолчанию

Для MBR-объектов, являющихся САО-типами или WKO-синглетами, применяется так называемый лизинг по умолчанию, время которого равно пяти минутам. Если среда выполнения обнаружит, что MBR-объект, являющийся САО-типом или WKO-синглетом, остается неактивным в течение пяти минут, делается вывод о том, что клиент больше не использует данный удаленный объект, и поэтому этот объект может использоваться в процессе сборки мусора. При этом совсем не обязательно, чтобы после истечения времени лизинга объект помечался для сборки мусора немедленно. На самом деле есть много возможностей влиять на поведение, задаваемое лизингом по умолчанию.

Например, при каждом вызове клиентом члена удаленного MBR-обьекта, являющегося САО-типом или WKO-синглетом, время лизинга снова устанавливается равным пяти минутам. Но кроме автоматического обновления интервала времени лизинга при вызове клиента, среда выполнения .NET обеспечивает три дополнительные альтернативы.

• Установки лизинга по умолчанию для удаленных объектов могут переопределяться файлами *.config.

• Могут использоваться спонсоры лизинговой схемы сервера, действующие от имени удаленного объекта, время лизинга которого уже истекло.

• Могут использоваться спонсоры лизинговой схемы клиента, действующие от имени удаленного объекта, время лизинга которого уже истекло.

Мы рассмотрим каждую из указанных возможностей в следующих разделах, а пока что давайте рассмотрим установки лизинга, принятые для удаленного типа по умолчанию. Вспомните, что базовый класс MarshalByRefObject определяет член с именем GetLifetimeService(). Этот метод возвращает ссылку на внутренний объект, поддерживающий интерфейс System.Runtime.Remoting.Lifetime.ILease. Интерфейс ILease можно использовать для управления параметрами лизинга данного САО-типа или WKO-синглета. Вот формальное определение этого интерфейса.

public interface ILease {

 TimeSpan CurrentLeaseTime { get; }

 LeaseState CurrentState { get; }

 TimeSpan InitialLeaseTime { get; set; }

 TimeSpan RenewOnCallTime { get; set; }

 TimeSpan SponsorshipTimeout { get; set; }

 void Register(System.Runtime.Remoting.Lifetime.ISponsor obj);

 void Register(System.Runtime.Remoting.Lifetime.ISponsor obj, TimeSpan renewalTime);

 TimeSpan Renew(TimeSpan renewalTime);

 void Unregister(System.Runtime.Remoting.Lifetime.ISponsor obj);

}

Интерфейс ILease не только позволяет получить информацию о текущих параметрах лизинга (с помощью CurrentLeaseTime, CurrentState и InitialLeaseTime), но и обеспечивает возможность построения "спонсоров" лизинга (более подробно об этом будет говориться позже). Роль каждого из членов ILease описана в табл. 18.6.

Таблица 18.6. Члены интерфейса ILease

Член Описание
CurrentLeaseTime Читает информацию о времени, оставшемся до отключения данного объекта при отсутствии новых вызовов методов объекта
CurrentState Читает информацию о текущем состоянии лизинга, представленную значением перечня LeaseState
InitialLeaseTime Читает или устанавливает исходное время лизинга. Исходное время лизинга – это время от начала активизации объекта до истечения лизинга при отсутствии новых вызовов методов объекта
RenewOnCallTime Читает или устанавливает значение времени, на которое вызов удаленного объекта увеличивает значение CurrentLeaseTime
SponsorshipTimeout Читает или устанавливает значение времени ожидания спонсора для возвращения времени возобновления лизинга
Register() Перегруженный метод, регистрирующий спонсора данного лизинга
Renew() Возобновляет лизинг с указанным временем
Unregister() Удаляет указанный спонсор из списка спонсоров

Для иллюстрации особенностей лизинга по умолчанию для удаленных СAО-типов и WKO-синглетов определим в нашем текущем проекте CAOCarGeneralAsm новый внутренний класс LeaseInfo. Статический член LeaseStats() этого класса выводит информацию о текущем лизинге для типа CarProvider в окно консоли сервера (не забудьте указать директиву using для пространства имен System.Runtime.Remoting.Lifetime, чтобы сообщить компилятору о месте нахождения определении типа ILease).

internal class LeaseInfo {

 public static void LeaseStats(ILease itfLease) {

  Console.WriteLine(***** Информация о лизинге *****");

  Console.WriteLine("Состояние лизинга: {0}", itfLease.CurrentState);

  Console.WriteLine("Начальное время лизинга: {0}:{1}", itfLease.InitialLeaseTime.Minutes, itfLease.InitialLeaseTime.Seconds);

  Console.WriteLine("Текущее время лизинга: {0}:{1}", itfLease.CurrentLeaseTime.Minutes, itfLease.CurrentLeaseTime.Seconds);

  Console.WriteLine("Обновление времени при вызове: {0}:{1}", itfLease.RenewOnCallTime.Minutes, itfLease.RenewOnCallTime.Seconds);

  Console.WriteLine();

 }

}

Теперь предположим, что LeaseInfo.LeaseStats() вызывается в рамках методов GetJBCByIndex() и GetAllAutos() типа CarProvider. После перекомпиляции компоновочных блоков сервера и клиента (снова для гарантии того, что система Visual Studio 2005 скопирует самую последнюю и наиболее полную версию CarGeneralAsm.dll в каталоги приложений клиента и сервера), выполните приложение еще раз. Окно консоли вашего сервера должно теперь быть похожим на то, которое показано на рис. 18.6.

Рис. 18.6. Информация лизинга по умолчанию для CarProvider

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Схема data:URI

Из книги Разгони свой сайт автора Мациевский Николай

Схема data:URI Схема data:URI предоставляет способ для внедрения «непосредственно данных» точно так же, как если бы они были подключены через вызовы внешних файлов. Синтаксис у нее следующий:data:[<тип данных>][;base64],<данные>В случае простых изображений вам нужно указать


Схема системы освещения

Из книги Ландшафтный дизайн на компьютере автора Орлов Андрей Сергеевич

Схема системы освещения Очень важно продумать ночное освещение участка. Сделать грамотное освещение, учитывая все особенности участка, расположение объектов и дорожек, можно, если создавать план освещения в программе «КОМПАС-3D» (рис. 2.5). Рис. 2.5. Схема системы освещения,


Схема дорожек и площадок

Из книги Железо ПК [Популярный самоучитель] автора Пташинский Владимир

Схема дорожек и площадок Расположив все объекты на участке, можно создать схему дорожек и площадок (рис. 2.6), что позволит продумать удобство эксплуатации участка. Рис. 2.6. Схема дорожек и площадок выполнена в программе «КОМПАС-3D»На данном рисунке представлен разбивочный


Краткая схема сборки

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Краткая схема сборки В принципе, вы можете собирать компьютер в той последовательности, в какой пожелаете. Мало того, в зависимости от размеров и конфигурации корпуса, а также размера материнской платы очередность операций может варьироваться. Иногда проще сначала


Схема лизингового управления циклом существования САО-типов и WKO-синглетов

Из книги Word 2007.Популярный самоучитель автора Краинский И

Схема лизингового управления циклом существования САО-типов и WKO-синглетов Вы уже видели, что WKO-типы, сконфигурированные для активизации одиночного вызова, существуют только в процессе текущего вызова метода. Поэтому WKO-типы одиночного вызова являются объектами, не


Изменение параметров схемы лизингового управления

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич

Изменение параметров схемы лизингового управления Очевидно, параметры лизинга по умолчанию не могут годиться во всех случаях и для всех удаленных САО-объектов и WKO-синглетов. Если вы хотите изменить типовые установки, у вас на выбор есть два варианта.• Установки лизинга,


Схема документа

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович

Схема документа Режим Схема документа является дополнительным режимом и работает с любым из рассмотренных выше. С его помощью можно быстро перемещаться между различными разделами, подразделами документа, а также просматривать структуру документа. Для применения этого


5.1.1. Общая схема управления процессами

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

5.1.1. Общая схема управления процессами Каждый процесс может порождать полностью идентичный процесс с помощью fork(). Родительский процесс может дожидаться окончания выполнения всех своих процессов-потомков с помощью системного вызова wait. В любой момент времени процесс


Схема WS XML

Из книги OrCAD PSpice. Анализ электрических цепей автора Кеоун Дж.

Схема WS XML Синтаксис элементов, составляющих структуру WS-файла, в общем виде можно представить следующим образом:<element [attribute1="value1" [attribute2="value2" ... ]]> Содержимое (content)</element>Открывающий тег элемента состоит из следующих компонентов:? открывающей угловой скобки "<";?


Схема WSC XML

Из книги Быстрые деньги в Интернете [50 способов заработать, сидя дома у компьютера] автора Парабеллум Андрей Алексеевич

Схема WSC XML Ранее в главе 3 отмечалось, что объектная модель, которая используется при создании многозадачных сценариев (WS-файлов), была в основном позаимствована из схемы WSC XML, поэтому многие элементы WSC-файлов окажутся вам знакомыми.В листинге 10.1 приводится несколько


7.3. Схема производитель-потребитель

Из книги Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform автора Кёртен Роб

7.3. Схема производитель-потребитель Одна из классических задач на синхронизацию называется задачей производителя и потребителя. Она также известна как задача ограниченного буфера. Один или несколько производителей (потоков или процессов) создают данные, которые


Схема ИЛИ-НЕ

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

Схема ИЛИ-НЕ В последнем примере главы 9 мы рассматривали логическую схему 7400: 2-входовую схему ИЛИ-НЕ. В качестве источников V1 и V2 были использованы источники напряжения типа PWL с выходным напряжением в виде последовательностей импульсов, представляющих уровни


Схема полусумматора

Из книги автора

Схема полусумматора На самом деле нет необходимости использовать источник типа VPWL, чтобы обеспечить входные импульсы для цифровой схемы. Начните новый проект, использующий имя half. Библиотека Sourcestm содержит компонент DigStim1, условное обозначение которого показано на рис.


Схема уведомления

Из книги автора

Схема уведомления Как получить уведомление о тайм-ауте? При использовании таймера задержки вы получаете уведомление просто посредством возвращения в состояние READY.При использовании периодически и однократных таймеров у вас появляется выбор:• послать


5.1. Совместно используемая память

Из книги автора

5.1. Совместно используемая память Простейшим способом взаимодействия процессов является совместный доступ к общей области памяти. Это выглядит так, как если бы два или более процесса вызвали функцию malloc() и получили указатели на один и тот же блок памяти. Когда один из