Partilhar via


RemotingConfiguration.RegisterActivatedServiceType Método

Definição

Registra um Type de objeto no lado do serviço como um que pode ser ativado na solicitação de um cliente.

Sobrecargas

RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Registra um tipo de objeto registrado no ActivatedServiceTypeEntry fornecido no lado do serviço como um que pode ser ativado na solicitação de um cliente.

RegisterActivatedServiceType(Type)

Registra um tipo de objeto especificado no lado do serviço como um tipo que pode ser ativado na solicitação de um cliente.

RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Registra um tipo de objeto registrado no ActivatedServiceTypeEntry fornecido no lado do serviço como um que pode ser ativado na solicitação de um cliente.

public:
 static void RegisterActivatedServiceType(System::Runtime::Remoting::ActivatedServiceTypeEntry ^ entry);
public static void RegisterActivatedServiceType (System.Runtime.Remoting.ActivatedServiceTypeEntry entry);
static member RegisterActivatedServiceType : System.Runtime.Remoting.ActivatedServiceTypeEntry -> unit
Public Shared Sub RegisterActivatedServiceType (entry As ActivatedServiceTypeEntry)

Parâmetros

entry
ActivatedServiceTypeEntry

Definições de configuração para o tipo ativado pelo cliente.

Exceções

Pelo menos um dos chamadores no topo da pilha de chamadas não tem permissão para configurar canais e tipos de comunicação remota.

Comentários

Para criar uma instância de um objeto ativado pelo cliente no servidor, você deve saber Type dela e ela deve ser registrada na extremidade do servidor usando o RegisterActivatedServiceType método . Para obter um proxy para uma nova instância do objeto ativado pelo cliente, o cliente deve primeiro registrar um canal com ChannelServices e, em seguida, ativar o objeto chamando new ou Activator.CreateInstance.

Para ativar um tipo de objeto ativado pelo cliente com a new palavra-chave , primeiro você deve registrar o tipo de objeto na extremidade do cliente usando o RegisterActivatedClientType método . Chamar o RegisterActivatedClientType método fornece à infraestrutura de comunicação remota o local do aplicativo remoto, em new que tenta criá-lo. Se, por outro lado, você usar o CreateInstance método para criar uma nova instância do objeto ativado pelo cliente, deverá fornecer a URL do aplicativo remoto como um parâmetro, portanto, nenhum registro anterior na extremidade do cliente será necessário. Para fornecer o CreateInstance método com a URL do servidor em que você deseja criar o objeto, você deve encapsular a URL em uma instância da UrlAttribute classe .

Para obter uma descrição detalhada dos objetos ativados pelo cliente, consulte Ativação do cliente.

Confira também

Aplica-se a

RegisterActivatedServiceType(Type)

Registra um tipo de objeto especificado no lado do serviço como um tipo que pode ser ativado na solicitação de um cliente.

public:
 static void RegisterActivatedServiceType(Type ^ type);
public static void RegisterActivatedServiceType (Type type);
static member RegisterActivatedServiceType : Type -> unit
Public Shared Sub RegisterActivatedServiceType (type As Type)

Parâmetros

type
Type

O Type do objeto a ser registrado.

Exceções

Pelo menos um dos chamadores no topo da pilha de chamadas não tem permissão para configurar canais e tipos de comunicação remota.

Exemplos

O exemplo de código a seguir demonstra o registro de um tipo de objeto no servidor como um tipo que pode ser ativado pelo cliente. Para o código do cliente que corresponde ao código do servidor apresentado, consulte o exemplo do RegisterActivatedClientType método .

#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::Tcp;

int main()
{
   ChannelServices::RegisterChannel( gcnew TcpChannel( 8082 ) );
   RemotingConfiguration::RegisterActivatedServiceType( HelloServiceClass::typeid );
   Console::WriteLine( "Press enter to stop this process." );
   Console::ReadLine();
   return 0;
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

public class ServerClass {

    public static void Main()  {

        ChannelServices.RegisterChannel(new TcpChannel(8082));

        RemotingConfiguration.RegisterActivatedServiceType(typeof(HelloServiceClass));

        Console.WriteLine("Press enter to stop this process.");
        Console.ReadLine();
    }
}
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp


Public Class ServerClass
      
   Public Shared Sub Main()
      
      ChannelServices.RegisterChannel(New TcpChannel(8082))     
      RemotingConfiguration.RegisterActivatedServiceType(GetType(HelloServiceClass))
      
      Console.WriteLine("Press enter to stop this process.")
      Console.ReadLine()

   End Sub

End Class

O exemplo de código a seguir mostra o objeto de serviço registrado no código de exemplo acima.

#using <system.dll>

using namespace System;

public ref class HelloServiceClass: public MarshalByRefObject
{
private:
   static int n_instance;

public:
   HelloServiceClass()
   {
      n_instance++;
      Console::WriteLine(  "{0} has been created.  Instance # = {1}", this->GetType()->Name, n_instance );
   }

   ~HelloServiceClass()
   {
      Console::WriteLine( "Destroyed instance {0} of HelloServiceClass.", n_instance );
      n_instance--;
   }

   String^ HelloMethod( String^ name )
   {
      // Reports that the method was called.
      Console::WriteLine();
      Console::WriteLine( "Called HelloMethod on instance {0} with the '{1}' parameter.", n_instance, name );

      // Calculates and returns the result to the client.
      return String::Format( "Hi there {0}", name );
   }
};
using System;

public class HelloServiceClass : MarshalByRefObject {

    static int n_instance;

    public HelloServiceClass() {
        n_instance++;
        Console.WriteLine(this.GetType().Name + " has been created.  Instance # = {0}", n_instance);
    }

    ~HelloServiceClass() {
        Console.WriteLine("Destroyed instance {0} of HelloServiceClass.", n_instance);
        n_instance --;
    }

    public String HelloMethod(String name) {

        // Reports that the method was called.
        Console.WriteLine();
        Console.WriteLine("Called HelloMethod on instance {0} with the '{1}' parameter.",
                             n_instance, name);

        // Calculates and returns the result to the client.
        return "Hi there " + name + ".";
    }
}
Public Class HelloServiceClass
   Inherits MarshalByRefObject
   
   Private Shared n_instance As Integer

      
   Public Sub New()
      n_instance += 1
      Console.WriteLine(Me.GetType().Name + " has been created.  Instance # = {0}", n_instance)
   End Sub
      
   
   Protected Overrides Sub Finalize()
      Console.WriteLine("Destroyed instance {0} of HelloServiceClass.", n_instance)
      n_instance -= 1
      MyBase.Finalize()
   End Sub
   
   
   
   Public Function HelloMethod(name As [String]) As [String]
      
      ' Reports that the method was called.
      Console.WriteLine()
      Console.WriteLine("Called HelloMethod on instance {0} with the '{1}' parameter.", n_instance, name)
      
      ' Calculates and returns the result to the client.
      Return "Hi there " + name + "."

   End Function 'HelloMethod

End Class

Comentários

Para criar uma instância de um objeto ativado pelo cliente no servidor, você deve saber Type dela e ela deve ser registrada na extremidade do servidor usando o RegisterActivatedServiceType método . Para obter um proxy para uma nova instância do objeto ativado pelo cliente, o cliente deve primeiro registrar um canal com ChannelServices e, em seguida, ativar o objeto chamando new ou Activator.CreateInstance.

Para ativar um tipo de objeto ativado pelo cliente com a new palavra-chave , primeiro você deve registrar o tipo de objeto na extremidade do cliente usando o RegisterActivatedClientType método . Chamar o RegisterActivatedClientType método fornece à infraestrutura de comunicação remota o local do aplicativo remoto, em new que tenta criá-lo. Se, por outro lado, você usar o CreateInstance método para criar uma nova instância do objeto ativado pelo cliente, deverá fornecer a URL do aplicativo remoto como um parâmetro, portanto, nenhum registro anterior na extremidade do cliente será necessário. Para fornecer o CreateInstance método com a URL do servidor em que você deseja criar o objeto, você deve encapsular a URL em uma instância da UrlAttribute classe .

Para obter uma descrição detalhada dos objetos ativados pelo cliente, consulte Ativação do cliente.

Confira também

Aplica-se a