RemotingConfiguration.RegisterActivatedServiceType Metodo

Definizione

Registra un oggetto Type sul lato servizio come tipo attivabile su richiesta da un client.

Overload

RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Registra un tipo di oggetto registrato nell'oggetto ActivatedServiceTypeEntry fornito sul lato servizio come tipo attivabile su richiesta da un client.

RegisterActivatedServiceType(Type)

Registra un tipo di oggetto specificato sul lato servizio come tipo attivabile su richiesta da un client.

RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Registra un tipo di oggetto registrato nell'oggetto ActivatedServiceTypeEntry fornito sul lato servizio come tipo attivabile su richiesta da un client.

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)

Parametri

entry
ActivatedServiceTypeEntry

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 o Activator.CreateInstance.

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 RegisterActivatedClientType metodo fornisce all'infrastruttura remota la posizione dell'applicazione remota, in cui new tenta di crearla. Se invece si usa il 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 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

RegisterActivatedServiceType(Type)

Registra un tipo di oggetto specificato sul lato servizio come tipo attivabile su richiesta da un client.

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

Parametri

type
Type

Type dell'oggetto da registrare.

Eccezioni

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 nel server come tipo che può essere attivato dal client. Per il codice client che corrisponde al codice del server presentato, vedere l'esempio per il RegisterActivatedClientType 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( 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

Nell'esempio di codice seguente viene illustrato l'oggetto servizio registrato nel codice di esempio precedente.

#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

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 o Activator.CreateInstance.

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 RegisterActivatedClientType metodo fornisce all'infrastruttura remota la posizione dell'applicazione remota, in cui new tenta di crearla. Se invece si usa il 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 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