Sdílet prostřednictvím


IpcServerChannel Třída

Definice

Implementuje kanál serveru pro vzdálená volání, která k přenosu zpráv používá systém IPC.

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
Dědičnost
IpcServerChannel
Implementuje

Příklady

Následující příklad kódu ukazuje, jak používat IpcServerChannel třídu.

#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();
    }
}

Předchozí kód se používá ke zveřejnění následujícího vzdáleného objektu.

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

Příklad klienta, který tento objekt používá vzdáleně, najdete v tématu IpcClientChannel.

Poznámky

Důležité

Volání metod z této třídy s nedůvěryhodnými daty představuje bezpečnostní riziko. Metody z této třídy volejte pouze s důvěryhodnými daty. Další informace najdete v tématu Ověření všech vstupů.

Kanály se používají v infrastruktuře vzdálené komunikace rozhraní .NET Framework k přenosu vzdálených volání. Když klient volá vzdálený objekt, volání se serializuje do zprávy, která je odeslána klientským kanálem a přijata kanálem serveru. Po přijetí zprávy se deserializuje a zpracuje. Všechny vrácené hodnoty jsou přenášeny kanálem serveru a přijaty klientským kanálem.

Třída IpcServerChannel používá systém IPC (Interprocess communication) systému Windows k přenosu zpráv mezi doménami aplikace ve stejném počítači. Při komunikaci mezi doménami aplikace na stejném počítači je kanál IPC mnohem rychlejší než kanály TCP nebo HTTP.

Chcete-li provést další zpracování zpráv na straně serveru, zadejte implementaci IServerChannelSinkProvider rozhraní, přes které jsou předány všechny zprávy zpracovávané IpcServerChannel instancí.

Instance IpcServerChannel přijímá zprávy serializované v binárním nebo SOAP formátu.

Objekt IpcServerChannel má přidružené vlastnosti konfigurace, které lze nastavit za běhu buď v konfiguračním souboru (vyvoláním statické RemotingConfiguration.Configure metody), nebo programově (předáním IDictionary kolekce konstruktoru IpcServerChannel ). Seznam těchto vlastností konfigurace najdete v dokumentaci k konstruktoru IpcServerChannel .

Upozornění

Při nastavení exclusiveAddressUse vlastnosti na false v argumentu properties lze pro stejný pojmenovaný kanál zaregistrovat několik IpcServerChannel objektů. V takovém případě můžou žádosti přejít na některý z registrovaných kanálů. Toto nastavení je považováno za bezpečné pouze v případě, že se používají také alC.

Konstruktory

IpcServerChannel(IDictionary, IServerChannelSinkProvider)

Inicializuje novou instanci IpcServerChannel třídy se zadanými vlastnostmi kanálu a jímkou.

IpcServerChannel(IDictionary, IServerChannelSinkProvider, CommonSecurityDescriptor)

Inicializuje novou instanci IpcServerChannel třídy se zadanými vlastnostmi kanálu, jímkou a popisovačem zabezpečení.

IpcServerChannel(String)

Inicializuje novou instanci IpcServerChannel třídy se zadaným názvem portu IPC.

IpcServerChannel(String, String)

Inicializuje novou instanci IpcServerChannel třídy se zadaným názvem kanálu a názvem portu IPC.

IpcServerChannel(String, String, IServerChannelSinkProvider)

Inicializuje novou instanci IpcServerChannel třídy se zadaným názvem kanálu, názvem portu IPC a jímkou.

Vlastnosti

ChannelData

Získá data specifická pro kanál.

ChannelName

Získá název aktuálního kanálu.

ChannelPriority

Získá prioritu aktuálního kanálu.

IsSecured

Získá nebo nastaví logickou hodnotu, která označuje, zda je aktuální kanál zabezpečený.

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetChannelUri()

Vrátí identifikátor URI aktuálního kanálu.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
GetUrlsForUri(String)

Vrátí pole všech adres URL objektu se zadaným identifikátorem URI hostovaným v aktuální IpcChannel instanci.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
Parse(String, String)

Extrahuje identifikátor URI kanálu a vzdálený dobře známý identifikátor URI objektu ze zadané adresy URL.

StartListening(Object)

Dá aktuálnímu kanálu pokyn, aby začal naslouchat žádostem.

StopListening(Object)

Dá aktuálnímu kanálu pokyn, aby přestal naslouchat žádostem.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro