Partager via


RemotingConfiguration.RegisterActivatedServiceType Méthode

Définition

Inscrit un Type d'objet sur le service comme type qui peut être activé à la demande à partir d'un client.

Surcharges

RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Inscrit un type d'objet enregistré dans le ActivatedServiceTypeEntry fourni sur le service comme type pouvant être activé à la demande à partir d'un client.

RegisterActivatedServiceType(Type)

Inscrit un type d'objet spécifié sur le service comme type qui peut être activé à la demande à partir d'un client.

RegisterActivatedServiceType(ActivatedServiceTypeEntry)

Inscrit un type d'objet enregistré dans le ActivatedServiceTypeEntry fourni sur le service comme type pouvant être activé à la demande à partir d'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)

Paramètres

entry
ActivatedServiceTypeEntry

Paramètres de configuration du type activé par le client.

Exceptions

Au moins un des appelants à un niveau plus élevé dans la pile des appels n'a pas l'autorisation de configuration des types et des canaux de communication à distance.

Remarques

Pour créer une instance d’un objet activé par le client sur le serveur, vous devez le connaître Type et il doit être inscrit à l’extrémité du serveur à l’aide de la RegisterActivatedServiceType méthode . Pour obtenir un proxy pour une nouvelle instance de l’objet activé par le client, le client doit d’abord inscrire un canal avec ChannelServices , puis activer l’objet en appelant new ou Activator.CreateInstance.

Pour activer un type d’objet activé par le client avec le new mot clé, vous devez d’abord inscrire le type d’objet à l’extrémité du client à l’aide de la RegisterActivatedClientType méthode . L’appel de la RegisterActivatedClientType méthode donne à l’infrastructure de communication à distance l’emplacement de l’application distante, où new tente de la créer. Si, en revanche, vous utilisez la CreateInstance méthode pour créer une nouvelle instance de l’objet activé par le client, vous devez fournir l’URL de l’application distante en tant que paramètre. Aucune inscription préalable n’est donc nécessaire au niveau du client. Pour fournir à la CreateInstance méthode l’URL du serveur sur lequel vous souhaitez créer l’objet, vous devez encapsuler l’URL dans une instance de la UrlAttribute classe .

Pour obtenir une description détaillée des objets activés par le client, consultez Activation du client.

Voir aussi

S’applique à

RegisterActivatedServiceType(Type)

Inscrit un type d'objet spécifié sur le service comme type qui peut être activé à la demande à partir d'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)

Paramètres

type
Type

Type d'objets à inscrire.

Exceptions

Au moins un des appelants à un niveau plus élevé dans la pile des appels n'a pas l'autorisation de configuration des types et des canaux de communication à distance.

Exemples

L’exemple de code suivant illustre l’inscription d’un type d’objet sur le serveur en tant que type qui peut être activé par le client. Pour obtenir le code client qui correspond au code serveur présenté, consultez l’exemple de la RegisterActivatedClientType méthode .

#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

L’exemple de code suivant montre l’objet de service inscrit dans l’exemple de code ci-dessus.

#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

Remarques

Pour créer une instance d’un objet activé par le client sur le serveur, vous devez le connaître Type et il doit être inscrit à l’extrémité du serveur à l’aide de la RegisterActivatedServiceType méthode . Pour obtenir un proxy pour une nouvelle instance de l’objet activé par le client, le client doit d’abord inscrire un canal avec ChannelServices , puis activer l’objet en appelant new ou Activator.CreateInstance.

Pour activer un type d’objet activé par le client avec le new mot clé, vous devez d’abord inscrire le type d’objet à l’extrémité du client à l’aide de la RegisterActivatedClientType méthode . L’appel de la RegisterActivatedClientType méthode donne à l’infrastructure de communication à distance l’emplacement de l’application distante, où new tente de la créer. Si, en revanche, vous utilisez la CreateInstance méthode pour créer une nouvelle instance de l’objet activé par le client, vous devez fournir l’URL de l’application distante en tant que paramètre. Aucune inscription préalable n’est donc nécessaire au niveau du client. Pour fournir à la CreateInstance méthode l’URL du serveur sur lequel vous souhaitez créer l’objet, vous devez encapsuler l’URL dans une instance de la UrlAttribute classe .

Pour obtenir une description détaillée des objets activés par le client, consultez Activation du client.

Voir aussi

S’applique à