Compartilhar via


DuplexChannelFactory<TChannel> Classe

Definição

Fornece os meios para criar e gerenciar canais duplex de diferentes tipos que são usados pelos clientes para enviar e receber mensagens de e para pontos de extremidade de serviço.

generic <typename TChannel>
public ref class DuplexChannelFactory : System::ServiceModel::ChannelFactory<TChannel>
public class DuplexChannelFactory<TChannel> : System.ServiceModel.ChannelFactory<TChannel>
type DuplexChannelFactory<'Channel> = class
    inherit ChannelFactory<'Channel>
Public Class DuplexChannelFactory(Of TChannel)
Inherits ChannelFactory(Of TChannel)

Parâmetros de tipo

TChannel

O tipo de canal produzido pela fábrica de canais.

Herança
Derivado

Exemplos

O exemplo a seguir mostra como criar uma fábrica de canais e usá-la para criar e gerenciar canais.

// Construct InstanceContext to handle messages on the callback interface.
// An instance of ChatApp is created and passed to the InstanceContext.
    InstanceContext site = new InstanceContext(new ChatApp());

// Create the participant with the given endpoint configuration.
// Each participant opens a duplex channel to the mesh.
// Participant is an instance of the chat application that has opened a channel to the mesh.

    using (DuplexChannelFactory<IChatChannel> cf =
        new DuplexChannelFactory<IChatChannel>(site,"ChatEndpoint"))
    {
        X509Certificate2 issuer = GetCertificate(
            StoreName.CertificateAuthority,
            StoreLocation.CurrentUser, "CN=" + issuerName,
            X509FindType.FindBySubjectDistinguishedName);
        cf.Credentials.Peer.Certificate =
            GetCertificate(StoreName.My,
            StoreLocation.CurrentUser,
            "CN=" + member,
            X509FindType.FindBySubjectDistinguishedName);
        cf.Credentials.Peer.PeerAuthentication.CertificateValidationMode  =
            X509CertificateValidationMode.Custom;
        cf.Credentials.Peer.PeerAuthentication.CustomCertificateValidator =
            new IssuerBasedValidator();

        using (IChatChannel participant = cf.CreateChannel())
        {
    // Retrieve the PeerNode associated with the participant and register for online/offline events.
    // PeerNode represents a node in the mesh. Mesh is the named collection of connected nodes.
            IOnlineStatus ostat = participant.GetProperty<IOnlineStatus>();
            ostat.Online += new EventHandler(OnOnline);
            ostat.Offline += new EventHandler(OnOffline);

            Console.WriteLine("{0} is ready", member);
            Console.WriteLine("Press <ENTER> to send the chat message.");

    // Announce self to other participants.
            participant.Join(member);
            Console.ReadLine();
            participant.Chat(member, "Hi there - I am chatting");

            Console.WriteLine("Press <ENTER> to terminate this instance of chat.");
            Console.ReadLine();
    // Leave the mesh and close the client.
            participant.Leave(member);
        }
    }

Comentários

Um canal duplex permite que clientes e servidores se comuniquem entre si de forma independente, de modo que qualquer um possa iniciar chamadas para o outro. Um serviço duplex pode enviar mensagens para o ponto de extremidade do cliente, fornecendo um comportamento semelhante a um evento. A comunicação duplex ocorre quando um cliente estabelece uma sessão com um serviço e fornece ao serviço um canal no qual o serviço pode enviar mensagens de volta para o cliente. Os vários métodos CreateChannel são usados para criar esses canais duplex. O padrão de mensagem duplex é um dos três padrões de mensagem disponíveis para os serviços do WCF (Windows Communication Foundation). Os outros dois padrões de mensagem são unidirecional e solicitação-resposta.

Para obter uma discussão geral sobre serviços duplex que permitem que os clientes se conectem novamente ao serviço, consulte Serviços Duplex. Para obter uma estrutura de tópicos e discussão sobre as etapas envolvidas na escrita de um aplicativo cliente do WCF (Windows Communication Foundation) usando uma fábrica de canais, consulte Como usar o channelfactory. Para obter um procedimento que descreve como criar um cliente WCF (Windows Communication Foundation) em uma classe cliente que implementa a interface de retorno de chamada para acessar um serviço que usa um padrão de mensagens duplex, consulte How to: Access Services with a Duplex Contract.

Construtores

DuplexChannelFactory<TChannel>(InstanceContext)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com o contexto de instância especificado.

DuplexChannelFactory<TChannel>(InstanceContext, Binding)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com um contexto que implementa o contrato de retorno de chamada e uma associação especificada.

DuplexChannelFactory<TChannel>(InstanceContext, Binding, EndpointAddress)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com um objeto que implementa o contrato de retorno de chamada e um endereço de associação e ponto de extremidade especificados.

DuplexChannelFactory<TChannel>(InstanceContext, Binding, String)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com o contexto, a associação e o endereço remoto da instância especificados.

DuplexChannelFactory<TChannel>(InstanceContext, ServiceEndpoint)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com um objeto que implementa o contrato de retorno de chamada e um ponto de extremidade especificado.

DuplexChannelFactory<TChannel>(InstanceContext, String)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com um objeto que implementa o contrato de retorno de chamada e uma configuração especificada.

DuplexChannelFactory<TChannel>(InstanceContext, String, EndpointAddress)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com um objeto que implementa o contrato de retorno de chamada e um endereço de configuração e ponto de extremidade especificados.

DuplexChannelFactory<TChannel>(Object)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com um objeto que implementa o contrato de retorno de chamada.

DuplexChannelFactory<TChannel>(Object, Binding)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com um objeto que implementa o contrato de retorno de chamada e uma associação especificada.

DuplexChannelFactory<TChannel>(Object, Binding, EndpointAddress)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com um objeto que implementa o contrato de retorno de chamada e um endereço de associação e ponto de extremidade especificados.

DuplexChannelFactory<TChannel>(Object, Binding, String)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com o objeto de retorno de chamada, a associação e o endereço remoto especificados.

DuplexChannelFactory<TChannel>(Object, ServiceEndpoint)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com um objeto que implementa o contrato de retorno de chamada e um ponto de extremidade especificado.

DuplexChannelFactory<TChannel>(Object, String)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com um objeto que implementa o contrato de retorno de chamada e uma configuração especificada.

DuplexChannelFactory<TChannel>(Object, String, EndpointAddress)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com um objeto que implementa o contrato de retorno de chamada e um endereço de configuração e ponto de extremidade especificados.

DuplexChannelFactory<TChannel>(Type)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com o tipo especificado de instância de retorno de chamada.

DuplexChannelFactory<TChannel>(Type, Binding)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com o tipo especificado de instância de retorno de chamada e associação.

DuplexChannelFactory<TChannel>(Type, Binding, EndpointAddress)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com o tipo especificado de instância de retorno de chamada, associação e endereço remoto.

DuplexChannelFactory<TChannel>(Type, Binding, String)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com o tipo especificado de instância de retorno de chamada, associação e endereço remoto.

DuplexChannelFactory<TChannel>(Type, ServiceEndpoint)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com o tipo especificado de instância de retorno de chamada e ponto de extremidade de serviço.

DuplexChannelFactory<TChannel>(Type, String)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com o tipo especificado de instância e configuração de retorno de chamada.

DuplexChannelFactory<TChannel>(Type, String, EndpointAddress)

Inicializa uma nova instância da classe DuplexChannelFactory<TChannel> com o tipo especificado de instância de retorno de chamada, configuração e endereço remoto.

Propriedades

Credentials

Obtém as credenciais usadas pelos clientes para comunicar um ponto de extremidade de serviço pelos canais produzidos pela fábrica.

(Herdado de ChannelFactory)
DefaultCloseTimeout

Obtém o intervalo de tempo padrão fornecido para que uma operação de fechamento seja concluída.

(Herdado de ChannelFactory)
DefaultOpenTimeout

Obtém o intervalo de tempo padrão fornecido para uma operação aberta ser concluída.

(Herdado de ChannelFactory)
Endpoint

Obtém o ponto de extremidade de serviço ao qual os canais produzidos pela fábrica se conectam.

(Herdado de ChannelFactory)
IsDisposed

Obtém um valor que indica se o objeto de comunicação foi descartado.

(Herdado de CommunicationObject)
State

Obtém um valor que indica o estado atual do objeto de comunicação.

(Herdado de CommunicationObject)
ThisLock

Obtém o bloqueio mutuamente exclusivo que protege a instância de classe durante uma transição de estado.

(Herdado de CommunicationObject)

Métodos

Abort()

Faz com que um objeto de comunicação faça a transição imediatamente de seu estado atual para o estado de fechamento.

(Herdado de CommunicationObject)
ApplyConfiguration(String)

Inicializa a fábrica de canais com os comportamentos fornecidos por um arquivo de configuração especificado e com aqueles no ponto de extremidade de serviço da fábrica de canais.

(Herdado de ChannelFactory)
BeginClose(AsyncCallback, Object)

Inicia uma operação assíncrona para fechar um objeto de comunicação.

(Herdado de CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

Inicia uma operação assíncrona para fechar um objeto de comunicação com um tempo limite especificado.

(Herdado de CommunicationObject)
BeginOpen(AsyncCallback, Object)

Inicia uma operação assíncrona para abrir um objeto de comunicação.

(Herdado de CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

Inicia uma operação assíncrona para abrir um objeto de comunicação dentro de um intervalo de tempo especificado.

(Herdado de CommunicationObject)
Close()

Faz com que um objeto de comunicação faça a transição de seu estado atual para o estado fechado.

(Herdado de CommunicationObject)
Close(TimeSpan)

Faz com que um objeto de comunicação faça a transição de seu estado atual para o estado fechado dentro de um intervalo de tempo especificado.

(Herdado de CommunicationObject)
CreateChannel()

Cria um canal de um tipo especificado para um endereço de ponto de extremidade especificado.

(Herdado de ChannelFactory<TChannel>)
CreateChannel(EndpointAddress)

Cria um canal que é usado para enviar mensagens para um serviço em um endereço de ponto de extremidade específico.

(Herdado de ChannelFactory<TChannel>)
CreateChannel(EndpointAddress, Uri)

Cria um canal duplex entre um serviço e uma instância de retorno de chamada no cliente.

CreateChannel(InstanceContext)

Cria um canal duplex entre um serviço e uma instância de retorno de chamada no cliente.

CreateChannel(InstanceContext, Binding, EndpointAddress)

Cria um canal duplex entre um serviço e uma instância de retorno de chamada no cliente.

CreateChannel(InstanceContext, Binding, EndpointAddress, Uri)

Cria um canal duplex entre um serviço e uma instância de retorno de chamada no cliente.

CreateChannel(InstanceContext, EndpointAddress)

Cria um canal duplex entre um serviço e uma instância de retorno de chamada no cliente.

CreateChannel(InstanceContext, EndpointAddress, Uri)

Cria um canal duplex entre um serviço e uma instância de retorno de chamada no cliente.

CreateChannel(InstanceContext, String)

Cria um canal duplex entre um serviço e uma instância de retorno de chamada no cliente.

CreateChannel(Object, Binding, EndpointAddress)

Cria um canal duplex entre um serviço e uma instância de retorno de chamada no cliente.

CreateChannel(Object, Binding, EndpointAddress, Uri)

Cria um canal duplex entre um serviço e uma instância de retorno de chamada no cliente.

CreateChannel(Object, String)

Cria um canal duplex entre um serviço e uma instância de retorno de chamada no cliente.

CreateChannelWithActAsToken(SecurityToken)

Cria um canal usado para enviar mensagens para um serviço com um token de segurança.

(Herdado de ChannelFactory<TChannel>)
CreateChannelWithActAsToken(SecurityToken, EndpointAddress)

Cria um canal usado para enviar mensagens para um serviço com um token de segurança em um endereço de ponto de extremidade específico.

(Herdado de ChannelFactory<TChannel>)
CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri)

Cria um canal usado para enviar mensagens para um serviço com um token de segurança em um endereço de ponto de extremidade específico por meio de um endereço de transporte especificado.

(Herdado de ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken)

Cria um canal usado para enviar mensagens para um serviço com um token de segurança emitido.

(Herdado de ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress)

Cria um canal usado para enviar mensagens para um serviço com um token de segurança emitido em um endereço de ponto de extremidade específico.

(Herdado de ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri)

Cria um canal que é usado para enviar mensagens para um serviço com um token de segurança emitido em um endereço de ponto de extremidade específico por meio de um endereço de transporte especificado.

(Herdado de ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken)

Cria um canal que é usado para enviar mensagens para um serviço com um token de segurança em nome.

(Herdado de ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress)

Cria um canal que é usado para enviar mensagens para um serviço com um token em nome de segurança em um endereço de ponto de extremidade específico.

(Herdado de ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri)

Cria um canal que é usado para enviar mensagens para um serviço com um token em nome de segurança em um endereço de ponto de extremidade específico por meio de um endereço de transporte especificado.

(Herdado de ChannelFactory<TChannel>)
CreateDescription()

Cria uma descrição do ponto de extremidade de serviço.

(Herdado de ChannelFactory<TChannel>)
CreateFactory()

Cria a fábrica de canais para o ponto de extremidade atual da fábrica.

(Herdado de ChannelFactory)
EndClose(IAsyncResult)

Conclui uma operação assíncrona para fechar um objeto de comunicação.

(Herdado de CommunicationObject)
EndOpen(IAsyncResult)

Conclui uma operação assíncrona para abrir um objeto de comunicação.

(Herdado de CommunicationObject)
EnsureOpened()

Abrirá a fábrica de canais atual se ela ainda não estiver aberta.

(Herdado de ChannelFactory)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Fault()

Faz com que um objeto de comunicação faça a transição de seu estado atual para o estado com falha.

(Herdado de CommunicationObject)
GetCommunicationObjectType()

Obtém o tipo de objeto de comunicação.

(Herdado de CommunicationObject)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetProperty<T>()

Retorna o objeto digitado solicitado, se presente, da camada apropriada na pilha do canal ou null se não estiver presente.

(Herdado de ChannelFactory)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
InitializeEndpoint(Binding, EndpointAddress)

Inicializa o ponto de extremidade de serviço da fábrica de canais com uma associação e um endereço especificados.

(Herdado de ChannelFactory)
InitializeEndpoint(EndpointAddress)

Fornece os meios para criar e gerenciar canais duplex de diferentes tipos que são usados pelos clientes para enviar e receber mensagens de e para pontos de extremidade de serviço.

(Herdado de ChannelFactory)
InitializeEndpoint(ServiceEndpoint)

Inicializa o ponto de extremidade de serviço da fábrica de canais com um ponto de extremidade especificado.

(Herdado de ChannelFactory)
InitializeEndpoint(String, EndpointAddress)

Inicializa o ponto de extremidade de serviço da fábrica de canais com um endereço e uma configuração especificados.

(Herdado de ChannelFactory)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
OnAbort()

Encerra a fábrica de canais interno da fábrica de canais atual.

(Herdado de ChannelFactory)
OnBeginClose(TimeSpan, AsyncCallback, Object)

Inicia uma operação de fechamento assíncrona na fábrica do canal interno da fábrica de canais atual que tem um objeto de estado associado a ela.

(Herdado de ChannelFactory)
OnBeginOpen(TimeSpan, AsyncCallback, Object)

Inicia uma operação de abertura assíncrona na fábrica de canais interno da fábrica de canais atual que tem um objeto de estado associado a ela.

(Herdado de ChannelFactory)
OnClose(TimeSpan)

As chamadas fecham na fábrica de canais internos com um tempo limite especificado para a conclusão da operação.

(Herdado de ChannelFactory)
OnCloseAsync(TimeSpan)

Fornece os meios para criar e gerenciar canais duplex de diferentes tipos que são usados pelos clientes para enviar e receber mensagens de e para pontos de extremidade de serviço.

(Herdado de ChannelFactory)
OnClosed()

Invocado durante a transição de um objeto de comunicação para o estado de fechamento.

(Herdado de CommunicationObject)
OnClosing()

Invocado durante a transição de um objeto de comunicação para o estado de fechamento.

(Herdado de CommunicationObject)
OnEndClose(IAsyncResult)

Conclui uma operação de fechamento assíncrona na fábrica de canais interno da fábrica de canais atual.

(Herdado de ChannelFactory)
OnEndOpen(IAsyncResult)

Conclui uma operação aberta assíncrona na fábrica de canais interno da fábrica de canais atual.

(Herdado de ChannelFactory)
OnFaulted()

Insere o processamento em um objeto de comunicação depois que ele faz a transição para o estado com falha devido à invocação de uma operação de falha síncrona.

(Herdado de CommunicationObject)
OnOpen(TimeSpan)

As chamadas são abertas na fábrica de canais interno da fábrica de canais atual com um tempo limite especificado para a conclusão da operação.

(Herdado de ChannelFactory)
OnOpenAsync(TimeSpan)

Fornece os meios para criar e gerenciar canais duplex de diferentes tipos que são usados pelos clientes para enviar e receber mensagens de e para pontos de extremidade de serviço.

(Herdado de ChannelFactory)
OnOpened()

Inicializa uma cópia somente leitura do objeto ClientCredentials para a fábrica de canais.

(Herdado de ChannelFactory)
OnOpening()

Cria a fábrica de canais internos para o canal atual.

(Herdado de ChannelFactory)
Open()

Faz com que um objeto de comunicação faça a transição do estado criado para o estado aberto.

(Herdado de CommunicationObject)
Open(TimeSpan)

Faz com que um objeto de comunicação faça a transição do estado criado para o estado aberto dentro de um intervalo de tempo especificado.

(Herdado de CommunicationObject)
ThrowIfDisposed()

Gerará uma exceção se o objeto de comunicação for descartado.

(Herdado de CommunicationObject)
ThrowIfDisposedOrImmutable()

Gerará uma exceção se o objeto de comunicação a propriedade State não estiver definida como o estado Created.

(Herdado de CommunicationObject)
ThrowIfDisposedOrNotOpen()

Gera uma exceção se o objeto de comunicação não estiver no estado Opened.

(Herdado de CommunicationObject)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Eventos

Closed

Ocorre quando um objeto de comunicação faz a transição para o estado fechado.

(Herdado de CommunicationObject)
Closing

Ocorre quando um objeto de comunicação faz a transição para o estado de fechamento.

(Herdado de CommunicationObject)
Faulted

Ocorre quando um objeto de comunicação faz a transição para o estado com falha.

(Herdado de CommunicationObject)
Opened

Ocorre quando um objeto de comunicação faz a transição para o estado aberto.

(Herdado de CommunicationObject)
Opening

Ocorre quando um objeto de comunicação faz a transição para o estado de abertura.

(Herdado de CommunicationObject)

Implantações explícitas de interface

IAsyncCommunicationObject.CloseAsync(TimeSpan)

Fornece os meios para criar e gerenciar canais duplex de diferentes tipos que são usados pelos clientes para enviar e receber mensagens de e para pontos de extremidade de serviço.

(Herdado de CommunicationObject)
IAsyncCommunicationObject.OpenAsync(TimeSpan)

Fornece os meios para criar e gerenciar canais duplex de diferentes tipos que são usados pelos clientes para enviar e receber mensagens de e para pontos de extremidade de serviço.

(Herdado de CommunicationObject)
IAsyncDisposable.DisposeAsync()

Fornece os meios para criar e gerenciar canais duplex de diferentes tipos que são usados pelos clientes para enviar e receber mensagens de e para pontos de extremidade de serviço.

(Herdado de ChannelFactory)
IDisposable.Dispose()

Fecha a fábrica de canais atual.

(Herdado de ChannelFactory)

Métodos de Extensão

CloseHelperAsync(ICommunicationObject, TimeSpan)

Fornece os meios para criar e gerenciar canais duplex de diferentes tipos que são usados pelos clientes para enviar e receber mensagens de e para pontos de extremidade de serviço.

OpenHelperAsync(ICommunicationObject, TimeSpan)

Fornece os meios para criar e gerenciar canais duplex de diferentes tipos que são usados pelos clientes para enviar e receber mensagens de e para pontos de extremidade de serviço.

GetInternalCloseTimeout(CommunicationObject)

Fornece os meios para criar e gerenciar canais duplex de diferentes tipos que são usados pelos clientes para enviar e receber mensagens de e para pontos de extremidade de serviço.

ConfigureAwait(IAsyncDisposable, Boolean)

Configura como as esperas nas tarefas retornadas de um descartável assíncrono serão executadas.

Aplica-se a