IpcServerChannel Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Implementa um canal de servidor para chamadas remotas que usa 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 exemplo de código a seguir 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 a seguir.
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 obter um exemplo de um cliente usando esse objeto remotamente, consulte IpcClientChannel.
Comentários
Importante
Chamar métodos dessa classe com dados não confiáveis é um risco à segurança. Chame os métodos dessa classe apenas com dados confiáveis. Para obter mais informações, consulte Validar Todas as Entradas.
Os canais são usados pela infraestrutura de comunicação remota do .NET Framework para transportar chamadas remotas. Quando um cliente chama um objeto remoto, a chamada é serializada em uma mensagem enviada por um canal cliente e recebida por um canal de servidor. Depois que a mensagem é recebida, ela é desserializada e processada. Todos os valores retornados são transmitidos pelo canal do servidor e recebidos pelo canal do cliente.
A classe IpcServerChannel usa o sistema de comunicação interprocesso (IPC) Windows para transportar mensagens entre domínios de aplicativo no mesmo computador. Ao se comunicar entre domínios de aplicativo no mesmo computador, o canal IPC é muito mais rápido do que os canais TCP ou HTTP.
Para executar o processamento adicional de mensagens no lado do servidor, especifique uma implementação da interface por meio da IServerChannelSinkProvider qual todas as mensagens processadas pela IpcServerChannel instância são passadas.
A IpcServerChannel instância aceita mensagens serializadas no formato binário ou SOAP.
Um IpcServerChannel objeto tem propriedades de configuração associadas que podem ser definidas em tempo de execução em um arquivo de configuração (invocando o método estático RemotingConfiguration.Configure ) ou programaticamente (passando uma IDictionary coleção para o IpcServerChannel construtor). Para obter uma lista dessas propriedades de configuração, consulte a documentação do IpcServerChannel construtor.
Caution
Ao definir a exclusiveAddressUse propriedade false no properties argumento, vários IpcServerChannel objetos podem ser registrados para o mesmo pipe nomeado. Nesse caso, as solicitações podem ir para qualquer um dos canais registrados. Essa configuração será considerada segura somente se os ALCs também forem usados.
Construtores
| Nome | Description |
|---|---|
| IpcServerChannel(IDictionary, IServerChannelSinkProvider, CommonSecurityDescriptor) |
Inicializa uma nova instância da IpcServerChannel classe com as propriedades de canal, o coletor e o descritor de segurança especificados. |
| IpcServerChannel(IDictionary, IServerChannelSinkProvider) |
Inicializa uma nova instância da IpcServerChannel classe com as propriedades de canal e o coletor especificados. |
| IpcServerChannel(String, String, IServerChannelSinkProvider) |
Inicializa uma nova instância da IpcServerChannel classe com o nome do canal especificado, o nome da porta IPC e o coletor. |
| 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
| Nome | Description |
|---|---|
| ChannelData |
Obtém dados específicos do canal. |
| ChannelName |
Obtém o nome do canal atual. |
| ChannelPriority |
Obtém a prioridade do canal atual. |
| IsSecured |
Obtém ou define um valor booliano que indica se o canal atual é seguro. |
Métodos
| Nome | Description |
|---|---|
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetChannelUri() |
Retorna o URI do canal atual. |
| GetHashCode() |
Serve como a função hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| GetUrlsForUri(String) |
Retorna uma matriz de todas as URLs do objeto com o URI especificado, hospedado na instância atual IpcChannel . |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (Herdado de Object) |
| Parse(String, String) |
Extrai o URI do canal e o URI de objeto conhecido remoto da URL especificada. |
| StartListening(Object) |
Instrui o canal atual a começar a escutar solicitações. |
| StopListening(Object) |
Instrui o canal atual a parar de escutar solicitações. |
| ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |