RemotingConfiguration.RegisterWellKnownServiceType RemotingConfiguration.RegisterWellKnownServiceType RemotingConfiguration.RegisterWellKnownServiceType RemotingConfiguration.RegisterWellKnownServiceType Method

Définition

Inscrit un Type d'objet sur le service comme type connu (appel unique ou singleton).Registers an object Type on the service end as a well-known type (single call or singleton).

Surcharges

RegisterWellKnownServiceType(WellKnownServiceTypeEntry) RegisterWellKnownServiceType(WellKnownServiceTypeEntry) RegisterWellKnownServiceType(WellKnownServiceTypeEntry) RegisterWellKnownServiceType(WellKnownServiceTypeEntry)

Inscrit un Type d'objet enregistré dans le WellKnownServiceTypeEntry fourni sur le service comme type connu.Registers an object Type recorded in the provided WellKnownServiceTypeEntry on the service end as a well-known type.

RegisterWellKnownServiceType(Type, String, WellKnownObjectMode) RegisterWellKnownServiceType(Type, String, WellKnownObjectMode) RegisterWellKnownServiceType(Type, String, WellKnownObjectMode)

Inscrit un Type d'objet sur le service comme type connu, en utilisant les paramètres spécifiés pour initialiser une nouvelle instance de la classe WellKnownServiceTypeEntry.Registers an object Type on the service end as a well-known type, using the given parameters to initialize a new instance of WellKnownServiceTypeEntry.

RegisterWellKnownServiceType(WellKnownServiceTypeEntry) RegisterWellKnownServiceType(WellKnownServiceTypeEntry) RegisterWellKnownServiceType(WellKnownServiceTypeEntry) RegisterWellKnownServiceType(WellKnownServiceTypeEntry)

Inscrit un Type d'objet enregistré dans le WellKnownServiceTypeEntry fourni sur le service comme type connu.Registers an object Type recorded in the provided WellKnownServiceTypeEntry on the service end as a well-known type.

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

Paramètres

entry
WellKnownServiceTypeEntry WellKnownServiceTypeEntry WellKnownServiceTypeEntry WellKnownServiceTypeEntry

Paramètres de configuration pour le type connu.Configuration settings for the well-known type.

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.At least one of the callers higher in the callstack does not have permission to configure remoting types and channels.

Exemples

#using <system.dll>
#using <system.runtime.remoting.dll>

using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Http;
using namespace System::Runtime::Remoting::Messaging;
using namespace System::Runtime::Serialization;

public ref class RemoteObject: public MarshalByRefObject
{
public:
   void Method1( LocalObject^ param )
   {
      Console::WriteLine( "Invoked: Method1( {0})", param );
   }
};

int main()
{
   ChannelServices::RegisterChannel( gcnew HttpChannel( 8090 ) );
   WellKnownServiceTypeEntry^ wkste = gcnew WellKnownServiceTypeEntry( RemoteObject::typeid,"RemoteObject",WellKnownObjectMode::Singleton );
   RemotingConfiguration::RegisterWellKnownServiceType( wkste );
   RemoteObject^ RObj = dynamic_cast<RemoteObject^>(Activator::GetObject( RemoteObject::typeid, "http://localhost:8090/RemoteObject" ));
   LocalObject^ LObj = gcnew LocalObject;
   RObj->Method1( LObj );
   Console::WriteLine( "Press Return to exit..." );
   Console::ReadLine();
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;
using System.Runtime.Remoting.Messaging;
using System.Runtime.Serialization;
using System.Security.Permissions;

public class ObjRefExample {

   [PermissionSet(SecurityAction.LinkDemand)]
   public static void Main() {

      ChannelServices.RegisterChannel(new HttpChannel(8090));

      WellKnownServiceTypeEntry wkste = 
         new WellKnownServiceTypeEntry(typeof(RemoteObject), 
                                       "RemoteObject", 
                                       WellKnownObjectMode.Singleton);
      
      RemotingConfiguration.RegisterWellKnownServiceType( wkste );

      RemoteObject RObj = 
         (RemoteObject)Activator.GetObject(typeof(RemoteObject), 
                                           "http://localhost:8090/RemoteObject");

      LocalObject LObj = new LocalObject();
      
      RObj.Method1( LObj );

      Console.WriteLine("Press Return to exit...");
      Console.ReadLine();
   }
}

[PermissionSet(SecurityAction.Demand, Name="FullTrust")] 
public class RemoteObject : MarshalByRefObject {

   public void Method1(LocalObject param) {
      Console.WriteLine("Invoked: Method1({0})", param);
   }
}
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Http
Imports System.Runtime.Remoting.Messaging
Imports System.Runtime.Serialization
Imports System.Security.Permissions

' code that drives the example
Public Class ObjRefExample

   <PermissionSet(SecurityAction.LinkDemand)> _
   Public Overloads Shared Sub Main()
      ChannelServices.RegisterChannel(New HttpChannel(8090))

      RemotingConfiguration.RegisterWellKnownServiceType(New WellKnownServiceTypeEntry(GetType(RemoteObject), "RemoteObject", WellKnownObjectMode.Singleton))

      Dim RObj As RemoteObject = CType(Activator.GetObject(GetType(RemoteObject), "http://localhost:8090/RemoteObject"), RemoteObject)
      Dim LObj As New LocalObject()

      RObj.Method1(LObj)

      Console.WriteLine("Press Return to exit...")

      Console.ReadLine()
   End Sub

End Class


' a simple remote object
<PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
Public Class RemoteObject
   Inherits MarshalByRefObject

   Public Sub Method1(ByVal param As LocalObject)
       Console.WriteLine("Invoked: Method1({0})", param)
   End Sub

End Class

Remarques

Tout client connaissant l’URI d’un objet connu inscrit peut obtenir un proxy pour l’objet en inscrivant le canal qu’il préfère ChannelServices, et en activant l’objet en appelant new ou la Activator.GetObject méthode.Any client that knows the URI of a registered well-known object can obtain a proxy for the object by registering the channel it prefers with ChannelServices, and activating the object by calling new or the Activator.GetObject method. Pour activer un objet connu avec new, vous devez d’abord inscrire le type d’objet connu sur le client à l’aide de la RegisterWellKnownClientType méthode.To activate a well-known object with new, you must first register the well-known object type on the client using the RegisterWellKnownClientType method. L’appel RegisterWellKnownClientType de la méthode donne à l’infrastructure de communication à distance l’emplacement de l’objet new distant, ce qui permet au mot clé de la créer.Calling the RegisterWellKnownClientType method gives the remoting infrastructure the location of the remote object, which allows the new keyword to create it. Si, en revanche, vous utilisez la Activator.GetObject méthode pour activer l’objet connu, vous devez lui fournir l’URL de l’objet en tant qu’argument, de sorte qu’aucune inscription antérieure côté client ne soit nécessaire.If, on the other hand, you use the Activator.GetObject method to activate the well-known object, you must supply it with the object's URL as an argument, so no prior registration on the client end is necessary.

Lorsque l’appel arrive sur le serveur, le .NET Framework extrait l’URI du message, examine les tables de communication à distance pour trouver la référence de l’objet qui correspond à l’URI, puis instancie l’objet si nécessaire, en transférant l’appel de méthode à l’objet.When the call arrives at the server, the .NET Framework extracts the URI from the message, examines the remoting tables to locate the reference for the object that matches the URI, and then instantiates the object if necessary, forwarding the method call to the object. Si l’objet est inscrit en SingleCalltant que, il est détruit une fois l’appel de méthode terminé.If the object is registered as SingleCall, it is destroyed after the method call is completed. Une nouvelle instance de l’objet est créée pour chaque méthode appelée.A new instance of the object is created for each method called. La seule différence entre Activator.GetObject et new est que la première vous permet de spécifier une URL en tant que paramètre et que la dernière obtient l’URL à partir de la configuration.The only difference between Activator.GetObject and new is that the former allows you to specify a URL as a parameter, and the latter obtains the URL from the configuration.

L’objet distant lui-même n’est pas instancié par le processus d’inscription.The remote object itself is not instantiated by the registration process. Cela se produit uniquement lorsqu’un client tente d’appeler une méthode sur l’objet ou active l’objet du côté client.This only happens when a client attempts to call a method on the object or activates the object from the client side.

Pour obtenir une description détaillée des objets connus, consultez activation du serveur.For a detailed description of well-known objects, see Server Activation.

Sécurité

SecurityPermission
pour la configuration de l’infrastructure de communication à distance.for configuration of the remoting infrastructure. Valeur de la Demanddemande:; Valeur d’autorisation:RemotingConfigurationDemand value: Demand; Permission value: RemotingConfiguration

Voir aussi

RegisterWellKnownServiceType(Type, String, WellKnownObjectMode) RegisterWellKnownServiceType(Type, String, WellKnownObjectMode) RegisterWellKnownServiceType(Type, String, WellKnownObjectMode)

Inscrit un Type d'objet sur le service comme type connu, en utilisant les paramètres spécifiés pour initialiser une nouvelle instance de la classe WellKnownServiceTypeEntry.Registers an object Type on the service end as a well-known type, using the given parameters to initialize a new instance of WellKnownServiceTypeEntry.

public:
 static void RegisterWellKnownServiceType(Type ^ type, System::String ^ objectUri, System::Runtime::Remoting::WellKnownObjectMode mode);
public static void RegisterWellKnownServiceType (Type type, string objectUri, System.Runtime.Remoting.WellKnownObjectMode mode);
static member RegisterWellKnownServiceType : Type * string * System.Runtime.Remoting.WellKnownObjectMode -> unit

Paramètres

type
Type Type Type Type

Type d'objet.The object Type.

objectUri
String String String String

URI de l'objet.The object URI.

mode
WellKnownObjectMode WellKnownObjectMode WellKnownObjectMode WellKnownObjectMode

Mode d'activation du type d'objet connu qui est inscrit.The activation mode of the well-known object type being registered. (Consultez WellKnownObjectMode.)(See WellKnownObjectMode.)

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.At least one of the callers higher in the callstack does not have permission to configure remoting types and channels.

Exemples

L’exemple de code suivant illustre l’inscription d’un type d’objet sur le serveur en tant que type d’objet connu.The following code example demonstrates registration of an object type on the server as a well-known object type. Pour le code client qui correspond au code serveur présenté, consultez l’exemple de la RegisterWellKnownClientType méthode.For the client code that corresponds to the presented server code, see the example for the RegisterWellKnownClientType method.

#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()
{
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

public class ServerClass {

    public static void Main()  {

Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp


Public Class ServerClass
   
   Public Shared Sub Main()

ChannelServices::RegisterChannel( gcnew TcpChannel( 8082 ) );
RemotingConfiguration::ApplicationName = "HelloServiceApplication";
RemotingConfiguration::RegisterWellKnownServiceType( HelloService::typeid,
                                                     "MyUri",
                                                     WellKnownObjectMode::SingleCall );
ChannelServices.RegisterChannel(new TcpChannel(8082));

RemotingConfiguration.ApplicationName = "HelloServiceApplication";

RemotingConfiguration.RegisterWellKnownServiceType( typeof(HelloService),
                                                    "MyUri",
                                                    WellKnownObjectMode.SingleCall 
                                                  );
ChannelServices.RegisterChannel(New TcpChannel(8082))

RemotingConfiguration.ApplicationName = "HelloServiceApplication"

RemotingConfiguration.RegisterWellKnownServiceType(GetType(HelloService), "MyUri", WellKnownObjectMode.SingleCall)
   Console::WriteLine( "Press enter to stop this process." );
   Console::ReadLine();
   return 0;
}

        Console.WriteLine("Press enter to stop this process.");
        Console.ReadLine();
    }
}

      Console.WriteLine("Press enter to stop this process.")
      Console.ReadLine()

   End Sub 'Main

End Class 'ServerClass

L’exemple de code suivant montre l’objet de service enregistré dans l’exemple de code ci-dessus.The following code example shows the service object registered in the sample code above.

#using <system.dll>

using namespace System;
public ref class HelloService: public MarshalByRefObject
{
private:
   static int n_instances;

public:
   HelloService()
   {
      n_instances++;
      Console::WriteLine( "" );
      Console::WriteLine( "HelloService activated - instance # {0}.", n_instances );
   }

   ~HelloService()
   {
      Console::WriteLine( "HelloService instance {0} destroyed.", n_instances );
      n_instances--;
   }

   String^ HelloMethod( String^ name )
   {
      Console::WriteLine( "HelloMethod called on HelloService instance {0}.", n_instances );
      return String::Format( "Hi there {0}.", name );
   }

};

using System;

public class HelloService : MarshalByRefObject {

    static int n_instances;

    public HelloService() {
        n_instances++;
        Console.WriteLine("");
        Console.WriteLine("HelloService activated - instance # {0}.", n_instances);
    }


    ~HelloService()  {
        Console.WriteLine("HelloService instance {0} destroyed.", n_instances);
        n_instances--;
    }


    public String HelloMethod(String name)  {

        Console.WriteLine("HelloMethod called on HelloService instance {0}.", n_instances);
        return "Hi there " + name + ".";
    }
}
Public Class HelloService
   Inherits MarshalByRefObject
   
   Private Shared n_instances As Integer
     
   Public Sub New()
      n_instances += 1
      Console.WriteLine("")
      Console.WriteLine("HelloService activated - instance # {0}.", n_instances)
   End Sub 'New
   
   
   Protected Overrides Sub Finalize()
      Console.WriteLine("HelloService instance {0} destroyed.", n_instances)
      n_instances -= 1
      MyBase.Finalize()
   End Sub 'Finalize
   
   
   Public Function HelloMethod(name As [String]) As [String]
      Console.WriteLine("HelloMethod called on HelloService instance {0}.", n_instances)
      Return "Hi there " + name + "."
   End Function 'HelloMethod

End Class 'HelloService

Remarques

Tout client connaissant l’URI d’un objet connu inscrit peut obtenir un proxy pour l’objet en inscrivant le canal qu’il préfère ChannelServices, et en activant l’objet en appelant new ou la Activator.GetObject méthode.Any client that knows the URI of a registered well-known object can obtain a proxy for the object by registering the channel it prefers with ChannelServices, and activating the object by calling new or the Activator.GetObject method. Pour activer un objet connu avec new, vous devez d’abord inscrire le type d’objet connu sur le client à l’aide de la RegisterWellKnownClientType méthode.To activate a well-known object with new, you must first register the well-known object type on the client using the RegisterWellKnownClientType method. L’appel RegisterWellKnownClientType de la méthode donne à l’infrastructure de communication à distance l’emplacement de l’objet new distant, ce qui permet au mot clé de la créer.Calling the RegisterWellKnownClientType method gives the remoting infrastructure the location of the remote object, which allows the new keyword to create it. Si, en revanche, vous utilisez la Activator.GetObject méthode pour activer l’objet connu, vous devez lui fournir l’URL de l’objet en tant qu’argument, de sorte qu’aucune inscription antérieure côté client ne soit nécessaire.If, on the other hand, you use the Activator.GetObject method to activate the well-known object, you must supply it with the object's URL as an argument, so no prior registration on the client end is necessary.

Lorsque l’appel arrive sur le serveur, le .NET Framework extrait l’URI du message, examine les tables de communication à distance pour trouver la référence de l’objet qui correspond à l’URI, puis instancie l’objet si nécessaire, en transférant l’appel de méthode à l’objet.When the call arrives at the server, the .NET Framework extracts the URI from the message, examines the remoting tables to locate the reference for the object that matches the URI, and then instantiates the object if necessary, forwarding the method call to the object. Si l’objet est inscrit en SingleCalltant que, il est détruit une fois l’appel de méthode terminé.If the object is registered as SingleCall, it is destroyed after the method call is completed. Une nouvelle instance de l’objet est créée pour chaque méthode appelée.A new instance of the object is created for each method called. La seule différence entre Activator.GetObject et new est que la première vous permet de spécifier une URL en tant que paramètre et que la dernière obtient l’URL à partir de la configuration.The only difference between Activator.GetObject and new is that the former allows you to specify a URL as a parameter, and the latter obtains the URL from the configuration.

L’objet distant lui-même n’est pas instancié par le processus d’inscription.The remote object itself is not instantiated by the registration process. Cela se produit uniquement lorsqu’un client tente d’appeler une méthode sur l’objet ou active l’objet du côté client.This only happens when a client attempts to call a method on the object or activates the object from the client side.

Pour obtenir une description détaillée des objets connus, consultez activation du serveur.For a detailed description of well-known objects, see Server Activation.

Sécurité

SecurityPermission
pour la configuration de l’infrastructure de communication à distance.for configuration of the remoting infrastructure. Valeur de la Demanddemande:; Valeur d’autorisation:RemotingConfigurationDemand value: Demand; Permission value: RemotingConfiguration

Voir aussi

S’applique à