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 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 |
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(EndpointAddress) |
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) |
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. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Consente di configurare la modalità di esecuzione delle espressioni await per le attività restituite da un elemento disposable asincrono. |
Si applica a
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per