RemotingConfiguration.RegisterActivatedServiceType Método

Definição

Regista um objeto Type no lado do serviço como um que pode ser ativado mediante pedido de um cliente.

Sobrecargas

Name Description
RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Regista um tipo de objeto registado no lado fornecido ActivatedServiceTypeEntry no lado do serviço como um que pode ser ativado mediante pedido de um cliente.

RegisterActivatedServiceType(Type)

Regista um tipo de objeto especificado na extremidade do serviço como um tipo que pode ser ativado mediante pedido de um cliente.

RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Regista um tipo de objeto registado no lado fornecido ActivatedServiceTypeEntry no lado do serviço como um que pode ser ativado mediante pedido 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 mais acima na pilha de chamadas não tem permissão para configurar tipos e canais de remoto.

Observações

Para criar uma instância de um objeto ativado pelo cliente no servidor, deve saber o que Type é e deve ser registado no lado 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 registar um canal com ChannelServices e depois ativar o objeto chamando new ou Activator.CreateInstance.

Para ativar um tipo de objeto ativado pelo cliente com a new palavra-chave, deve primeiro registar o tipo de objeto na extremidade do cliente usando o RegisterActivatedClientType método. Chamar o RegisterActivatedClientType método dá à infraestrutura remota a localização da aplicação remota, onde new tenta criá-la. Se, por outro lado, usar o CreateInstance método para criar uma nova instância do objeto ativado pelo cliente, deve fornecer a URL da aplicação remota como parâmetro, pelo que não é necessário registo prévio do lado do cliente. Para fornecer ao CreateInstance método a URL do servidor onde pretende criar o objeto, deve encapsular a URL numa instância da UrlAttribute classe.

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

Ver também

Aplica-se a

RegisterActivatedServiceType(Type)

Regista um tipo de objeto especificado na extremidade do serviço como um tipo que pode ser ativado mediante pedido 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 de objeto para registar.

Exceções

Pelo menos um dos chamadores mais acima na pilha de chamadas não tem permissão para configurar tipos e canais de remoto.

Exemplos

O exemplo de código seguinte demonstra o registo 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, veja 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 seguinte exemplo de código mostra o objeto de serviço registado 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

Observações

Para criar uma instância de um objeto ativado pelo cliente no servidor, deve saber o que Type é e deve ser registado no lado 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 registar um canal com ChannelServices e depois ativar o objeto chamando new ou Activator.CreateInstance.

Para ativar um tipo de objeto ativado pelo cliente com a new palavra-chave, deve primeiro registar o tipo de objeto na extremidade do cliente usando o RegisterActivatedClientType método. Chamar o RegisterActivatedClientType método dá à infraestrutura remota a localização da aplicação remota, onde new tenta criá-la. Se, por outro lado, usar o CreateInstance método para criar uma nova instância do objeto ativado pelo cliente, deve fornecer a URL da aplicação remota como parâmetro, pelo que não é necessário registo prévio do lado do cliente. Para fornecer ao CreateInstance método a URL do servidor onde pretende criar o objeto, deve encapsular a URL numa instância da UrlAttribute classe.

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

Ver também

Aplica-se a