Condividi tramite


DuplexChannelFactory<TChannel> Classe

Definizione

Fornisce i mezzi per creare e gestire canali duplex di tipi diversi usati dai client per inviare e ricevere messaggi da e verso endpoint di servizio.

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)

Parametri di tipo

TChannel

Tipo di canale prodotto dalla channel factory.

Ereditarietà
Derivato

Esempio

L'esempio seguente illustra come creare una channel factory e usarla per creare e gestire i canali.

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

Commenti

Un canale duplex consente ai client e ai server di comunicare tra loro in modo indipendente in modo che sia possibile avviare chiamate all'altro. Un servizio duplex può inviare messaggi all'endpoint client, fornendo un comportamento simile a un evento. La comunicazione duplex si verifica quando un client stabilisce una sessione con un servizio e fornisce al servizio un canale in cui il servizio può inviare messaggi al client. I vari metodi CreateChannel vengono usati per creare questi canali duplex. Il modello di messaggio duplex è uno dei tre modelli di messaggio disponibili per i servizi Windows Communication Foundation (WCF). Gli altri due modelli di messaggio sono unidirezionale e request-reply.

Per una descrizione generale dei servizi duplex che consentono ai client di riconnettersi al servizio, vedere Servizi duplex. Per una descrizione e una descrizione dei passaggi necessari per la scrittura di un'applicazione client Windows Communication Foundation (WCF) tramite una channel factory, vedere procedura : Usare ChannelFactory. Per una procedura che descrive come creare un client Windows Communication Foundation (WCF) in una classe client che implementa l'interfaccia di callback per accedere a un servizio che usa un modello di messaggistica duplex, vedere Procedura: Accedere ai servizi con un contratto duplex.

Costruttori

DuplexChannelFactory<TChannel>(InstanceContext)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con il contesto dell'istanza specificato.

DuplexChannelFactory<TChannel>(InstanceContext, Binding)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con un contesto che implementa il contratto di callback e un'associazione specificata.

DuplexChannelFactory<TChannel>(InstanceContext, Binding, EndpointAddress)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con un oggetto che implementa il contratto di callback e un'associazione e un indirizzo endpoint specificati.

DuplexChannelFactory<TChannel>(InstanceContext, Binding, String)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con il contesto dell'istanza, l'associazione e l'indirizzo remoto specificati.

DuplexChannelFactory<TChannel>(InstanceContext, ServiceEndpoint)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con un oggetto che implementa il contratto di callback e un endpoint specificato.

DuplexChannelFactory<TChannel>(InstanceContext, String)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con un oggetto che implementa il contratto di callback e una configurazione specificata.

DuplexChannelFactory<TChannel>(InstanceContext, String, EndpointAddress)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con un oggetto che implementa il contratto di callback e un indirizzo di configurazione e endpoint specificati.

DuplexChannelFactory<TChannel>(Object)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con un oggetto che implementa il contratto di callback.

DuplexChannelFactory<TChannel>(Object, Binding)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con un oggetto che implementa il contratto di callback e un'associazione specificata.

DuplexChannelFactory<TChannel>(Object, Binding, EndpointAddress)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con un oggetto che implementa il contratto di callback e un'associazione e un indirizzo endpoint specificati.

DuplexChannelFactory<TChannel>(Object, Binding, String)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con l'oggetto callback, l'associazione e l'indirizzo remoto specificati.

DuplexChannelFactory<TChannel>(Object, ServiceEndpoint)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con un oggetto che implementa il contratto di callback e un endpoint specificato.

DuplexChannelFactory<TChannel>(Object, String)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con un oggetto che implementa il contratto di callback e una configurazione specificata.

DuplexChannelFactory<TChannel>(Object, String, EndpointAddress)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con un oggetto che implementa il contratto di callback e un indirizzo di configurazione e endpoint specificato.

DuplexChannelFactory<TChannel>(Type)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con il tipo specificato di istanza di callback.

DuplexChannelFactory<TChannel>(Type, Binding)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con il tipo specificato di istanza di callback e associazione.

DuplexChannelFactory<TChannel>(Type, Binding, EndpointAddress)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con il tipo specificato di istanza di callback, associazione e indirizzo remoto.

DuplexChannelFactory<TChannel>(Type, Binding, String)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con il tipo specificato di istanza di callback, associazione e indirizzo remoto.

DuplexChannelFactory<TChannel>(Type, ServiceEndpoint)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con il tipo specificato di istanza di callback ed endpoint di servizio.

DuplexChannelFactory<TChannel>(Type, String)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con il tipo specificato di istanza e configurazione del callback.

DuplexChannelFactory<TChannel>(Type, String, EndpointAddress)

Inizializza una nuova istanza della classe DuplexChannelFactory<TChannel> con il tipo specificato di istanza di callback, configurazione e indirizzo remoto.

Proprietà

Credentials

Ottiene le credenziali usate dai client per comunicare un endpoint di servizio sui canali prodotti dalla factory.

(Ereditato da ChannelFactory)
DefaultCloseTimeout

Ottiene l'intervallo di tempo predefinito specificato per il completamento di un'operazione di chiusura.

(Ereditato da ChannelFactory)
DefaultOpenTimeout

Ottiene l'intervallo di tempo predefinito specificato per il completamento di un'operazione aperta.

(Ereditato da ChannelFactory)
Endpoint

Ottiene l'endpoint di servizio a cui si connettono i canali prodotti dalla factory.

(Ereditato da ChannelFactory)
IsDisposed

Ottiene un valore che indica se l'oggetto di comunicazione è stato eliminato.

(Ereditato da CommunicationObject)
State

Ottiene un valore che indica lo stato corrente dell'oggetto di comunicazione.

(Ereditato da CommunicationObject)
ThisLock

Ottiene il blocco che protegge l'istanza della classe durante una transizione di stato.

(Ereditato da CommunicationObject)

Metodi

Abort()

Fa sì che un oggetto di comunicazione passi immediatamente dallo stato corrente allo stato di chiusura.

(Ereditato da CommunicationObject)
ApplyConfiguration(String)

Inizializza la channel factory con i comportamenti forniti da un file di configurazione specificato e con quelli nell'endpoint di servizio della channel factory.

(Ereditato da ChannelFactory)
BeginClose(AsyncCallback, Object)

Avvia un'operazione asincrona per chiudere un oggetto di comunicazione.

(Ereditato da CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

Avvia un'operazione asincrona per chiudere un oggetto di comunicazione con un timeout specificato.

(Ereditato da CommunicationObject)
BeginOpen(AsyncCallback, Object)

Avvia un'operazione asincrona per aprire un oggetto di comunicazione.

(Ereditato da CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

Avvia un'operazione asincrona per aprire un oggetto di comunicazione entro un intervallo di tempo specificato.

(Ereditato da CommunicationObject)
Close()

Fa sì che un oggetto di comunicazione passi dallo stato corrente allo stato chiuso.

(Ereditato da CommunicationObject)
Close(TimeSpan)

Fa sì che un oggetto di comunicazione passi dallo stato corrente allo stato chiuso entro un intervallo di tempo specificato.

(Ereditato da CommunicationObject)
CreateChannel()

Crea un canale di un tipo specificato in un indirizzo endpoint specificato.

(Ereditato da ChannelFactory<TChannel>)
CreateChannel(EndpointAddress)

Crea un canale utilizzato per inviare messaggi a un servizio in un indirizzo endpoint specifico.

(Ereditato da ChannelFactory<TChannel>)
CreateChannel(EndpointAddress, Uri)

Crea un canale duplex tra un servizio e un'istanza di callback nel client.

CreateChannel(InstanceContext)

Crea un canale duplex tra un servizio e un'istanza di callback nel client.

CreateChannel(InstanceContext, Binding, EndpointAddress)

Crea un canale duplex tra un servizio e un'istanza di callback nel client.

CreateChannel(InstanceContext, Binding, EndpointAddress, Uri)

Crea un canale duplex tra un servizio e un'istanza di callback nel client.

CreateChannel(InstanceContext, EndpointAddress)

Crea un canale duplex tra un servizio e un'istanza di callback nel client.

CreateChannel(InstanceContext, EndpointAddress, Uri)

Crea un canale duplex tra un servizio e un'istanza di callback nel client.

CreateChannel(InstanceContext, String)

Crea un canale duplex tra un servizio e un'istanza di callback nel client.

CreateChannel(Object, Binding, EndpointAddress)

Crea un canale duplex tra un servizio e un'istanza di callback nel client.

CreateChannel(Object, Binding, EndpointAddress, Uri)

Crea un canale duplex tra un servizio e un'istanza di callback nel client.

CreateChannel(Object, String)

Crea un canale duplex tra un servizio e un'istanza di callback nel client.

CreateChannelWithActAsToken(SecurityToken)

Crea un canale utilizzato per inviare messaggi a un servizio con un token di sicurezza.

(Ereditato da ChannelFactory<TChannel>)
CreateChannelWithActAsToken(SecurityToken, EndpointAddress)

Crea un canale usato per inviare messaggi a un servizio con un token di sicurezza in un indirizzo endpoint specifico.

(Ereditato da ChannelFactory<TChannel>)
CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri)

Crea un canale utilizzato per inviare messaggi a un servizio con un token di sicurezza in un indirizzo endpoint specifico tramite un indirizzo di trasporto specificato.

(Ereditato da ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken)

Crea un canale utilizzato per inviare messaggi a un servizio con un token di sicurezza emesso.

(Ereditato da ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress)

Crea un canale utilizzato per inviare messaggi a un servizio con un token di sicurezza rilasciato in un indirizzo endpoint specifico.

(Ereditato da ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri)

Crea un canale utilizzato per inviare messaggi a un servizio con un token di sicurezza rilasciato in un indirizzo endpoint specifico tramite un indirizzo di trasporto specificato.

(Ereditato da ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken)

Crea un canale utilizzato per inviare messaggi a un servizio con un token di sicurezza per conto di .

(Ereditato da ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress)

Crea un canale utilizzato per inviare messaggi a un servizio con un token di sicurezza per conto di un indirizzo endpoint specifico.

(Ereditato da ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri)

Crea un canale utilizzato per inviare messaggi a un servizio con un token di sicurezza per conto di un indirizzo endpoint specifico tramite un indirizzo di trasporto specificato.

(Ereditato da ChannelFactory<TChannel>)
CreateDescription()

Crea una descrizione dell'endpoint del servizio.

(Ereditato da ChannelFactory<TChannel>)
CreateFactory()

Compila la channel factory per l'endpoint corrente della factory.

(Ereditato da ChannelFactory)
EndClose(IAsyncResult)

Completa un'operazione asincrona per chiudere un oggetto di comunicazione.

(Ereditato da CommunicationObject)
EndOpen(IAsyncResult)

Completa un'operazione asincrona per aprire un oggetto di comunicazione.

(Ereditato da CommunicationObject)
EnsureOpened()

Apre la channel factory corrente se non è ancora aperta.

(Ereditato da ChannelFactory)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Fault()

Fa sì che un oggetto di comunicazione passi dallo stato corrente allo stato di errore.

(Ereditato da CommunicationObject)
GetCommunicationObjectType()

Ottiene il tipo di oggetto di comunicazione.

(Ereditato da CommunicationObject)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetProperty<T>()

Restituisce l'oggetto tipizzato richiesto, se presente, dal livello appropriato nello stack di canali o null se non presente.

(Ereditato da ChannelFactory)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
InitializeEndpoint(Binding, EndpointAddress)

Inizializza l'endpoint di servizio della channel factory con un'associazione e un indirizzo specificati.

(Ereditato da ChannelFactory)
InitializeEndpoint(ServiceEndpoint)

Inizializza l'endpoint di servizio della channel factory con un endpoint specificato.

(Ereditato da ChannelFactory)
InitializeEndpoint(String, EndpointAddress)

Inizializza l'endpoint di servizio della channel factory con un indirizzo e una configurazione specificati.

(Ereditato da ChannelFactory)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
OnAbort()

Termina la channel factory interna della channel factory corrente.

(Ereditato da ChannelFactory)
OnBeginClose(TimeSpan, AsyncCallback, Object)

Avvia un'operazione di chiusura asincrona nella channel factory interna della channel factory corrente a cui è associato un oggetto stato.

(Ereditato da ChannelFactory)
OnBeginOpen(TimeSpan, AsyncCallback, Object)

Avvia un'operazione di apertura asincrona nella channel factory interna della channel factory corrente a cui è associato un oggetto stato.

(Ereditato da ChannelFactory)
OnClose(TimeSpan)

Chiama close sulla channel factory interna con un timeout specificato per il completamento dell'operazione.

(Ereditato da ChannelFactory)
OnClosed()

Richiamato durante la transizione di un oggetto di comunicazione nello stato di chiusura.

(Ereditato da CommunicationObject)
OnClosing()

Richiamato durante la transizione di un oggetto di comunicazione nello stato di chiusura.

(Ereditato da CommunicationObject)
OnEndClose(IAsyncResult)

Completa un'operazione di chiusura asincrona nella channel factory interna della channel factory corrente.

(Ereditato da ChannelFactory)
OnEndOpen(IAsyncResult)

Completa un'operazione di apertura asincrona nella channel factory interna della channel factory corrente.

(Ereditato da ChannelFactory)
OnFaulted()

Inserisce l'elaborazione in un oggetto di comunicazione dopo la transizione allo stato di errore a causa della chiamata di un'operazione di errore sincrono.

(Ereditato da CommunicationObject)
OnOpen(TimeSpan)

Chiama aperto nella channel factory interna della channel factory corrente con un timeout specificato per il completamento dell'operazione.

(Ereditato da ChannelFactory)
OnOpened()

Inizializza una copia di sola lettura dell'oggetto ClientCredentials per la channel factory.

(Ereditato da ChannelFactory)
OnOpening()

Compila la channel factory interna per il canale corrente.

(Ereditato da ChannelFactory)
Open()

Fa sì che un oggetto di comunicazione passi dallo stato creato allo stato aperto.

(Ereditato da CommunicationObject)
Open(TimeSpan)

Fa sì che un oggetto di comunicazione passi dallo stato creato allo stato aperto entro un intervallo di tempo specificato.

(Ereditato da CommunicationObject)
ThrowIfDisposed()

Genera un'eccezione se l'oggetto di comunicazione viene eliminato.

(Ereditato da CommunicationObject)
ThrowIfDisposedOrImmutable()

Genera un'eccezione se l'oggetto di comunicazione la proprietà State non è impostata sullo stato Created.

(Ereditato da CommunicationObject)
ThrowIfDisposedOrNotOpen()

Genera un'eccezione se l'oggetto di comunicazione non è nello stato Opened.

(Ereditato da CommunicationObject)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Eventi

Closed

Si verifica quando un oggetto di comunicazione passa allo stato chiuso.

(Ereditato da CommunicationObject)
Closing

Si verifica quando un oggetto di comunicazione passa allo stato di chiusura.

(Ereditato da CommunicationObject)
Faulted

Si verifica quando un oggetto di comunicazione passa allo stato di errore.

(Ereditato da CommunicationObject)
Opened

Si verifica quando un oggetto di comunicazione passa allo stato aperto.

(Ereditato da CommunicationObject)
Opening

Si verifica quando un oggetto di comunicazione passa allo stato di apertura.

(Ereditato da CommunicationObject)

Implementazioni dell'interfaccia esplicita

IAsyncDisposable.DisposeAsync()

Fornisce i mezzi per creare e gestire canali duplex di tipi diversi usati dai client per inviare e ricevere messaggi da e verso endpoint di servizio.

(Ereditato da ChannelFactory)
IDisposable.Dispose()

Chiude la channel factory corrente.

(Ereditato da ChannelFactory)

Metodi di estensione

ConfigureAwait(IAsyncDisposable, Boolean)

Configura il modo in cui verranno eseguite le attese nelle attività restituite da un oggetto eliminabile asincrono.

Si applica a