IpcServerChannel Classe

Definizione

Implementa un canale server per chiamate remote che utilizza il sistema IPC per la trasmissione dei messaggi.

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
Ereditarietà
IpcServerChannel
Implementazioni

Esempio

Nell'esempio di codice seguente viene illustrato come usare 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();
    }
}

Il codice precedente viene usato per esporre l'oggetto remoto seguente.

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++);
  } }
}

Per un esempio di client che usa questo oggetto in remoto, vedere IpcClientChannel.

Commenti

Importante

La chiamata a metodi da questa classe con dati non attendibili costituisce un rischio per la sicurezza. Chiamare i metodi da questa classe solo con dati attendibili. Per altre informazioni, vedere Convalidare tutti gli input.

I canali vengono usati dall'infrastruttura remota di .NET Framework per il trasporto di chiamate remote. Quando un client chiama un oggetto remoto, la chiamata viene serializzata in un messaggio inviato da un canale client e ricevuto da un canale server. Dopo aver ricevuto il messaggio, viene deserializzato ed elaborato. Tutti i valori restituiti vengono trasmessi dal canale del server e ricevuti dal canale client.

La IpcServerChannel classe usa il sistema IPC (Windows interprocess communication) per trasportare messaggi tra domini applicazione nello stesso computer. Quando si comunica tra domini applicazione nello stesso computer, il canale IPC è molto più veloce dei canali TCP o HTTP.

Per eseguire un'elaborazione aggiuntiva dei messaggi sul lato server, specificare un'implementazione dell'interfaccia tramite cui vengono passati tutti i messaggi elaborati dall'istanza IServerChannelSinkProviderIpcServerChannel .

L'istanza IpcServerChannel accetta messaggi serializzati in formato binario o SOAP.

Un IpcServerChannel oggetto ha associato proprietà di configurazione che possono essere impostate in fase di esecuzione in un file di configurazione (richiamando il metodo statico RemotingConfiguration.Configure ) o a livello di codice (passando una IDictionary raccolta al IpcServerChannel costruttore). Per un elenco di queste proprietà di configurazione, vedere la documentazione per il IpcServerChannel costruttore.

Attenzione

Quando si imposta la exclusiveAddressUse proprietà su false nell'argomento properties , è possibile registrare diversi IpcServerChannel oggetti per la stessa pipe denominata. In tal caso, le richieste possono passare a uno dei canali registrati. Questa impostazione viene considerata sicura solo se vengono usate anche le schede di rete.

Costruttori

IpcServerChannel(IDictionary, IServerChannelSinkProvider)

Inizializza una nuova istanza della classe IpcServerChannel con il sink e le proprietà del canale specificati.

IpcServerChannel(IDictionary, IServerChannelSinkProvider, CommonSecurityDescriptor)

Inizializza una nuova istanza della classe IpcServerChannel con il sink, il descrittore di sicurezza e le proprietà di canale specificati.

IpcServerChannel(String)

Inizializza una nuova istanza della classe IpcServerChannel con il nome di porta IPC specificato.

IpcServerChannel(String, String)

Inizializza una nuova istanza della classe IpcServerChannel con il nome del canale e il nome di porta IPC specificati.

IpcServerChannel(String, String, IServerChannelSinkProvider)

Inizializza una nuova istanza della classe IpcServerChannel con il nome del canale, il nome di porta IPC e il sink specificati.

Proprietà

ChannelData

Ottiene dati specifici del canale.

ChannelName

Ottiene il nome del canale corrente.

ChannelPriority

Ottiene la priorità del canale corrente.

IsSecured

Ottiene o imposta un valore booleano che indica se il canale corrente è protetto.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetChannelUri()

Restituisce l'URI del canale corrente.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
GetUrlsForUri(String)

Restituisce una matrice di tutti gli URL dell'oggetto con l'URI specificato, contenuto nell'istanza corrente di IpcChannel.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
Parse(String, String)

Estrae dall'URL specificato l'URI del canale e quello dell'oggetto remoto conosciuto.

StartListening(Object)

Indica al canale corrente di mettersi in attesa di richieste.

StopListening(Object)

Indica al canale corrente di interrompere l'attesa di richieste.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a