IpcServerChannel Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Implementiert einen Serverchannel für Remoteaufrufe, der das IPC-System zum Übertragen von Meldungen verwendet.
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
- Vererbung
-
IpcServerChannel
- Implementiert
Beispiele
Im folgenden Codebeispiel wird die Verwendung der IpcServerChannel -Klasse veranschaulicht.
#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();
}
}
Der obige Code wird verwendet, um das folgende Remoteobjekt verfügbar zu machen.
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++);
} }
}
Ein Beispiel für einen Client, der dieses Objekt remote verwendet, finden Sie unter IpcClientChannel.
Hinweise
Wichtig
Das Aufrufen von Methoden aus dieser Klasse mit nicht vertrauenswürdigen Daten stellt ein Sicherheitsrisiko dar. Rufen Sie die Methoden aus dieser Klasse nur mit vertrauenswürdigen Daten auf. Weitere Informationen finden Sie unter Überprüfen aller Eingaben.
Kanäle werden von der .NET Framework Remotinginfrastruktur verwendet, um Remoteanrufe zu übertragen. Wenn ein Client ein Remoteobjekt aufruft, wird der Aufruf in eine Nachricht serialisiert, die von einem Clientkanal gesendet und von einem Serverkanal empfangen wird. Nachdem die Nachricht empfangen wurde, wird sie deserialisiert und verarbeitet. Alle zurückgegebenen Werte werden vom Serverkanal übertragen und vom Clientkanal empfangen.
Die IpcServerChannel -Klasse verwendet das Windows-IPC-System (Interprocess Communication), um Nachrichten zwischen Anwendungsdomänen auf demselben Computer zu transportieren. Bei der Kommunikation zwischen Anwendungsdomänen auf demselben Computer ist der IPC-Kanal viel schneller als die TCP- oder HTTP-Kanäle.
Um eine zusätzliche Verarbeitung von Nachrichten auf serverseitiger Seite durchzuführen, geben Sie eine Implementierung der IServerChannelSinkProvider Schnittstelle an, über die alle von der IpcServerChannel Instanz verarbeiteten Nachrichten übergeben werden.
Die IpcServerChannel -Instanz akzeptiert Nachrichten, die entweder im Binär- oder SOAP-Format serialisiert sind.
Ein IpcServerChannel Objekt verfügt über zugeordnete Konfigurationseigenschaften, die zur Laufzeit entweder in einer Konfigurationsdatei (durch Aufrufen der statischen RemotingConfiguration.Configure Methode) oder programmgesteuert (durch Übergeben einer IDictionary Auflistung an den IpcServerChannel Konstruktor) festgelegt werden können. Eine Liste dieser Konfigurationseigenschaften finden Sie in der Dokumentation für den IpcServerChannel Konstruktor.
Achtung
Wenn Sie die exclusiveAddressUse
-Eigenschaft im properties
Argument auf false
festlegen, können mehrere IpcServerChannel Objekte für dieselbe Named Pipe registriert werden. In diesem Fall können Anforderungen an jeden der registrierten Kanäle gesendet werden. Diese Einstellung gilt nur dann als sicher, wenn auch ALCs verwendet werden.
Konstruktoren
IpcServerChannel(IDictionary, IServerChannelSinkProvider) |
Initialisiert eine neue Instanz der IpcServerChannel-Klasse mit den angegebenen Channeleigenschaften und der angegebenen Channelsenke. |
IpcServerChannel(IDictionary, IServerChannelSinkProvider, CommonSecurityDescriptor) |
Initialisiert eine neue Instanz der IpcServerChannel-Klasse mit den angegebenen Channeleigenschaften, der angegebenen Channelsenke und der angegebenen Sicherheitsbeschreibung. |
IpcServerChannel(String) |
Initialisiert eine neue Instanz der IpcServerChannel-Klasse mit dem angegebenen IPC-Anschlussnamen. |
IpcServerChannel(String, String) |
Initialisiert eine neue Instanz der IpcServerChannel-Klasse mit dem angegebenen Channelnamen und IPC-Anschlussnamen. |
IpcServerChannel(String, String, IServerChannelSinkProvider) |
Initialisiert eine neue Instanz der IpcServerChannel-Klasse mit dem angegebenen Channelnamen, dem angegebenen IPC-Anschlussnamen und der angegebenen Senke. |
Eigenschaften
ChannelData |
Ruft channelspezifische Daten ab. |
ChannelName |
Ruft den Namen des aktuellen Channels ab. |
ChannelPriority |
Ruft die Priorität des aktuellen Channels ab. |
IsSecured |
Ruft einen booleschen Wert ab, der angibt, ob der aktuelle Channel sicher ist, oder legt diesen fest. |
Methoden
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetChannelUri() |
Gibt den URI des aktuellen Channels zurück. |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
GetUrlsForUri(String) |
Gibt ein Array sämtlicher URLs für das Objekt mit dem angegebenen URI zurück, für das die aktuelle IpcChannel-Instanz als Host fungiert. |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
Parse(String, String) |
Extrahiert aus der angegebenen URL den Channel-URI und den URI des bekannten Remoteobjekts. |
StartListening(Object) |
Weist den aktuellen Channel an, mit der Überwachung von Anforderungen zu beginnen. |
StopListening(Object) |
Weist den aktuellen Channel an, die Überwachung von Anforderungen zu beenden. |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |