C# для профессионалов. Том II
Шрифт:
В серверном выводе можно видеть, что метод
Направляющие атрибуты
Удаленные объекты никогда не передаются по линиям связи в отличие от типов данных значений и сериализуемых классов. Иногда желательно послать данные только в одном
В C# существуют аналогичные атрибуты как часть языка: параметры методов
Управление временем жизни
Как клиент и сервер определяют, какая возникла проблема и что при этом другая сторона более недоступна?
Для клиента ответ может быть коротким. Как только клиент вызывает метод для удаленного объекта, мы получаем исключение типа
А что же сервер? Когда сервер обнаруживает, что клиент отсутствует (что означает возможность очистить ресурсы, которые он удерживает для клиента)? Если ждать следующего вызова метода с клиента, он может никогда не появиться. В области COM протокол DCOM использовал механизм ping. Клиент посылал на сервер ping с информацией об используемых объектах. Так как клиент мог иметь на сервере сотни используемых клиентов, то, чтобы сделать этот механизм более эффективным, посылалась информация не обо всех объектах, а только о различии с предыдущим ping.
Этот механизм был эффективен в LAN, но не подходит для Интернета. Подумайте о тысячах или миллионах клиентов, посылающих ping-информацию на сервер. .NET Remoting использует существенно лучшее масштабируемое решение для управления временем жизни — LDGC (Leasing Distributed Garbage Collector — Сборщик мусора распределенной аренды.
Это управление временем жизни активно только для активизированных клиентом объектов. Объекты
Для управления временем жизни можно сконфигурировать следующие значения:
□
□
□ Если спонсор недоступен в течение
□
Конфигурация аренды | Значение по умолчанию (секунды) |
---|---|
LeaseTime | 300 |
RenewOnCallTime | 120 |
SponsorshipTimeout | 120 |
LeaseManagerPollTime | 10 |
Обновление аренды
Как показано в таблице, время аренды по умолчанию для объекта составляет 300 секунд. Если клиент вызывает метод на объекте, когда аренда истекла, возникает исключение. Если имеется клиент, где удаленный объект может понадобиться на время более 300 с, то существует три способа обновления аренды:
□ Неявное обновление делается автоматически, когда клиент вызывает метод на удаленном объекте. Если текущее время аренды меньше, чем значение
□ При явном обновлении клиент определяет новое время аренды. Это делается с помощью метода
□ Третьей возможностью обновления аренды является спонсорство. Клиент может создать спонсора, который реализует интерфейс
Классы, используемые для управления временем жизни
Пример: получение информации об аренде
В этом небольшом примере кода доступ к информации аренды осуществляется с помощью вызова метода
Помните, что эти действия годятся только для активизированных клиентом объектов. Экземпляры объектов