IpcServerChannel Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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) |