X Код для використання на сайті:
Ширина px

Скопіюйте цей код і вставте його на свій сайт

X Для завантаження презентації, скористайтесь соціальною кнопкою для рекомендації сервісу SvitPPT Завантажити собі цю презентацію

Презентація на тему:
.NET Remoting. Час життя об'єктів. Основи

Завантажити презентацію

.NET Remoting. Час життя об'єктів. Основи

Завантажити презентацію

Презентація по слайдам:

Слайд 1

.NET Remoting. Час життя об'єктів 2006-2009 .NET Remoting. Lifetime

Слайд 2

Зміст Управління часом життя об'єктів. Загальні положення. Ліцензії. Доступ до ліцензії об'єкта. Управління часом життя та config-файли. Диспетчери (менеджери) ліцензій. Спонсори ліцензій. .NET Remoting. Lifetime

Слайд 3

Управління часом життя об'єктів. Загальні положення У .NET Remoting підтримуються два види активізації об'єктів: серверна (об'єкти з серверною активізацією SAO) та клієнтська (об'єкти з клієнтською активізацією CAO). До того ж є два режими серверної активізації: Singleton і SingleCall. Управління часом життя об'єктів: CAO; SAO Singleton; SAO SingleCall. (Тут ситуація проста. Такі об'єкти створюються при кожному виклику будь-якого з методів і з завершенням виконання метода ліквідовуються – позначаються для вилучення "збирачем сміття”. Отже, підкреслимо, що на такі об'єкти – на об'єкти SAO SingleCall викладені далі принципи управління часом життя не розповсюджуються). Загалом керування часом життя об'єктів ґрунтується на поняттях ліцензій, спонсорів та диспетчерів ліцензій. .NET Remoting. Lifetime

Слайд 4

Ліцензії При активізації віддаленого об'єкта CLR отримує (і передає диспетчеру для реєстрації) дані стосовно ліцензії цього об'єкта. Такі дані надаються методом InitializeLifetimeService і визначають початкові умови стосовно життєдіяльності об'єкта (зазначений метод може перевизначатись у конкретному серверному класі, що успадковується від System.MarshalByRefObject ). Особливості існування remotable-об'єктів (їх ліцензії) визначаються реалізацією “ліцензійного” інтерфейсу ILease. Інтерфейс ILease (з простору імен SystemRuntime.Remoting.Lifetime) має кілька властивостей, які дозволяють “управляти” часом життя об'єктів. .NET Remoting. Lifetime

Слайд 5

Основні властивості (properties) інтерфейсу ILease .NET Remoting. Lifetime

Слайд 6

Зауваження. Ліцензійні дані можна модифікувати тільки у момент активізації об'єкта, тобто коли його ліцензія “знаходиться” у початковому стані. Саме цим обумовлена наявність у прикладі оператора if . Приклад перевизначення метода InitializeLifetimeService CurrentState – ще одна властивість ILease .NET Remoting. Lifetime

Слайд 7

Перевизначення метода InitializeLifetimeService. Приклад. Виконання програм Варіант клієнтської активізації (СAO) Об'єкт припинив своє існування .NET Remoting. Lifetime

Слайд 8

Перевизначення метода InitializeLifetimeService. Приклад. Виконання програм Варіант серверної активізації (SAO), режим Singleton. Змінилось кілька поколінь серверного об'єкту Один клієнт .NET Remoting. Lifetime

Слайд 9

Перевизначення метода InitializeLifetimeService. Об'єкти з необмеженим терміном ліцензії .NET Remoting. Lifetime

Слайд 10

Перевизначення метода InitializeLifetimeService. Об'єкти з необмеженим терміном ліцензії - 2 Об'єкти з необмеженим (нескінченим) терміном ліцензії – це об'єкти класів з null-ліцензією (InitializeLifetimeService має повертати null): class SomeMBRClass : MarshalByRefObject { … public override object InitializeLifetimeService() { return null; } … } .NET Remoting. Lifetime

Слайд 11

Управління часом життя. Config-файли Окрім перевизначення метода MarshalByRefObject.InitializeLifetimeService існує ще одна можливість встановлення початкових умов життєдіяльності об'єктів, а саме використовуючи файли конфігурації (config). Умови існування об'єктів задаються атрибутами елемента . Зауваження. Початкові умови існування, що задаються таким чином, стосуються всіх об'єктів для всіх remotable-класів (!) у серверному процесі. Приклад. Файл Host.exe.config (він, звичайно, повинен бути зареєстрований, використовуючи RemotingConfiguration.Configure): . . . . . . . . . Варіанти суфіксів при визначенні часового інтервалу: D (дні), Н (години), M (хвилини), S (секунди) та MS (мілісекунди). Число без суфікса інтерпретується як секунди. .NET Remoting. Lifetime

Слайд 12

Доступ до ліцензії об'єкта та управління його часом життя У серверній програмі: метод (серверного об'єкта) GetLifetimeService (успадковується від MarshalByRefObject) дозволяє отримати посилання на інтерфейс ILease . Далі, наприклад, можна викликати ILease.CurrentLeaseTime (для перевірки часу, що залишився) та ILease.Renew (для продовження терміну існування). У клієнтській програмі : (статичний) метод RemotingServices.GetLifetimeService також дозволяє отримати посилання на інтерфейс ILease. Далі так само можна викликати ILease.CurrentLeaseTime, ILease.Renew. .NET Remoting. Lifetime

Слайд 13

Диспетчери (менеджери) ліцензій. Спонсори ліцензій При активізації віддаленого об'єкту CLR отримує (і передає диспетчеру для реєстрації) дані стосовно ліцензії цього об'єкта. Диспетчер ліцензій (lease manager) є у кожнім домені. Він періодично (за замовчуванням кожні 10 секунд) перевіряє зареєстровані об'єктні ліцензії, чи не завершився їх термін. (Періодичність опитування ліцензій можна змінити: LifetimeServices.LeaseManagerPollTime = System.TimeSpan.FromMinutes(1);) При завершенні терміну ліцензії об'єкт усе ж має можливість продовжити час свого існування за наявності спонсорів, зареєстрованих у ліцензіях. В інтерфейсі ILease визначені методи Register та Unregister для реєстрації (відповідно де- реєстрації) спонсорів. .NET Remoting. Lifetime

Слайд 14

Спонсори . . . Спонсори – це об'єкти, що реалізують інтерфейс System.Runtime.Remoting.Lifetime.ISponsor. Інтервал часу, на який спонсор продовжує ліцензію, задається властивістю ISponsor.RenewalTime. Спонсори можуть бути зареєстровані як серверною, так і клієнтською програмами, використовуючи доступ до ліцензії. Властивість ILease.SponsorshipTimeout визначає час очікуванні відповіді спонсора (виклику Renewal). (Нагадаємо, що спонсор може бути на іншій машині). Є “готовий” клас-спонсор ClientSponsor (див. додаток) у просторі імен System.Runtime.Remoting.Lifetime. ILease .NET Remoting. Lifetime

Слайд 15

Спонсори. Приклад (1/3) .NET Remoting. Lifetime

Слайд 16

Спонсори. Приклад (2/3) using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Lifetime; public class Client{ public static void Main(){ RemotingConfiguration.Configure("Client.exe.config"); Server.ServerObject m_Obj1 = new Server.ServerObject(); ILease serverLease = (ILease)RemotingServices.GetLifetimeService(m_Obj1); MyClientSponsor sponsor = new MyClientSponsor(); serverLease.Register(sponsor); Console.WriteLine("Client-activated object: " + m_Obj1.Hi()); Console.ReadLine(); } } public class MyClientSponsor : MarshalByRefObject, ISponsor{ private DateTime lastRenewal; public MyClientSponsor(){ lastRenewal = DateTime.Now; } public TimeSpan Renewal(ILease lease){ Console.WriteLine("MyClientSponsor.Renewal"); Console.WriteLine("Time since last renewal:" + (DateTime.Now - lastRenewal).ToString()); lastRenewal = DateTime.Now; return TimeSpan.FromSeconds(20); } } Client.cs .NET Remoting. Lifetime

Слайд 17

Спонсори. Приклад (3/3) using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Lifetime; namespace Server { public class ServerObject : MarshalByRefObject { private Guid m_id; public ServerObject() { m_id = Guid.NewGuid(); Console.WriteLine("ServerObject created. MyGUID: {0}", m_id.ToString()); } public string Hi() { Console.WriteLine("Hi() method called. MyGUID: {0}", m_id.ToString()); return "Hi!"; } public override Object InitializeLifetimeService() { ILease lease = (ILease)base.InitializeLifetimeService(); if (lease.CurrentState == LeaseState.Initial) { lease.InitialLeaseTime = TimeSpan.FromSeconds(5); lease.SponsorshipTimeout = TimeSpan.FromSeconds(8); lease.RenewOnCallTime = TimeSpan.FromSeconds(3); } return lease; } } } SObj1.cs .NET Remoting. Lifetime

Слайд 18

Спонсори. Приклад. Виконання .NET Remoting. Lifetime

Слайд 19

Додаток .NET Remoting. Lifetime

Слайд 20

Основні властивості інтерфейсу ILease .NET Remoting. Lifetime

Слайд 21

Інтерфейс ILease .NET Remoting. Lifetime

Слайд 22

Інтерфейс ISponsor .NET Remoting. Lifetime

Слайд 23

Клас ClientSponsor .NET Remoting. Lifetime

Слайд 24

Managing the Lifetime of Remote .NET Objects with Leasing and Sponsorship (msdn.microsoft.com) To configure global defaults programmatically, use the static properties of the LifetimeServices class defined in the System.Runtime.Remoting.Lifetime namespace: You typically use these properties in the Main method of your host (the application assembly hosting the remote objects) as shown in the following code snippet: .NET Remoting. Lifetime

Слайд 25

ILease.CurrentState CurrentState is read-only property of the ILease interface. CurrentState is of the enum type LeaseState: .NET Remoting. Lifetime

Завантажити презентацію

Презентації по предмету Інформатика