LifetimeServices Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Steruje the.NET usługami okresu istnienia komunikacji wielokrotnej.
public ref class LifetimeServices sealed
public sealed class LifetimeServices
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class LifetimeServices
[System.Runtime.InteropServices.ComVisible(true)]
[System.Security.SecurityCritical]
public sealed class LifetimeServices
type LifetimeServices = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type LifetimeServices = class
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Security.SecurityCritical>]
type LifetimeServices = class
Public NotInheritable Class LifetimeServices
- Dziedziczenie
-
LifetimeServices
- Atrybuty
Przykłady
#using <system.dll>
#using <system.runtime.remoting.dll>
#using "service.dll"
using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Http;
using namespace System::Runtime::Remoting::Lifetime;
int main()
{
LifetimeServices::LeaseTime = TimeSpan::FromSeconds( 5 );
LifetimeServices::LeaseManagerPollTime = TimeSpan::FromSeconds( 3 );
LifetimeServices::RenewOnCallTime = TimeSpan::FromSeconds( 2 );
LifetimeServices::SponsorshipTimeout = TimeSpan::FromSeconds( 1 );
ChannelServices::RegisterChannel( gcnew HttpChannel( 8080 ) );
RemotingConfiguration::RegisterActivatedServiceType( ClientActivatedType::typeid );
Console::WriteLine( "The server is listening. Press Enter to exit...." );
Console::ReadLine();
Console::WriteLine( "GC'ing." );
GC::Collect();
GC::WaitForPendingFinalizers();
return 0;
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;
using System.Runtime.Remoting.Lifetime;
public class Server {
public static void Main() {
Server myServer = new Server();
myServer.Run();
}
public void Run()
{
LifetimeServices.LeaseTime = TimeSpan.FromSeconds(5);
LifetimeServices.LeaseManagerPollTime = TimeSpan.FromSeconds(3);
LifetimeServices.RenewOnCallTime = TimeSpan.FromSeconds(2);
LifetimeServices.SponsorshipTimeout = TimeSpan.FromSeconds(1);
ChannelServices.RegisterChannel(new HttpChannel(8080), true);
RemotingConfiguration.RegisterActivatedServiceType(typeof(ClientActivatedType));
Console.WriteLine("The server is listening. Press Enter to exit....");
Console.ReadLine();
Console.WriteLine("GC'ing.");
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Http
Imports System.Runtime.Remoting.Lifetime
Imports System.Security.Permissions
Public Class Server
Public Shared Sub Main()
Dim myServer As New Server()
myServer.Run()
End Sub
<SecurityPermission(SecurityAction.Demand, Flags:=SecurityPermissionFlag.Infrastructure)> _
Public Sub Run()
LifetimeServices.LeaseTime = TimeSpan.FromSeconds(5)
LifetimeServices.LeaseManagerPollTime = TimeSpan.FromSeconds(3)
LifetimeServices.RenewOnCallTime = TimeSpan.FromSeconds(2)
LifetimeServices.SponsorshipTimeout = TimeSpan.FromSeconds(1)
ChannelServices.RegisterChannel(New HttpChannel(8080), True)
RemotingConfiguration.RegisterActivatedServiceType(GetType(ClientActivatedType))
Console.WriteLine("The server is listening. Press Enter to exit....")
Console.ReadLine()
Console.WriteLine("GC'ing.")
GC.Collect()
GC.WaitForPendingFinalizers()
End Sub
End Class
Uwagi
Rozproszone odzyskiwanie pamięci jest odpowiedzialne za kontrolowanie okresów istnienia aplikacji serwera i usuwanie ich, gdy ich okresy istnienia wygasły. Tradycyjnie rozproszone odzyskiwanie pamięci używa liczników odwołań i polecenia ping do kontroli. Działa to dobrze, gdy istnieje kilka klientów na obiekt, ale nie działa dobrze, gdy istnieje tysiące klientów na każdy obiekt. Usługa okresu istnienia może przyjąć funkcję tradycyjnego rozproszonego modułu odśmiecającego pamięci i skalować się dobrze, gdy liczba klientów wzrośnie.
Usługa okresu istnienia kojarzy dzierżawę z każdym zdalnie aktywowanym obiektem. Po wygaśnięciu dzierżawy obiekt zostanie usunięty.
Uwaga
Ta klasa sprawia, że zapotrzebowanie na łącza. Wyjątek SecurityException jest zgłaszany, jeśli bezpośredni obiekt wywołujący nie ma uprawnień infrastruktury. Aby uzyskać więcej informacji, zobacz Link Demands (Żądania linków ).
Konstruktory
LifetimeServices() |
Nieaktualne.
Nieaktualne.
Tworzy wystąpienie klasy LifetimeServices. |
Właściwości
LeaseManagerPollTime |
Pobiera lub ustawia interwał czasu między każdą aktywacją menedżera dzierżawy w celu oczyszczenia wygasłych dzierżaw. |
LeaseTime |
Pobiera lub ustawia początkowy przedział czasu dzierżawy dla elementu AppDomain. |
RenewOnCallTime |
Pobiera lub ustawia czas, przez który dzierżawa jest rozszerzana za każdym razem, gdy wywołanie pojawia się w obiekcie serwera. |
SponsorshipTimeout |
Pobiera lub ustawia czas oczekiwania menedżera dzierżawy na powrót sponsora z czasem odnowienia dzierżawy. |
Metody
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |