RemotingConfiguration.RegisterActivatedServiceType Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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
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.