Udostępnij za pośrednictwem


IpcServerChannel Klasa

Definicja

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)

Dotyczy