Share via


Vida útil concessões

Objetos de empacotamento por referência (MBRs) não residem na memória indefinidamente, se eles estão objetos servidor-ativado Singleton cliente-ativado ou. Em vez disso, a menos que o tipo substitui MarshalByRefObject.InitializeLifetimeService para controlar suas próprias diretivas Tempo de vida, cada MBR tem uma vida útil que é controlada por uma combinação de concessões, um gerente de concessão e um número de patrocinadores. In this maiúsculas e minúsculas, tempo de vida 's objeto an MBR is the tempo Total the ativo remains objeto in Memória. Uma concessão é o período de tempo que um objeto específico está ativo na memória antes que o sistema do .NET Framework Remoting comece o processo de excluí-lo e recuperando a memória. Gerenciador de concessões 's domínio do aplicativo the servidor is the objeto that determines when the remoto objeto is marked for Garbage coleção. A patrocinador is an Objeto that can solicitação a new arrendamento for a particular Objeto by registering itself with the gerenciador de concessões.

Whenever an objeto MBR is remoted outside an domínio do aplicativo, is a arrendamento tempo de vida Criado for that objeto. Each domínio do aplicativo contains a arrendamento Gerente that is responsible for Administering leases in its domínio. The periodicTudoy gerenciador de concessões examines Tudo leases for arrendamento EXPIRED Times. Se um arrendamento expirou, o gerenciador de concessões envia uma solicitação para sua lista de patrocinadores para esse objeto e Consultas se qualquer uma delas confirmação para renovar o arrendamento. Se nenhum patrocinador renova o arrendamento, o gerenciador de concessões remove o arrendamento, o objeto é excluído e sua memória é recuperada pelo lixo coleção. Tempo de vida 's an objeto, then, can be much longer than its arrendamento tempo de vida, IF renewed Mais than once by a patrocinador or by continually being chamado by clients.

Vida útil de um objeto remoto é independente das vidas dos seus clientes. The arrendamento for a basic objeto may be Very long, in which maiúscminúsc the objeto may be used by múltiplo Clients. Concessão do objeto pode ser renovada periodicamente por um cliente, mantendo o objeto Alive mais. This abordagem uses leases Efficiently because tráfego de rede Very Little is exigido for distribuído Garbage coleção. However, remoto Objetos that Resources scarce use can have a arrendamento with a tempo de vida Short, which a cliente freqüentes renews with a intervalo de tempo Short. When Tudo the Clients are Finished with the remoto objeto, the sistema arquitetura de comunicação remota .NET Framework Marks the objeto for coleta de lixo quickly. Esta diretiva substitui o tráfego de rede superiores para uso mais eficiente de recursos do servidor.

Usar concessões para gerenciar o tempo de vida de objetos remotos é uma abordagem alternativa para fazer referência contagem, que pode ser complexo e ineficiente através de conexões de rede não confiável. Embora as concessões podem ser configuradas para estender a vida útil de um objeto mais do que é necessário com precisão a redução no tráfego de rede dedicado para fazer referência a contagem e enviando solicitações para os clientes, remoto torna concessão uma solução atraente quando corretamente configurado para um cenário específico.

A tabela a seguir descreve as propriedades principais do concessões.

Propriedade

Descrição

InitialLeaseTime

Specifies the SPAN Initial of tempo that an objeto remains in memória before the arrendamento Gerente begins the processo of the objeto Deleting. No arquivo de configuração, esse é o atributo do elemento de configuração leaseTime< tempo de vida > Elemento. O padrão é 5 minutos. Um tempo de concessão de 0 define a concessão com uma vida útil infinita.

CurrentLeaseTime

Specifies the SPAN of tempo Esquerda before the Expires. Quando uma concessão for renovada, seus CurrentLeaseTime é definido para o máximo do CurrentLeaseTime a RenewOnCallTime.

RenewOnCallTime

Especifica o período de tempo máximo que o CurrentLeaseTime é definido para após cada remoto chamada para o objeto. O padrão é 2 minutos.

SponsorshipTimeout

Specifies the tempo that the arrendamento Gerente waits for the patrocinador to Respond When Notified That Has Expired a arrendamento. Se o patrocinador não responde no tempo especificado, o patrocinador é removido e outro patrocinador é chamado. If there are no Mais sponsors, the arrendamento Expires and the remoto objeto is marked for coleta de lixo. Se o valor for 0 (TimeSpan.Zero), a concessão não registra os patrocinadores. O padrão é 2 minutos.

LeaseManagerPollTime

Specifies the quantidade of tempo that the arrendamento Gerente sleeps after checking for EXPIRED leases. O padrão é 10 segundos.

Leases Are Created when an MBR is activated in another Aplicativo . Nesse ponto, quando a propriedade ILease.CurrentStateLeaseState.Initial é, as propriedades de concessão podem ser definidas. Uma vez definida, eles não podem ser alterados diretamente. Somente o CurrentLeaseTime pode ser alterado, de um chamar ILease.Renew ou quando o arrendamento Gerente chamadas responde com um objeto ISponsor.RenewalTimeSpan em um patrocinador e a patrocinador. MarshalByRefObject tem a implementação de um arrendamento tempo de vida usar como padrão e a menos que esse arrendamento é modificado quando ele é criado, as propriedades arrendamento são sempre as mesmas.

Modificando as propriedades de concessão

Can be the Properties arrendamento tempo de vida Modificado in the seguinte ways:

  • Declaring Personalizar tempo de vida arrendamento Properties by overriding MarshalByRefObject.InitializeLifetimeService in your objeto MBR, Either to Set the Properties on the arrendamento yourself or to Return a reference null (Nothing in Visual Basic). A última opção informa ao sistema do sistema de interação remota .NET Framework que instâncias deste tipo têm uma vida útil infinita.

  • A or an can also Properties for all objects in a particular in the < tempo de vida > Elemento in the OR Computador . Para obter mais informações, consulte Inicializando concessões.

Uma vez criado, uma concessão pode ser renovada das seguintes maneiras:

  • Um cliente chama o Renew diretamente.

  • Se a propriedade ILease.RenewOnCallTime é definida, cada chamada para o objeto remoto renova a concessão para o horário especificado.

  • A concessão chama um método Renewal para solicitar uma renovação de concessão e o patrocinador responde com um TimeSpan.

Para obter detalhes, consulte Renovar concessões.

Gerentes de concessão

Gerentes de concessão devem examinar periodicamente concessões para expiração tempo. Quando Tempo de Uma concessão expirou, a concessão é informada e ele tenta renovar próprio invocando seus patrocinadores.

Also the gerenciador de concessões maintains a lista of sponsors de which are Waiting leases for Replies. Se um patrocinador não responder no intervalo especificado pelo período de tempo de SponsorshipTimeout, ele é removido da lista do patrocinador.

Anotação that it is possible for a mal-intencionado cliente arquitetura de comunicação remota to abuse the sistema arrendamento to Mount a attack Against a servidor arquitetura de comunicação remota negação de serviço (DOS). O mal-intencionado patrocinadores cliente muitos concedem e, em seguida, se recusa a resposta consultas de renovação do servidor. This attack DOS is possible only if TypeFilterLevel is set to Completo.

Quando uma concessão é permitida para expirar, não mais mensagens de concessão ou patrocinador retorna é aceitas. Referência da concessão é removida da lista de concessão e o sistema do .NET Framework Remoting remove a referência de objeto de sua tabela interna. O sistema coleção de lixo, em seguida, remove o objeto e a concessão.

Consulte também

Tarefas

Como: Substituir o método InitializeLifetimeService

Como: Renovar uma concessão

Conceitos

Exemplo do Sistema de Interação Remota: Vidas úteis

Inicializando concessões

Renovar concessões

Referência

ILease

RemotingServices.GetLifetimeService

MarshalByRefObject.InitializeLifetimeService

Outros recursos

A ativação de objeto e vida útil

Esquema configurações Remoting