A ativação do servidor

Objetos servidor-ativado são objetos cuja vida útil diretamente é controlados pelo servidor. The domínio do aplicativo servidor CREATES these Objects only when the cliente makes a chamada de método on the objeto, rather than when the cliente Calls Novo (Novo () in Visual Basic) or Activator.GetObject; Isso salva de uma rede circular vez somente para o propósito de Criação de Instância. Somente um proxy é criado no domínio de aplicativo do cliente quando um cliente solicita uma instância de um tipo servidor-ativado. Isso significa que somente os construtores padrão são permitidos para tipos de servidores-ativado. To publicar a tipo whose instances will be Criado with specific constructors that Take Arguments, You can use A ativação do cliente or you can Dynamically publicar Your instância particular.

Modos de ativação do servidor

Há dois modos de ativação (ou valores https://msdn.microsoft.com/pt-br/library/kffewhbs(v=vs.85) WellKnownObjectMode) para objetos servidor-ativado: Singleton e SingleCall.

Singleton tipos nunca ter Mais que uma instância em qualquer um tempo. Se existir uma instância, Tudo solicitações cliente são atendido por essa instância. If an instância does not exist, the servidor CREATES an instância and Tudo requests cliente subsequent will be atendido by that instância. Because Singleton Types have an associado tempo de vida usar como padrão, Clients Will Not Sempre Receive a reference to the same instância of the classe remoto, Even though there is never more than one disponível instância at any tempo One.

Types SingleCall Sempre have one instância per solicitação de cliente. The Avançar Invocation método will be atendido by a instância servidor different, Even If the previous instância has not yet been recycled by the sistema. Tipos SingleCall não participam do sistema da concessão vida útil.

Para criar uma instância de um tipo de servidor-ativado, os clientes ou configurar seu aplicativo através de programação ou usando um arquivo de configuração. Ao configurar um aplicativo através de programação use o método Activator.GetObject para criar uma instância de um objeto do servidor ativado no cliente. Ao configurar um aplicativo com um arquivo de configuração você pode chamar Activator.GetObject ou usar o operador Novo para criar uma instância de um servidor ativado objeto no cliente.

Dica

Talvez você não precise registrar o canal no lado do cliente.If the cliente not registrar a canalizar, the sistema arquitetura de comunicação remota automaticamente creates a canalizar Using one of the channels usar como padrão specified in the arquivo Computador.config to make de saída requests.This seleção canalizar Automatic on the cliente not registrar the canalizar to escutar for any funções callback from the servidor, and, unless that personalizado canalizar is Added to the arquivo Computador.config, it not registrar any personalizado canalizar implementação.Nesses casos, você deverá registrar o tipo de canal que você deseja usar no domínio de aplicativo do cliente.

O seguinte exemplo de código mostra um chamar para Activator.GetObject, considerando um TcpChannel foi registrado para se comunicar na porta 8080. Se o cliente conhece apenas que o objeto servidor implementa uma interface específica, você deve usar um chamar para Activator.GetObject, porque você só pode usar Novo(Novoin Visual Basic) para criar uma instância de uma classe.

Dim MyRemoteClass As RemoteObjectClass = _
   CType( _
      Activator.GetObject(GetType(RemoteObjectClass), _
         "tcp://computername:8080/RemoteObjectUri" ), _
      RemoteObjectClass
   ) 
RemoteObjectClass MyRemoteClass = (RemoteObjectClass)Activator.GetObject(
   typeof(RemoteObjectClass),
   "tcp://computername:8080/RemoteObjectUri "
);

Lembre-se de que neste apontar não real a comunicação com o Servidor ocorreu, isso o remoto objeto próprio não foi instanciado. O que tenha sido instanciado é o objeto de proxy no lado do cliente. O cliente agora pode usar MyRemoteClass como se fosse uma referência direta ao objeto remoto. The instância RemoteObjectClass that the cliente actually Uses to Communicate with from método chamar to método chamar Depends on Whether the objeto servidor is Declared as a Singleton or tipo SingleCall. Independentemente se o Editor de objeto do servidor expõe essa informação, o cliente trata a referência de objeto que ele tem exatamente a mesma.

Singletons

No COM, "singleton" significava que desde que os clientes tivesse referências para o objeto, o objeto pode não ser excluído da memória. In Remoting .NET, however, a objeto Singleton is assunto to the arrendamento tempo de vida that was specified for IT, SO it can be recycled even if Clients currently Hold Referências to IT. You can Criar the antigo tipo of objeto Singleton by the InitializeLifetimeService método of MarshalByRefObject to Return a NULL overriding Reference (Nothing in Visual Basic). This effectively keeps the Objeto in memória as long as the domínio do aplicativo hospedar is execução. Para obter detalhes, consulte concessões tempo. Você pode criar o último tipo de objeto singleton Configurando o tempo de concessão inicial no arquivo de configuração do sistema de interação remota.

Consulte também

Conceitos

A ativação de objetos remoto

A ativação do cliente

Vida útil concessões

Referência

WellKnownObjectMode Enumeration