Compartir a través de


IpcServerChannel Clase

Definición

Implementa un canal de servidor para llamadas remotas que utiliza el sistema IPC para transmitir los mensajes.

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
Herencia
IpcServerChannel
Implementaciones

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar la IpcServerChannel clase .

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

El código anterior se usa para exponer el siguiente objeto remoto.

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

Para obtener un ejemplo de un cliente que usa este objeto de forma remota, vea IpcClientChannel.

Comentarios

Importante

Llamar a métodos de esta clase con datos que no son de confianza supone un riesgo de seguridad. Llame a los métodos de esta clase solo con datos de confianza. Para obtener más información, vea Validar todas las entradas.

La infraestructura de comunicación remota de .NET Framework usa canales para transportar llamadas remotas. Cuando un cliente llama a un objeto remoto, la llamada se serializa en un mensaje enviado por un canal de cliente y recibido por un canal de servidor. Una vez recibido el mensaje, se deserializa y procesa. Los valores devueltos se transmiten por el canal de servidor y los recibe el canal de cliente.

La IpcServerChannel clase usa el sistema de comunicación entre procesos (IPC) de Windows para transportar mensajes entre dominios de aplicación en el mismo equipo. Al comunicarse entre dominios de aplicación en el mismo equipo, el canal IPC es mucho más rápido que los canales TCP o HTTP.

Para realizar un procesamiento adicional de mensajes en el lado servidor, especifique una implementación de la interfaz a través de la IServerChannelSinkProvider cual se pasan todos los mensajes procesados por la IpcServerChannel instancia.

La IpcServerChannel instancia acepta mensajes serializados en formato binario o SOAP.

Un IpcServerChannel objeto tiene propiedades de configuración asociadas que se pueden establecer en tiempo de ejecución en un archivo de configuración (invocando el método estático RemotingConfiguration.Configure ) o mediante programación (pasando una IDictionary colección al IpcServerChannel constructor). Para obtener una lista de estas propiedades de configuración, consulte la documentación del IpcServerChannel constructor.

Precaución

Al establecer la exclusiveAddressUse propiedad false en en en el properties argumento , se pueden registrar varios IpcServerChannel objetos para la misma canalización con nombre. En tal caso, las solicitudes pueden ir a cualquiera de los canales registrados. Esta configuración solo se considera segura si también se usan alC.

Constructores

IpcServerChannel(IDictionary, IServerChannelSinkProvider)

Inicializa una nueva instancia de la clase IpcServerChannel con las propiedades de canal y el receptor especificados.

IpcServerChannel(IDictionary, IServerChannelSinkProvider, CommonSecurityDescriptor)

Inicializa una nueva instancia de la clase IpcServerChannel con las propiedades de canal, el receptor y el descriptor de seguridad especificados.

IpcServerChannel(String)

Inicializa una nueva instancia de la clase IpcServerChannel con el número de puerto IPC especificado.

IpcServerChannel(String, String)

Inicializa una nueva instancia de la clase IpcServerChannel con el nombre de canal y el nombre de puerto IPC especificados.

IpcServerChannel(String, String, IServerChannelSinkProvider)

Inicializa una nueva instancia de la clase IpcServerChannel con el nombre de canal, el nombre de puerto IPC y el receptor especificados.

Propiedades

ChannelData

Obtiene los datos específicos del canal.

ChannelName

Obtiene el nombre del canal actual.

ChannelPriority

Obtiene la prioridad del canal actual.

IsSecured

Obtiene o establece un valor booleano que indica si el canal actual es seguro.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetChannelUri()

Devuelve la dirección URI del canal actual.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
GetUrlsForUri(String)

Devuelve una matriz de todas las direcciones URL del objeto con la dirección URI especificada, hospedadas en la instancia de IpcChannel actual.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
Parse(String, String)

Extrae el identificador URI del canal y el identificador URI del objeto conocido remoto de la dirección URL especificada.

StartListening(Object)

Indica al canal actual que inicie la escucha de solicitudes.

StopListening(Object)

Indica al canal actual que detenga la escucha de solicitudes.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a