Инициализация аренды

Этот раздел относится к технологии прежних версий, которая сохраняется для обеспечения обратной совместимости с существующими приложениями и не рекомендуется для разработки новых приложений. Сейчас распределенные приложения следует создавать с помощью  Windows Communication Foundation (WCF).

При создании экземпляра производного класса MarshalByRefObject платформа удаленного взаимодействия .NET вызывает метод InitializeLifetimeService объекта. Этот метод возвращает объект аренды, содержащий значения времени существования по умолчанию для удаленного объекта. Эти значения по умолчанию можно изменить, указав альтернативные значения в файле конфигурации серверного приложения (с помощью элемента Элемент <lifetime>) или переопределив метод InitializeLifetimeService.

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

Переопределение метода InitializeLifetimeService

При переопределении метода InitializeLifetimeService необходимо проверить значение свойства CurrentState. Значения аренды можно изменять только в том случае, если свойство CurrentState равняется Initial.

Единственным вызовом, влияющим на службу времени существования, является вызов метода InitializeLifetimeService из инфраструктуры удаленного взаимодействия .NET, активирующей аренду. Можно вызывать метод InitializeLifetimeService и создавать аренду и из других модулей кода, но в этом случае аренда будет оставаться в первоначальном состоянии, пока вызов не будет возвращен в инфраструктуру удаленного взаимодействия .NET.

Если метод InitializeLifetimeService возвращает значение NULL, время существования объекта является бесконечным, и объект не подвергается сборке мусора, пока не будет выгружен домен основного приложения.

Чтобы получить существующую аренду удаленного объекта, реализация метода InitializeLifetimeService обычно вызывает соответствующий метод базового класса. Если объект ни разу не маршалировался, аренда возвращается в первоначальном состоянии, и можно задать свойства аренды. После маршалинга объекта аренда переходит из первоначального состояния в активное состояние, а все попытки инициализировать свойства аренды игнорируются (при этом создается исключение). Метод InitializeLifetimeService вызывается при активации удаленного объекта. Во время вызова активации можно задать список спонсоров аренды, и в любое время, пока аренда остается активной, можно добавить в список дополнительных спонсоров.

Сведения о том, как переопределить метод InitializeLifetimeService, см. в разделе Как переопределить интерфейс InitializeLifetimeService.

См. также

Задачи

Как переопределить интерфейс InitializeLifetimeService

Основные понятия

Обновление аренды
Пример удаленного взаимодействия. Время существования
Аренда времени существования