IpcServerChannel Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Implementuje kanał serwera dla wywołań zdalnych, które używają systemu IPC do przesyłania komunikatów.
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
- Dziedziczenie
-
IpcServerChannel
- Implementuje
Przykłady
W poniższym przykładzie kodu pokazano, jak używać IpcServerChannel klasy.
#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();
}
}
Powyższy kod służy do uwidocznienia następującego obiektu zdalnego.
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++);
} }
}
Aby uzyskać przykład klienta używającego tego obiektu zdalnie, zobacz IpcClientChannel.
Uwagi
Ważne
Wywoływanie metod z tej klasy z niezaufanymi danymi jest zagrożeniem bezpieczeństwa. Wywołaj metody z tej klasy tylko z zaufanymi danymi. Aby uzyskać więcej informacji, zobacz Weryfikowanie wszystkich danych wejściowych.
Kanały są używane przez infrastrukturę komunikacji zdalnej .NET Framework do transportu połączeń zdalnych. Gdy klient wywołuje obiekt zdalny, wywołanie jest serializowane do komunikatu wysyłanego przez kanał klienta i odbierany przez kanał serwera. Po odebraniu komunikatu jest deserializowany i przetwarzany. Wszystkie zwrócone wartości są przesyłane przez kanał serwera i odbierane przez kanał klienta.
Klasa IpcServerChannel używa systemu Komunikacji międzyprocesowej systemu Windows (IPC) do transportu komunikatów między domenami aplikacji na tym samym komputerze. Podczas komunikacji między domenami aplikacji na tym samym komputerze kanał IPC jest znacznie szybszy niż kanały TCP lub HTTP.
Aby wykonać dodatkowe przetwarzanie komunikatów po stronie serwera, określ implementację interfejsu IServerChannelSinkProvider , za pomocą którego przekazywane są wszystkie komunikaty przetwarzane przez IpcServerChannel wystąpienie.
Wystąpienie IpcServerChannel akceptuje komunikaty serializowane w formacie binarnym lub SOAP.
Obiekt IpcServerChannel ma skojarzone właściwości konfiguracji, które można ustawić w czasie wykonywania w pliku konfiguracji (wywołując metodę statyczną RemotingConfiguration.Configure ) lub programowo (przekazując IDictionary kolekcję do konstruktora IpcServerChannel ). Aby uzyskać listę tych właściwości konfiguracji, zobacz dokumentację konstruktora IpcServerChannel .
Przestroga
Podczas ustawiania exclusiveAddressUse
właściwości na w argumencie properties
można zarejestrować false
kilka IpcServerChannel obiektów dla tego samego nazwanego potoku. W takim przypadku żądania mogą przejść do dowolnego z zarejestrowanych kanałów. To ustawienie jest uznawane za bezpieczne tylko wtedy, gdy są również używane kontrolery ALC.
Konstruktory
IpcServerChannel(IDictionary, IServerChannelSinkProvider) |
Inicjuje IpcServerChannel nowe wystąpienie klasy z określonymi właściwościami kanału i ujściem. |
IpcServerChannel(IDictionary, IServerChannelSinkProvider, CommonSecurityDescriptor) |
Inicjuje IpcServerChannel nowe wystąpienie klasy z określonymi właściwościami kanału, ujściem i deskryptorem zabezpieczeń. |
IpcServerChannel(String) |
Inicjuje IpcServerChannel nowe wystąpienie klasy o określonej nazwie portu IPC. |
IpcServerChannel(String, String) |
Inicjuje IpcServerChannel nowe wystąpienie klasy o określonej nazwie kanału i nazwie portu IPC. |
IpcServerChannel(String, String, IServerChannelSinkProvider) |
Inicjuje IpcServerChannel nowe wystąpienie klasy o określonej nazwie kanału, nazwie portu IPC i ujściu. |
Właściwości
ChannelData |
Pobiera dane specyficzne dla kanału. |
ChannelName |
Pobiera nazwę bieżącego kanału. |
ChannelPriority |
Pobiera priorytet bieżącego kanału. |
IsSecured |
Pobiera lub ustawia wartość logiczną wskazującą, czy bieżący kanał jest bezpieczny. |
Metody
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetChannelUri() |
Zwraca identyfikator URI bieżącego kanału. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera bieżące wystąpienie. (Odziedziczone po Object) |
GetUrlsForUri(String) |
Zwraca tablicę wszystkich adresów URL obiektu z określonym identyfikatorem URI hostowanym w bieżącym IpcChannel wystąpieniu. |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
Parse(String, String) |
Wyodrębnia identyfikator URI kanału i zdalny dobrze znany identyfikator URI obiektu z określonego adresu URL. |
StartListening(Object) |
Instruuje bieżący kanał, aby rozpocząć nasłuchiwanie żądań. |
StopListening(Object) |
Instruuje bieżący kanał, aby przestał nasłuchiwać żądań. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |