DuplexChannelFactory<TChannel> Classe

Definizione

Fornisce i mezzi per creare e gestire canali duplex di diversi tipi utilizzati dai client per scambiare messaggi con gli 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

Nell'esempio seguente viene illustrato come creare una channel factory e come utilizzarla per creare e gestire 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

I canali duplex consentono ai client e ai server di comunicare fra loro indipendentemente in modo che uno sia in grado di effettuare chiamate all'altro. Un servizio duplex può inviare messaggi all'endpoint client, fornendo un comportamento simile a quello degli eventi. Una comunicazione duplex ha luogo quando un client stabilisce una sessione con un servizio e fornisce a quest'ultimo un canale utilizzabile per inviare messaggi al client. Per creare questi canali duplex vengono utilizzati i vari metodi CreateChannel. Il modello di messaggio duplex è uno dei tre modelli di messaggio disponibili per i servizi Windows Communication Foundation (WCF). Gli altri due modelli sono il modello unidirezionale e il modello request/reply.

Per una descrizione generale dei servizi duplex che consentono ai client di riconnettersi al servizio, vedere Servizi duplex. Per una struttura 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)

Consente di inizializzare una nuova istanza della classe DuplexChannelFactory<TChannel> con il contesto di istanza specificato.

DuplexChannelFactory<TChannel>(InstanceContext, Binding)

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

DuplexChannelFactory<TChannel>(InstanceContext, Binding, EndpointAddress)

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

DuplexChannelFactory<TChannel>(InstanceContext, Binding, String)

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

DuplexChannelFactory<TChannel>(InstanceContext, ServiceEndpoint)

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

DuplexChannelFactory<TChannel>(InstanceContext, String)

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

DuplexChannelFactory<TChannel>(InstanceContext, String, EndpointAddress)

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

DuplexChannelFactory<TChannel>(Object)

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

DuplexChannelFactory<TChannel>(Object, Binding)

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

DuplexChannelFactory<TChannel>(Object, Binding, EndpointAddress)

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

DuplexChannelFactory<TChannel>(Object, Binding, String)

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

DuplexChannelFactory<TChannel>(Object, ServiceEndpoint)

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

DuplexChannelFactory<TChannel>(Object, String)

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

DuplexChannelFactory<TChannel>(Object, String, EndpointAddress)

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

DuplexChannelFactory<TChannel>(Type)

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

DuplexChannelFactory<TChannel>(Type, Binding)

Consente di inizializzare una nuova istanza della classe DuplexChannelFactory<TChannel> con il tipo di istanza di callback e l'associazione specificati.

DuplexChannelFactory<TChannel>(Type, Binding, EndpointAddress)

Consente di inizializzare una nuova istanza della classe DuplexChannelFactory<TChannel> con il tipo di istanza di callback, l'associazione e l'indirizzo remoto specificati.

DuplexChannelFactory<TChannel>(Type, Binding, String)

Consente di inizializzare una nuova istanza della classe DuplexChannelFactory<TChannel> con il tipo di istanza di callback, l'associazione e l'indirizzo remoto specificati.

DuplexChannelFactory<TChannel>(Type, ServiceEndpoint)

Consente di inizializzare una nuova istanza della classe DuplexChannelFactory<TChannel> con il tipo di istanza di callback e l'endpoint di servizio specificati.

DuplexChannelFactory<TChannel>(Type, String)

Consente di inizializzare una nuova istanza della classe DuplexChannelFactory<TChannel> con il tipo di istanza di callback e la configurazione specificati.

DuplexChannelFactory<TChannel>(Type, String, EndpointAddress)

Consente di inizializzare una nuova istanza della classe DuplexChannelFactory<TChannel> con il tipo di istanza di callback, la configurazione e l'indirizzo remoto specificati.

Proprietà

Credentials

Ottiene le credenziali utilizzate dai client per comunicare con un endpoint del servizio sui canali prodotti dalla factory.

(Ereditato da ChannelFactory)
DefaultCloseTimeout

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

(Ereditato da ChannelFactory)
DefaultOpenTimeout

Ottiene l'intervallo di tempo predefinito fornito per il completamento di un'operazione di apertura.

(Ereditato da ChannelFactory)
Endpoint

Ottiene l'endpoint del servizio al quale 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 a esclusione reciproca che protegge l'istanza della classe durante una transizione di stato.

(Ereditato da CommunicationObject)

Metodi

Abort()

Determina la transizione immediata di un oggetto di comunicazione 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 specificati nell'endpoint del servizio della channel factory.

(Ereditato da ChannelFactory)
BeginClose(AsyncCallback, Object)

Consente di iniziare un'operazione asincrona finalizzata a chiudere un oggetto di comunicazione.

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

Consente di iniziare un'operazione asincrona finalizzata a chiudere un oggetto di comunicazione entro un determinato intervallo di tempo.

(Ereditato da CommunicationObject)
BeginOpen(AsyncCallback, Object)

Consente di iniziare un'operazione asincrona finalizzata ad aprire un oggetto di comunicazione.

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

Consente di iniziare un'operazione asincrona finalizzata ad aprire un oggetto di comunicazione entro un determinato intervallo di tempo.

(Ereditato da CommunicationObject)
Close()

Comporta la transizione di un oggetto di comunicazione dallo stato corrente allo stato di chiusura.

(Ereditato da CommunicationObject)
Close(TimeSpan)

Determina la transizione di un oggetto di comunicazione dallo stato corrente allo stato Closed entro un intervallo di tempo specificato.

(Ereditato da CommunicationObject)
CreateChannel()

Consente di creare un canale di un determinato tipo relativo all'indirizzo endpoint specificato.

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

Consente di creare un canale utilizzato per inviare messaggi a un servizio presso un indirizzo endpoint specifico.

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

Consente di creare un canale duplex tra un servizio e un'istanza di callback sul client.

CreateChannel(InstanceContext)

Consente di creare un canale duplex tra un servizio e un'istanza di callback sul client.

CreateChannel(InstanceContext, Binding, EndpointAddress)

Consente di creare un canale duplex tra un servizio e un'istanza di callback sul client.

CreateChannel(InstanceContext, Binding, EndpointAddress, Uri)

Consente di creare un canale duplex tra un servizio e un'istanza di callback sul client.

CreateChannel(InstanceContext, EndpointAddress)

Consente di creare un canale duplex tra un servizio e un'istanza di callback sul client.

CreateChannel(InstanceContext, EndpointAddress, Uri)

Consente di creare un canale duplex tra un servizio e un'istanza di callback sul client.

CreateChannel(InstanceContext, String)

Consente di creare un canale duplex tra un servizio e un'istanza di callback sul client.

CreateChannel(Object, Binding, EndpointAddress)

Consente di creare un canale duplex tra un servizio e un'istanza di callback sul client.

CreateChannel(Object, Binding, EndpointAddress, Uri)

Consente di creare un canale duplex tra un servizio e un'istanza di callback sul client.

CreateChannel(Object, String)

Consente di creare un canale duplex tra un servizio e un'istanza di callback sul client.

CreateChannelWithActAsToken(SecurityToken)

Consente di creare un canale utilizzato per inviare messaggi a un servizio con un token di sicurezza ActAs.

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

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

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

Crea un canale utilizzato per inviare messaggi a un servizio che funge da token di sicurezza presso un determinato indirizzo endpoint tramite l'indirizzo di trasporto specificato.

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

Consente di creare un canale utilizzato per inviare messaggi a un servizio con un token di sicurezza rilasciato.

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

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

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

Crea un canale utilizzato per inviare messaggi a un servizio con un token di sicurezza emesso presso un determinato indirizzo endpoint tramite l'indirizzo di trasporto specificato.

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

Consente di creare un canale utilizzato per inviare messaggi a un servizio con un token di sicurezza OnBehalfOf.

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

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

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

Crea un canale utilizzato per inviare messaggi a un servizio con un token di sicurezza presso un determinato indirizzo endpoint tramite l'indirizzo di trasporto specificato.

(Ereditato da ChannelFactory<TChannel>)
CreateDescription()

Consente di creare una descrizione dell'endpoint di servizio.

(Ereditato da ChannelFactory<TChannel>)
CreateFactory()

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

(Ereditato da ChannelFactory)
EndClose(IAsyncResult)

Consente di completare un'operazione asincrona finalizzata a chiudere un oggetto di comunicazione.

(Ereditato da CommunicationObject)
EndOpen(IAsyncResult)

Consente di completare un'operazione asincrona finalizzata ad 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()

Determina la transizione di un oggetto di comunicazione dallo stato corrente allo stato Faulted.

(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>()

Se presente, restituisce l'oggetto tipizzato richiesto dal livello appropriato nello stack dei canali; se non è presente, restituisce null.

(Ereditato da ChannelFactory)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
InitializeEndpoint(Binding, EndpointAddress)

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

(Ereditato da ChannelFactory)
InitializeEndpoint(ServiceEndpoint)

Inizializza l'endpoint del servizio della channel factory con un endpoint sepcificato.

(Ereditato da ChannelFactory)
InitializeEndpoint(String, EndpointAddress)

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

(Ereditato da ChannelFactory)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OnAbort()

Termina la channel factory interna della channel factory corrente.

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

Consente di avviare un'operazione di chiusura asincrona sulla channel factory interna della channel factory corrente a cui è associato un oggetto di stato.

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

Consente di avviare un'operazione di apertura asincrona sulla channel factory interna della channel factory corrente a cui è associato un oggetto di stato.

(Ereditato da ChannelFactory)
OnClose(TimeSpan)

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

(Ereditato da ChannelFactory)
OnCloseAsync(TimeSpan)

Fornisce i mezzi per creare e gestire canali duplex di diversi tipi utilizzati dai client per scambiare messaggi con gli endpoint di servizio.

(Ereditato da ChannelFactory)
OnClosed()

Viene chiamato durante la transizione di un oggetto di comunicazione allo stato di chiusura.

(Ereditato da CommunicationObject)
OnClosing()

Viene chiamato durante la transizione di un oggetto di comunicazione allo stato di chiusura.

(Ereditato da CommunicationObject)
OnEndClose(IAsyncResult)

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

(Ereditato da ChannelFactory)
OnEndOpen(IAsyncResult)

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

(Ereditato da ChannelFactory)
OnFaulted()

Inserisce l'elaborazione in un oggetto di comunicazione dopo che ha eseguito la transizione allo stato Faulted in seguito alla chiamata di un'operazione di errore sincrona.

(Ereditato da CommunicationObject)
OnOpen(TimeSpan)

Chiama l'apertura sulla channel factory interna della channel factory corrente con un timeout specificato per il completamento dell'operazione.

(Ereditato da ChannelFactory)
OnOpenAsync(TimeSpan)

Fornisce i mezzi per creare e gestire canali duplex di diversi tipi utilizzati dai client per scambiare messaggi con gli endpoint di servizio.

(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()

Comporta la transizione di un oggetto di comunicazione dallo stato di creazione allo stato di apertura.

(Ereditato da CommunicationObject)
Open(TimeSpan)

Comporta la transizione di un oggetto di comunicazione dallo stato di creazione allo stato di apertura entro un determinato intervallo di tempo.

(Ereditato da CommunicationObject)
ThrowIfDisposed()

Se l'oggetto di comunicazione è stato eliminato, genera un'eccezione.

(Ereditato da CommunicationObject)
ThrowIfDisposedOrImmutable()

Se la proprietà State dell'oggetto di comunicazione non è impostata su Created, genera un'eccezione.

(Ereditato da CommunicationObject)
ThrowIfDisposedOrNotOpen()

Se l'oggetto di comunicazione non si trova nello stato Opened, genera un'eccezione.

(Ereditato da CommunicationObject)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Eventi

Closed

Si verifica quando un oggetto di comunicazione esegue la transizione allo stato Closed.

(Ereditato da CommunicationObject)
Closing

Si verifica quando un oggetto di comunicazione esegue la transizione allo stato Closing.

(Ereditato da CommunicationObject)
Faulted

Si verifica quando un oggetto di comunicazione esegue la transizione allo stato Faulted.

(Ereditato da CommunicationObject)
Opened

Si verifica quando un oggetto di comunicazione esegue la transizione allo stato Opened.

(Ereditato da CommunicationObject)
Opening

Si verifica quando un oggetto di comunicazione esegue la transizione allo stato Opening.

(Ereditato da CommunicationObject)

Implementazioni dell'interfaccia esplicita

IAsyncCommunicationObject.CloseAsync(TimeSpan)

Fornisce i mezzi per creare e gestire canali duplex di diversi tipi utilizzati dai client per scambiare messaggi con gli endpoint di servizio.

(Ereditato da CommunicationObject)
IAsyncCommunicationObject.OpenAsync(TimeSpan)

Fornisce i mezzi per creare e gestire canali duplex di diversi tipi utilizzati dai client per scambiare messaggi con gli endpoint di servizio.

(Ereditato da CommunicationObject)
IAsyncDisposable.DisposeAsync()

Fornisce i mezzi per creare e gestire canali duplex di diversi tipi utilizzati dai client per scambiare messaggi con gli endpoint di servizio.

(Ereditato da ChannelFactory)
IDisposable.Dispose()

Chiude la channel factory corrente.

(Ereditato da ChannelFactory)

Metodi di estensione

CloseHelperAsync(ICommunicationObject, TimeSpan)

Fornisce i mezzi per creare e gestire canali duplex di diversi tipi utilizzati dai client per scambiare messaggi con gli endpoint di servizio.

OpenHelperAsync(ICommunicationObject, TimeSpan)

Fornisce i mezzi per creare e gestire canali duplex di diversi tipi utilizzati dai client per scambiare messaggi con gli endpoint di servizio.

GetInternalCloseTimeout(CommunicationObject)

Fornisce i mezzi per creare e gestire canali duplex di diversi tipi utilizzati dai client per scambiare messaggi con gli endpoint di servizio.

Si applica a