IpcServerChannel Klas

Definitie

Hiermee wordt een serverkanaal geïmplementeerd voor externe aanroepen die gebruikmaken van het IPC-systeem voor het verzenden van berichten.

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
Overname
IpcServerChannel
Implementeringen

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u de IpcServerChannel klasse gebruikt.

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

De voorgaande code wordt gebruikt om het volgende externe object beschikbaar te maken.

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

Zie voor een voorbeeld van een client die dit object op IpcClientChannelafstand gebruikt.

Opmerkingen

Important

Het aanroepen van methoden uit deze klasse met niet-vertrouwde gegevens is een beveiligingsrisico. Roep de methoden van deze klasse alleen aan met vertrouwde gegevens. Zie Alle invoergegevens validerenvoor meer informatie.

Kanalen worden gebruikt door de externe infrastructuur van het .NET Framework voor het transport van externe aanroepen. Wanneer een client een extern object aanroept, wordt de aanroep geserialiseerd in een bericht dat wordt verzonden door een clientkanaal en wordt ontvangen door een serverkanaal. Nadat het bericht is ontvangen, wordt het gedeserialiseerd en verwerkt. Geretourneerde waarden worden verzonden door het serverkanaal en ontvangen door het clientkanaal.

De klasse IpcServerChannel maakt gebruik van het Windows IPC-systeem (Interprocess Communication) om berichten tussen toepassingsdomeinen op dezelfde computer te transporteren. Wanneer u communiceert tussen toepassingsdomeinen op dezelfde computer, is het IPC-kanaal veel sneller dan de TCP- of HTTP-kanalen.

Als u extra verwerking van berichten aan de serverzijde wilt uitvoeren, geeft u een implementatie op van de IServerChannelSinkProvider interface waarmee alle berichten die door het IpcServerChannel exemplaar worden verwerkt, worden doorgegeven.

Het IpcServerChannel exemplaar accepteert berichten die in binaire of SOAP-indeling zijn geserialiseerd.

Een IpcServerChannel object heeft configuratie-eigenschappen die tijdens runtime kunnen worden ingesteld in een configuratiebestand (door de statische RemotingConfiguration.Configure methode aan te roepen) of programmatisch (door een IDictionary verzameling door te geven aan de IpcServerChannel constructor). Zie de documentatie voor de IpcServerChannel constructor voor een lijst met deze configuratie-eigenschappen.

Caution

Wanneer u de exclusiveAddressUse eigenschap false instelt op in het properties argument, kunnen verschillende IpcServerChannel objecten worden geregistreerd voor dezelfde benoemde pijp. In dat geval kunnen aanvragen naar een van de geregistreerde kanalen gaan. Deze instelling wordt alleen als veilig beschouwd als ALC's ook worden gebruikt.

Constructors

Name Description
IpcServerChannel(IDictionary, IServerChannelSinkProvider, CommonSecurityDescriptor)

Initialiseert een nieuw exemplaar van de IpcServerChannel klasse met de opgegeven kanaaleigenschappen, sink en beveiligingsdescriptor.

IpcServerChannel(IDictionary, IServerChannelSinkProvider)

Initialiseert een nieuw exemplaar van de IpcServerChannel klasse met de opgegeven kanaaleigenschappen en sink.

IpcServerChannel(String, String, IServerChannelSinkProvider)

Initialiseert een nieuw exemplaar van de IpcServerChannel klasse met de opgegeven kanaalnaam, IPC-poortnaam en sink.

IpcServerChannel(String, String)

Initialiseert een nieuw exemplaar van de IpcServerChannel klasse met de opgegeven kanaalnaam en IPC-poortnaam.

IpcServerChannel(String)

Initialiseert een nieuw exemplaar van de IpcServerChannel klasse met de opgegeven IPC-poortnaam.

Eigenschappen

Name Description
ChannelData

Hiermee haalt u kanaalspecifieke gegevens op.

ChannelName

Hiermee haalt u de naam van het huidige kanaal op.

ChannelPriority

Hiermee krijgt u de prioriteit van het huidige kanaal.

IsSecured

Hiermee wordt een Booleaanse waarde opgehaald of ingesteld die aangeeft of het huidige kanaal veilig is.

Methoden

Name Description
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetChannelUri()

Retourneert de URI van het huidige kanaal.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
GetUrlsForUri(String)

Retourneert een matrix van alle URL's voor het object met de opgegeven URI die wordt gehost op het huidige IpcChannel exemplaar.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
Parse(String, String)

Extraheert de kanaal-URI en de externe bekende object-URI uit de opgegeven URL.

StartListening(Object)

Hiermee wordt het huidige kanaal geïnstrueerd om te beginnen met luisteren naar aanvragen.

StopListening(Object)

Hiermee wordt het huidige kanaal geïnstrueerd om te stoppen met luisteren naar aanvragen.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op