IpcServerChannel Classe

Definição

Implementa um canal servidor para chamadas remotas que utiliza o sistema IPC para transmitir mensagens.

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
Herança
IpcServerChannel
Implementações

Exemplos

O seguinte exemplo de código ilustra como usar a IpcServerChannel classe.

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

O código anterior é usado para expor o objeto remoto seguinte.

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 um exemplo de um cliente a usar este objeto remotamente, veja IpcClientChannel.

Observações

Importante

Chamar métodos dessa classe com dados não confiáveis é um risco de segurança. Chame os métodos dessa classe somente com dados confiáveis. Para obter mais informações, consulte Validar todas as informações inseridas.

Os canais são usados pela infraestrutura remota do .NET Framework para transportar chamadas remotas. Quando um cliente chama um objeto remoto, a chamada é serializada numa mensagem enviada por um canal cliente e recebida por um canal servidor. Após a receção da mensagem, esta é desserializada e processada. Quaisquer valores devolvidos são transmitidos pelo canal do servidor e recebidos pelo canal cliente.

A classe IpcServerChannel utiliza o sistema de comunicação entre processos (IPC) Windows para transportar mensagens entre domínios de aplicação no mesmo computador. Ao comunicar entre domínios de aplicação no mesmo computador, o canal IPC é muito mais rápido do que os canais TCP ou HTTP.

Para realizar processamento adicional das mensagens do lado do servidor, especifique uma implementação da IServerChannelSinkProvider interface através da qual todas as mensagens processadas pela IpcServerChannel instância são passadas.

A IpcServerChannel instância aceita mensagens serializadas em formato binário ou SOAP.

Um IpcServerChannel objeto tem propriedades de configuração associadas que podem ser definidas em tempo de execução, seja num ficheiro de configuração (invocando o método estático RemotingConfiguration.Configure ) ou programaticamente (passando uma IDictionary coleção ao IpcServerChannel construtor). Para uma lista destas propriedades de configuração, consulte a documentação do IpcServerChannel construtor.

Atenção

Ao definir a exclusiveAddressUse propriedade como false no properties argumento, vários IpcServerChannel objetos podem ser registados para o mesmo pipe nomeado. Nesse caso, os pedidos podem ir para qualquer um dos canais registados. Esta configuração é considerada segura apenas se também forem usados ALCs.

Construtores

Name Description
IpcServerChannel(IDictionary, IServerChannelSinkProvider, CommonSecurityDescriptor)

Inicializa uma nova instância da IpcServerChannel classe com as propriedades do canal especificadas, o sumidouro e o descritor de segurança.

IpcServerChannel(IDictionary, IServerChannelSinkProvider)

Inicializa uma nova instância da IpcServerChannel classe com as propriedades do canal e o sumidouro especificados.

IpcServerChannel(String, String, IServerChannelSinkProvider)

Inicializa uma nova instância da IpcServerChannel classe com o nome do canal, nome da porta IPC e sumidouro especificados.

IpcServerChannel(String, String)

Inicializa uma nova instância da IpcServerChannel classe com o nome do canal especificado e o nome da porta IPC.

IpcServerChannel(String)

Inicializa uma nova instância da IpcServerChannel classe com o nome da porta IPC especificado.

Propriedades

Name Description
ChannelData

Obtém dados específicos do canal.

ChannelName

Recebe o nome do canal atual.

ChannelPriority

Recebe a prioridade do canal atual.

IsSecured

Recebe ou define um valor booleano que indica se o canal atual é seguro.

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetChannelUri()

Devolve o URI do canal atual.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
GetUrlsForUri(String)

Devolve um array de todas as URLs do objeto com o URI especificado, alojado na instância atual IpcChannel .

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
Parse(String, String)

Extrai o URI do canal e o URI remoto do objeto conhecido a partir da URL especificada.

StartListening(Object)

Instrui o canal atual a começar a ouvir pedidos.

StopListening(Object)

Instrui o canal atual a parar de ouvir pedidos.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a