Compartir a través de


RemotingConfiguration.RegisterActivatedServiceType Método

Definición

Registra un Type de objeto en el servicio como un tipo que se puede activar a petición del cliente.

Sobrecargas

RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Registra un tipo de objeto registrado en el ActivatedServiceTypeEntry proporcionado en el servicio como un tipo que se puede activar a petición del cliente.

RegisterActivatedServiceType(Type)

Registra un tipo de objeto especificado en el servicio como un tipo que se puede activar a petición del cliente.

RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Registra un tipo de objeto registrado en el ActivatedServiceTypeEntry proporcionado en el servicio como un tipo que se puede activar a petición del 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

Valores de configuración del tipo activado en el cliente.

Excepciones

Al menos uno de los llamadores situados en la parte superior de la pila de llamadas no tiene permiso para configurar los tipos y canales de comunicación remota.

Comentarios

Para crear una instancia de un objeto activado por el cliente en el servidor, debe conocer su Type y debe registrarse en el servidor mediante el RegisterActivatedServiceType método . Para obtener un proxy para una nueva instancia del objeto activado por el cliente, el cliente primero debe registrar un canal con ChannelServices y, a continuación, activar el objeto mediante una llamada a new o Activator.CreateInstance.

Para activar un tipo de objeto activado por el cliente con la new palabra clave , primero debe registrar el tipo de objeto en el cliente mediante el RegisterActivatedClientType método . Llamar al RegisterActivatedClientType método proporciona a la infraestructura de comunicación remota la ubicación de la aplicación remota, donde new intenta crearla. Por otro lado, si usa el CreateInstance método para crear una nueva instancia del objeto activado por el cliente, debe proporcionar la dirección URL de la aplicación remota como parámetro, por lo que no es necesario registrar previamente en el extremo del cliente. Para proporcionar el CreateInstance método con la dirección URL del servidor donde desea crear el objeto, debe encapsular la dirección URL en una instancia de la UrlAttribute clase .

Para obtener una descripción detallada de los objetos activados por el cliente, consulte Activación de cliente.

Consulte también

Se aplica a

RegisterActivatedServiceType(Type)

Registra un tipo de objeto especificado en el servicio como un tipo que se puede activar a petición del 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

Type de objeto que se va a registrar.

Excepciones

Al menos uno de los llamadores situados en la parte superior de la pila de llamadas no tiene permiso para configurar los tipos y canales de comunicación remota.

Ejemplos

En el ejemplo de código siguiente se muestra el registro de un tipo de objeto en el servidor como un tipo que el cliente puede activar. Para el código de cliente que corresponde al código de servidor presentado, vea el ejemplo del 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

En el ejemplo de código siguiente se muestra el objeto de servicio registrado en el código de ejemplo anterior.

#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

Comentarios

Para crear una instancia de un objeto activado por el cliente en el servidor, debe conocer su Type y debe registrarse en el servidor mediante el RegisterActivatedServiceType método . Para obtener un proxy para una nueva instancia del objeto activado por el cliente, el cliente primero debe registrar un canal con ChannelServices y, a continuación, activar el objeto mediante una llamada a new o Activator.CreateInstance.

Para activar un tipo de objeto activado por el cliente con la new palabra clave , primero debe registrar el tipo de objeto en el cliente mediante el RegisterActivatedClientType método . Llamar al RegisterActivatedClientType método proporciona a la infraestructura de comunicación remota la ubicación de la aplicación remota, donde new intenta crearla. Por otro lado, si usa el CreateInstance método para crear una nueva instancia del objeto activado por el cliente, debe proporcionar la dirección URL de la aplicación remota como parámetro, por lo que no es necesario registrar previamente en el extremo del cliente. Para proporcionar el CreateInstance método con la dirección URL del servidor donde desea crear el objeto, debe encapsular la dirección URL en una instancia de la UrlAttribute clase .

Para obtener una descripción detallada de los objetos activados por el cliente, consulte Activación de cliente.

Consulte también

Se aplica a