DuplexChannelFactory<TChannel> Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 |
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. |