Condividi tramite


RemotingConfiguration.RegisterActivatedClientType Metodo

Definizione

Registra un oggetto Type sul lato client come tipo attivabile sul server.

Overload

RegisterActivatedClientType(ActivatedClientTypeEntry)

Registra un oggetto Type registrato nell'oggetto ActivatedClientTypeEntry specificato sul lato client come tipo attivabile sul server.

RegisterActivatedClientType(Type, String)

Registra un oggetto Type sul lato client come tipo attivabile sul server utilizzando i parametri specificati per inizializzare una nuova istanza della classe ActivatedClientTypeEntry.

RegisterActivatedClientType(ActivatedClientTypeEntry)

Registra un oggetto Type registrato nell'oggetto ActivatedClientTypeEntry specificato sul lato client come tipo attivabile sul server.

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

Parametri

entry
ActivatedClientTypeEntry

Impostazioni di configurazione per il tipo attivato dal client.

Eccezioni

Almeno uno dei chiamanti in posizione più elevata nello stack di chiamate non dispone delle autorizzazioni alla configurazione di canali e tipi remoti.

Commenti

Per creare un'istanza di un oggetto attivato dal client nel server, è necessario conoscerne e registrarla Type sul server finale usando il RegisterActivatedServiceType metodo . Per ottenere un proxy per una nuova istanza dell'oggetto attivato dal client, il client deve prima registrare un canale con ChannelServices e quindi attivare l'oggetto chiamando new.

Per attivare un tipo di oggetto attivato dal client con la new parola chiave , è prima necessario registrare il tipo di oggetto sul lato client usando il RegisterActivatedClientType metodo . La chiamata al metodo fornisce all'infrastruttura RegisterActivatedClientType remota la posizione dell'applicazione remota in cui new tenta di crearla. Se invece si usa il Activator.CreateInstance metodo per creare una nuova istanza dell'oggetto attivato dal client, è necessario specificare l'URL dell'applicazione remota come parametro, quindi non è necessaria alcuna registrazione precedente sul lato client. Per specificare il Activator.CreateInstance metodo con l'URL del server in cui si vuole creare l'oggetto, è necessario incapsulare l'URL in un'istanza della UrlAttribute classe .

Per una descrizione dettagliata degli oggetti attivati dal client, vedere Attivazione client.

Vedi anche

Si applica a

RegisterActivatedClientType(Type, String)

Registra un oggetto Type sul lato client come tipo attivabile sul server utilizzando i parametri specificati per inizializzare una nuova istanza della classe ActivatedClientTypeEntry.

public:
 static void RegisterActivatedClientType(Type ^ type, System::String ^ appUrl);
public static void RegisterActivatedClientType (Type type, string appUrl);
static member RegisterActivatedClientType : Type * string -> unit
Public Shared Sub RegisterActivatedClientType (type As Type, appUrl As String)

Parametri

type
Type

Oggetto Type.

appUrl
String

URL dell'applicazione in cui è attivato questo tipo.

Eccezioni

Il parametro typeName o il parametro URI è null.

Almeno uno dei chiamanti in posizione più elevata nello stack di chiamate non dispone delle autorizzazioni alla configurazione di canali e tipi remoti.

Esempio

Nell'esempio di codice seguente viene illustrata la registrazione di un tipo di oggetto sul lato client come tipo che può essere attivato nel server. Per il codice del server corrispondente al codice client presentato, vedere l'esempio per il RegisterActivatedServiceType metodo .

#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 );
   RemotingConfiguration::RegisterActivatedClientType( HelloServiceClass::typeid, "tcp://localhost:8082" );
   try
   {
      HelloServiceClass ^ service = gcnew HelloServiceClass;

      // Calls the remote method.
      Console::WriteLine();
      Console::WriteLine( "Calling remote Object" );
      Console::WriteLine( service->HelloMethod( "Caveman" ) );
      Console::WriteLine( service->HelloMethod( "Spaceman" ) );
      Console::WriteLine( service->HelloMethod( "Client Man" ) );
      Console::WriteLine( "Finished remote Object call" );
    }
    catch (Exception ex)
    {
        Console::WriteLine("An exception occurred: " + ex.Message);
    }
   Console::WriteLine();
   return 0;
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

public class ClientClass {

    public static void Main() {

        ChannelServices.RegisterChannel(new TcpChannel());

        RemotingConfiguration.RegisterActivatedClientType(typeof(HelloServiceClass),
                                                   "tcp://localhost:8082");

        try
        {
            HelloServiceClass service = new HelloServiceClass();

           // Calls the remote method.
           Console.WriteLine();
           Console.WriteLine("Calling remote object");
           Console.WriteLine(service.HelloMethod("Caveman"));
           Console.WriteLine(service.HelloMethod("Spaceman"));
           Console.WriteLine(service.HelloMethod("Client Man"));
           Console.WriteLine("Finished remote object call");
           Console.WriteLine();
        }
    catch (Exception ex)
    {
       Console.WriteLine("An exception occurred: " + ex.Message);
        }
    }
}
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp


Public Class ClientClass
   
   Public Shared Sub Main()
      
      ChannelServices.RegisterChannel(New TcpChannel())
      
      RemotingConfiguration.RegisterActivatedClientType(GetType(HelloServiceClass), "tcp://localhost:8082")
      
      Try
          Dim service As New HelloServiceClass()
      
       
          ' Calls the remote method.
          Console.WriteLine()
          Console.WriteLine("Calling remote object")
          Console.WriteLine(service.HelloMethod("Caveman"))
          Console.WriteLine(service.HelloMethod("Spaceman"))
          Console.WriteLine(service.HelloMethod("Client Man"))
          Console.WriteLine("Finished remote object call")
      Catch ex as Exception
          Console.WriteLine("An exception occurred: " + ex.Message)
      End Try

      Console.WriteLine()

   End Sub

End Class

Commenti

Per creare un'istanza di un oggetto attivato dal client nel server, è necessario conoscerne e registrarla Type sul server finale usando il RegisterActivatedServiceType metodo . Per ottenere un proxy per una nuova istanza dell'oggetto attivato dal client, il client deve prima registrare un canale con ChannelServices e quindi attivare l'oggetto chiamando new.

Per attivare un tipo di oggetto attivato dal client con la new parola chiave , è prima necessario registrare il tipo di oggetto sul lato client usando il RegisterActivatedClientType metodo . La chiamata al metodo fornisce all'infrastruttura RegisterActivatedClientType remota la posizione dell'applicazione remota in cui new tenta di crearla. Se invece si usa il Activator.CreateInstance metodo per creare una nuova istanza dell'oggetto attivato dal client, è necessario specificare l'URL dell'applicazione remota come parametro, quindi non è necessaria alcuna registrazione precedente sul lato client. Per specificare il Activator.CreateInstance metodo con l'URL del server in cui si vuole creare l'oggetto, è necessario incapsulare l'URL in un'istanza della UrlAttribute classe .

Per una descrizione dettagliata degli oggetti attivati dal client, vedere Attivazione client.

Vedi anche

Si applica a