IpcServerChannel Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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) |