Condividi tramite


RemotingConfiguration.RegisterActivatedServiceType Metodo

Definizione

Registra un oggetto sul lato servizio come un oggetto Type che può essere attivato su richiesta da un client.

Overload

Nome Descrizione
RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Registra un tipo di oggetto registrato nell'oggetto fornito ActivatedServiceTypeEntry sul lato servizio come uno che può essere attivato su richiesta da un client.

RegisterActivatedServiceType(Type)

Registra un tipo di oggetto specificato nell'endpoint del servizio come tipo che può essere attivato su richiesta da un client.

RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Registra un tipo di oggetto registrato nell'oggetto fornito ActivatedServiceTypeEntry sul lato servizio come uno che può essere attivato 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 più in alto nello stack di chiamate non dispone dell'autorizzazione per configurare tipi e canali remoti.

Commenti

Per creare un'istanza di un oggetto attivato dal client nel server, è necessario conoscerne e registrarla Type sul lato server 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 fornire al CreateInstance metodo l'URL del server in cui si desidera creare l'oggetto, è necessario incapsulare l'URL in un'istanza della UrlAttribute classe .

Vedi anche

Si applica a

RegisterActivatedServiceType(Type)

Registra un tipo di oggetto specificato nell'endpoint del servizio come tipo che può essere attivato 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

Oggetto Type dell'oggetto da registrare.

Eccezioni

Almeno uno dei chiamanti più in alto nello stack di chiamate non dispone dell'autorizzazione per configurare tipi e canali 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 lato server 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 fornire al CreateInstance metodo l'URL del server in cui si desidera creare l'oggetto, è necessario incapsulare l'URL in un'istanza della UrlAttribute classe .

Vedi anche

Si applica a