Partager via


IpcServerChannel Classe

Définition

Implémente pour les appels distants un canal serveur qui utilise le système IPC pour transmettre des messages.

public ref class IpcServerChannel : System::Runtime::Remoting::Channels::IChannelReceiver, System::Runtime::Remoting::Channels::ISecurableChannel
public class IpcServerChannel : System.Runtime.Remoting.Channels.IChannelReceiver, System.Runtime.Remoting.Channels.ISecurableChannel
type IpcServerChannel = class
    interface IChannelReceiver
    interface IChannel
    interface ISecurableChannel
Public Class IpcServerChannel
Implements IChannelReceiver, ISecurableChannel
Héritage
IpcServerChannel
Implémente

Exemples

L’exemple de code suivant montre comment utiliser la IpcServerChannel classe .

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

using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Ipc;

public ref class IpcServer
{
public:
   void IpcServerTest()
   {
      // Create and register an IPC channel
      IpcServerChannel^ serverChannel = gcnew IpcServerChannel( L"remote" );
      ChannelServices::RegisterChannel( serverChannel );

      // Expose an object
      RemotingConfiguration::RegisterWellKnownServiceType( Counter::typeid, L"counter", WellKnownObjectMode::Singleton );
      
      // Wait for calls
      Console::WriteLine( L"Listening on {0}", serverChannel->GetChannelUri() );

      Console::ReadLine();
   }
};

int main()
{
   IpcServer^ is = gcnew IpcServer;
   is->IpcServerTest();
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Ipc;

public class IpcServer
{

    public static void Main ()
    {
        // Create and register an IPC channel
        IpcServerChannel serverChannel = new IpcServerChannel("remote");
        ChannelServices.RegisterChannel(serverChannel);

        // Expose an object
        RemotingConfiguration.RegisterWellKnownServiceType( typeof(Counter), "counter", WellKnownObjectMode.Singleton );

        // Wait for calls
        Console.WriteLine("Listening on {0}", serverChannel.GetChannelUri());
        Console.ReadLine();
    }
}

Le code précédent est utilisé pour exposer l’objet distant suivant.

using namespace System;
public ref class Counter: public MarshalByRefObject
{
private:
   int count;

public:
   Counter()
   {
      count = 0;
   }

   property int Count 
   {
      int get()
      {
         return (count)++;
      }
   }
};
using System;

public class Counter : MarshalByRefObject {

  private int count = 0;

  public int Count { get {
    return(count++);
  } }
}

Pour obtenir un exemple de client utilisant cet objet à distance, consultez IpcClientChannel.

Remarques

Important

L’appel de méthodes de cette classe avec des données non approuvées est un risque de sécurité. Appelez les méthodes de cette classe avec des données approuvées uniquement. Pour plus d’informations, consultez Valider toutes les entrées.

Les canaux sont utilisés par l’infrastructure de communication à distance .NET Framework pour transporter les appels distants. Lorsqu’un client appelle un objet distant, l’appel est sérialisé dans un message envoyé par un canal client et reçu par un canal serveur. Une fois le message reçu, il est désérialisé et traité. Toutes les valeurs retournées sont transmises par le canal serveur et reçues par le canal client.

La IpcServerChannel classe utilise le système de communication interprocessus Windows (IPC) pour transporter des messages entre des domaines d’application sur le même ordinateur. Lorsque vous communiquez entre des domaines d’application sur le même ordinateur, le canal IPC est beaucoup plus rapide que les canaux TCP ou HTTP.

Pour effectuer un traitement supplémentaire des messages côté serveur, spécifiez une implémentation de l’interface IServerChannelSinkProvider par laquelle tous les messages traités par l’instance IpcServerChannel sont passés.

L’instance IpcServerChannel accepte les messages sérialisés au format binaire ou SOAP.

Un IpcServerChannel objet a des propriétés de configuration associées qui peuvent être définies au moment de l’exécution IpcServerChannel dans un fichier de configuration (en appelant la méthode statiqueRemotingConfiguration.Configure) ou par programmation (en passant une IDictionary collection au constructeur). Pour obtenir la liste de ces propriétés de configuration, consultez la documentation du IpcServerChannel constructeur.

Attention

Lorsque vous définissez la exclusiveAddressUse propriété false sur dans l’argument properties , plusieurs IpcServerChannel objets peuvent être inscrits pour le même canal nommé. Dans ce cas, les demandes peuvent accéder à l’un des canaux inscrits. Ce paramètre est considéré comme sécurisé uniquement si des AAC sont également utilisés.

Constructeurs

IpcServerChannel(IDictionary, IServerChannelSinkProvider)

Initialise une nouvelle instance de la classe IpcServerChannel avec les propriétés de canal et le récepteur spécifiés.

IpcServerChannel(IDictionary, IServerChannelSinkProvider, CommonSecurityDescriptor)

Initialise une nouvelle instance de la classe IpcServerChannel avec les propriétés de canal, le récepteur et le descripteur de sécurité spécifiés.

IpcServerChannel(String)

Initialise une nouvelle instance de la classe IpcServerChannel avec le nom de port IPC spécifié.

IpcServerChannel(String, String)

Initialise une nouvelle instance de la classe IpcServerChannel avec le nom de canal et le nom de port IPC spécifiés.

IpcServerChannel(String, String, IServerChannelSinkProvider)

Initialise une nouvelle instance de la classe IpcServerChannel avec le nom de canal, le nom de port IPC et le récepteur spécifiés.

Propriétés

ChannelData

Obtient les données spécifiques au canal.

ChannelName

Obtient le nom du canal en cours.

ChannelPriority

Obtient la priorité du canal actuel.

IsSecured

Obtient ou définit une valeur Boolean qui indique si le canal actuel est sécurisé.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetChannelUri()

Retourne l'URI du canal en cours.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
GetUrlsForUri(String)

Retourne un tableau de toutes les URL de l'objet doté de l'URI spécifié qui sont hébergées sur l'instance de IpcChannel en cours.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
Parse(String, String)

Extrait l'URI du canal et de l'objet connu distant à partir de l'URL spécifiée.

StartListening(Object)

Commande au canal en cours de démarrer l'écoute des demandes.

StopListening(Object)

Commande au canal en cours d'arrêter l'écoute des demandes.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à