IpcServerChannel Classe

Définition

Implémente un canal de serveur pour les appels distants 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 uniquement avec des données approuvées. 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 classe IpcServerChannel utilise le système de communication interprocesseur (IPC) Windows pour transporter les messages entre les 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 via 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 dans un fichier de configuration (en appelant la méthode statique RemotingConfiguration.Configure ) ou par programme (en passant une IDictionary collection au IpcServerChannel constructeur). Pour obtenir la liste de ces propriétés de configuration, consultez la documentation du IpcServerChannel constructeur.

Avertissement

Lors de la définition de la exclusiveAddressUse propriété false 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 les AFC sont également utilisées.

Constructeurs

Nom Description
IpcServerChannel(IDictionary, IServerChannelSinkProvider, CommonSecurityDescriptor)

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

IpcServerChannel(IDictionary, IServerChannelSinkProvider)

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

IpcServerChannel(String, String, IServerChannelSinkProvider)

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

IpcServerChannel(String, String)

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

IpcServerChannel(String)

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

Propriétés

Nom Description
ChannelData

Obtient des données spécifiques au canal.

ChannelName

Obtient le nom du canal actuel.

ChannelPriority

Obtient la priorité du canal actuel.

IsSecured

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

Méthodes

Nom Description
Equals(Object)

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

(Hérité de Object)
GetChannelUri()

Retourne l’URI du canal actuel.

GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient la Type de l’instance actuelle.

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

Retourne un tableau de toutes les URL de l’objet avec l’URI spécifié, hébergé sur l’instance actuelle IpcChannel .

MemberwiseClone()

Crée une copie superficielle du Objectactuel.

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

Extrait l’URI du canal et l’URI d’objet connu à distance à partir de l’URL spécifiée.

StartListening(Object)

Indique au canal actuel de commencer à écouter les demandes.

StopListening(Object)

Indique au canal actuel d’arrêter l’écoute des requêtes.

ToString()

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

(Hérité de Object)

S’applique à