Freigeben über


DuplexChannelFactory<TChannel> Klasse

Definition

Stellt die Möglichkeit zum Erstellen und Verwalten von Duplexkanälen verschiedener Typen bereit, die von Clients zum Senden und Empfangen von Nachrichten an und von Dienstendpunkten verwendet werden.

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)

Typparameter

TChannel

Der Typ des Kanals, der von der Kanalfabrik produziert wird.

Vererbung
Abgeleitet

Beispiele

Das folgende Beispiel zeigt, wie Sie eine Kanalfactory erstellen und verwenden, um Kanäle zu erstellen und zu verwalten.

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

Hinweise

Mit einem Duplexkanal können Clients und Server unabhängig voneinander kommunizieren, sodass beide Anrufe an die andere initiieren können. Ein Duplexdienst kann Nachrichten an den Clientendpunkt senden und ereignisähnliches Verhalten bereitstellen. Duplexkommunikation tritt auf, wenn ein Client eine Sitzung mit einem Dienst herstellt und den Dienst mit einem Kanal bereitstellt, in dem der Dienst Nachrichten zurück an den Client senden kann. Die verschiedenen CreateChannel Methoden werden verwendet, um diese Duplexkanäle zu erstellen. Das Duplexnachrichtenmuster ist eines von drei Nachrichtenmustern, die windows Communication Foundation (WCF)-Diensten zur Verfügung stehen. Die anderen beiden Nachrichtenmuster sind unidirektionale und Anforderungsantworten.

Eine allgemeine Erläuterung der Duplexdienste, mit denen Clients eine Verbindung mit dem Dienst herstellen können, finden Sie unter Duplexdienste. Eine Gliederung und Erläuterung der Schritte zum Schreiben einer Windows Communication Foundation (WCF)-Clientanwendung mithilfe einer Kanalfactory finden Sie unter How to: Use the ChannelFactory. Eine Prozedur, die beschreibt, wie ein Windows Communication Foundation (WCF)-Client in einer Clientklasse erstellt wird, die die Rückrufschnittstelle für den Zugriff auf einen Dienst implementiert, der ein Duplexnachrichtenmuster verwendet, finden Sie unter How to: Access Services with a Duplex Contract.

Konstruktoren

DuplexChannelFactory<TChannel>(InstanceContext)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit dem angegebenen Instanzkontext.

DuplexChannelFactory<TChannel>(InstanceContext, Binding)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel>-Klasse mit einem Kontext, der den Rückrufvertrag und eine angegebene Bindung implementiert.

DuplexChannelFactory<TChannel>(InstanceContext, Binding, EndpointAddress)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit einem Objekt, das den Rückrufvertrag und eine angegebene Bindungs- und Endpunktadresse implementiert.

DuplexChannelFactory<TChannel>(InstanceContext, Binding, String)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit angegebenem Instanzkontext, Bindung und Remoteadresse.

DuplexChannelFactory<TChannel>(InstanceContext, ServiceEndpoint)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit einem Objekt, das den Rückrufvertrag und einen angegebenen Endpunkt implementiert.

DuplexChannelFactory<TChannel>(InstanceContext, String)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit einem Objekt, das den Rückrufvertrag und eine angegebene Konfiguration implementiert.

DuplexChannelFactory<TChannel>(InstanceContext, String, EndpointAddress)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel>-Klasse mit einem Objekt, das den Rückrufvertrag und eine angegebene Konfigurations- und Endpunktadresse implementiert.

DuplexChannelFactory<TChannel>(Object)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit einem Objekt, das den Rückrufvertrag implementiert.

DuplexChannelFactory<TChannel>(Object, Binding)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel>-Klasse mit einem Objekt, das den Rückrufvertrag und eine angegebene Bindung implementiert.

DuplexChannelFactory<TChannel>(Object, Binding, EndpointAddress)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit einem Objekt, das den Rückrufvertrag und eine angegebene Bindungs- und Endpunktadresse implementiert.

DuplexChannelFactory<TChannel>(Object, Binding, String)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit angegebenem Rückrufobjekt, Bindung und Remoteadresse.

DuplexChannelFactory<TChannel>(Object, ServiceEndpoint)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit einem Objekt, das den Rückrufvertrag und einen angegebenen Endpunkt implementiert.

DuplexChannelFactory<TChannel>(Object, String)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit einem Objekt, das den Rückrufvertrag und eine angegebene Konfiguration implementiert.

DuplexChannelFactory<TChannel>(Object, String, EndpointAddress)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel>-Klasse mit einem Objekt, das den Rückrufvertrag implementiert, und eine angegebene Konfigurations- und Endpunktadresse.

DuplexChannelFactory<TChannel>(Type)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit dem angegebenen Rückrufinstanztyp.

DuplexChannelFactory<TChannel>(Type, Binding)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit dem angegebenen Rückrufinstanz- und Bindungstyp.

DuplexChannelFactory<TChannel>(Type, Binding, EndpointAddress)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit dem angegebenen Typ von Rückrufinstanz, Bindung und Remoteadresse.

DuplexChannelFactory<TChannel>(Type, Binding, String)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit dem angegebenen Typ von Rückrufinstanz, Bindung und Remoteadresse.

DuplexChannelFactory<TChannel>(Type, ServiceEndpoint)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit dem angegebenen Typ von Rückrufinstanz und Dienstendpunkt.

DuplexChannelFactory<TChannel>(Type, String)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit dem angegebenen Rückrufinstanz- und Konfigurationstyp.

DuplexChannelFactory<TChannel>(Type, String, EndpointAddress)

Initialisiert eine neue Instanz der DuplexChannelFactory<TChannel> Klasse mit dem angegebenen Typ von Rückrufinstanz, Konfiguration und Remoteadresse.

Eigenschaften

Credentials

Ruft die Anmeldeinformationen ab, die von Clients zum Kommunizieren eines Dienstendpunkts über die von der Factory erstellten Kanäle verwendet werden.

(Geerbt von ChannelFactory)
DefaultCloseTimeout

Ruft das Standardintervall der Zeit ab, die für einen Abschlussvorgang bereitgestellt wird.

(Geerbt von ChannelFactory)
DefaultOpenTimeout

Ruft das Standardintervall der Zeit ab, die für einen geöffneten Vorgang bereitgestellt wird, der abgeschlossen werden soll.

(Geerbt von ChannelFactory)
Endpoint

Ruft den Dienstendpunkt ab, mit dem die kanäle, die von der Werksverbindung erstellt wurden.

(Geerbt von ChannelFactory)
IsDisposed

Ruft einen Wert ab, der angibt, ob das Kommunikationsobjekt verworfen wurde.

(Geerbt von CommunicationObject)
State

Ruft einen Wert ab, der den aktuellen Status des Kommunikationsobjekts angibt.

(Geerbt von CommunicationObject)
ThisLock

Ruft die sich gegenseitig ausschließende Sperre ab, die die Klasseninstanz während eines Zustandsübergangs schützt.

(Geerbt von CommunicationObject)

Methoden

Abort()

Bewirkt, dass ein Kommunikationsobjekt sofort vom aktuellen Zustand in den Schließen-Zustand wechselt.

(Geerbt von CommunicationObject)
ApplyConfiguration(String)

Initialisiert die Kanalfactory mit den Verhaltensweisen, die von einer angegebenen Konfigurationsdatei und mit denen im Dienstendpunkt der Kanalfactory bereitgestellt werden.

(Geerbt von ChannelFactory)
BeginClose(AsyncCallback, Object)

Startet einen asynchronen Vorgang zum Schließen eines Kommunikationsobjekts.

(Geerbt von CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

Startet einen asynchronen Vorgang zum Schließen eines Kommunikationsobjekts mit einem angegebenen Timeout.

(Geerbt von CommunicationObject)
BeginOpen(AsyncCallback, Object)

Startet einen asynchronen Vorgang zum Öffnen eines Kommunikationsobjekts.

(Geerbt von CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

Startet einen asynchronen Vorgang, um ein Kommunikationsobjekt innerhalb eines bestimmten Zeitintervalls zu öffnen.

(Geerbt von CommunicationObject)
Close()

Bewirkt, dass ein Kommunikationsobjekt vom aktuellen Zustand in den geschlossenen Zustand wechselt.

(Geerbt von CommunicationObject)
Close(TimeSpan)

Bewirkt, dass ein Kommunikationsobjekt innerhalb eines bestimmten Zeitintervalls vom aktuellen Zustand in den geschlossenen Zustand wechselt.

(Geerbt von CommunicationObject)
CreateChannel()

Erstellt einen Kanal eines angegebenen Typs zu einer angegebenen Endpunktadresse.

(Geerbt von ChannelFactory<TChannel>)
CreateChannel(EndpointAddress)

Erstellt einen Kanal, der zum Senden von Nachrichten an einen Dienst an eine bestimmte Endpunktadresse verwendet wird.

(Geerbt von ChannelFactory<TChannel>)
CreateChannel(EndpointAddress, Uri)

Erstellt einen Duplexkanal zwischen einem Dienst und einer Rückrufinstanz auf dem Client.

CreateChannel(InstanceContext)

Erstellt einen Duplexkanal zwischen einem Dienst und einer Rückrufinstanz auf dem Client.

CreateChannel(InstanceContext, Binding, EndpointAddress)

Erstellt einen Duplexkanal zwischen einem Dienst und einer Rückrufinstanz auf dem Client.

CreateChannel(InstanceContext, Binding, EndpointAddress, Uri)

Erstellt einen Duplexkanal zwischen einem Dienst und einer Rückrufinstanz auf dem Client.

CreateChannel(InstanceContext, EndpointAddress)

Erstellt einen Duplexkanal zwischen einem Dienst und einer Rückrufinstanz auf dem Client.

CreateChannel(InstanceContext, EndpointAddress, Uri)

Erstellt einen Duplexkanal zwischen einem Dienst und einer Rückrufinstanz auf dem Client.

CreateChannel(InstanceContext, String)

Erstellt einen Duplexkanal zwischen einem Dienst und einer Rückrufinstanz auf dem Client.

CreateChannel(Object, Binding, EndpointAddress)

Erstellt einen Duplexkanal zwischen einem Dienst und einer Rückrufinstanz auf dem Client.

CreateChannel(Object, Binding, EndpointAddress, Uri)

Erstellt einen Duplexkanal zwischen einem Dienst und einer Rückrufinstanz auf dem Client.

CreateChannel(Object, String)

Erstellt einen Duplexkanal zwischen einem Dienst und einer Rückrufinstanz auf dem Client.

CreateChannelWithActAsToken(SecurityToken)

Erstellt einen Kanal, der zum Senden von Nachrichten an einen Dienst mit einem Sicherheitstoken verwendet wird.

(Geerbt von ChannelFactory<TChannel>)
CreateChannelWithActAsToken(SecurityToken, EndpointAddress)

Erstellt einen Kanal, der zum Senden von Nachrichten an einen Dienst mit einem Sicherheitstoken an einer bestimmten Endpunktadresse verwendet wird.

(Geerbt von ChannelFactory<TChannel>)
CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri)

Erstellt einen Kanal, der zum Senden von Nachrichten an einen Dienst mit einem Sicherheitstoken an einer bestimmten Endpunktadresse über eine angegebene Transportadresse verwendet wird.

(Geerbt von ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken)

Erstellt einen Kanal, der zum Senden von Nachrichten an einen Dienst mit einem ausgestellten Sicherheitstoken verwendet wird.

(Geerbt von ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress)

Erstellt einen Kanal, der zum Senden von Nachrichten an einen Dienst mit einem ausgestellten Sicherheitstoken an einer bestimmten Endpunktadresse verwendet wird.

(Geerbt von ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri)

Erstellt einen Kanal, der zum Senden von Nachrichten an einen Dienst mit einem ausgestellten Sicherheitstoken an einer bestimmten Endpunktadresse über eine bestimmte Transportadresse verwendet wird.

(Geerbt von ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken)

Erstellt einen Kanal, der zum Senden von Nachrichten an einen Dienst mit einem Sicherheitstoken verwendet wird.

(Geerbt von ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress)

Erstellt einen Kanal, der zum Senden von Nachrichten an einen Dienst mit einem Sicherheitstoken in einem bestimmten Endpunktadresse verwendet wird.

(Geerbt von ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri)

Erstellt einen Kanal, der zum Senden von Nachrichten an einen Dienst mit einem Sicherheitstoken in einem bestimmten Endpunktadresse über eine bestimmte Transportadresse verwendet wird.

(Geerbt von ChannelFactory<TChannel>)
CreateDescription()

Erstellt eine Beschreibung des Dienstendpunkts.

(Geerbt von ChannelFactory<TChannel>)
CreateFactory()

Erstellt die Kanalfactory für den aktuellen Endpunkt der Factory.

(Geerbt von ChannelFactory)
EndClose(IAsyncResult)

Schließt einen asynchronen Vorgang zum Schließen eines Kommunikationsobjekts ab.

(Geerbt von CommunicationObject)
EndOpen(IAsyncResult)

Schließt einen asynchronen Vorgang zum Öffnen eines Kommunikationsobjekts ab.

(Geerbt von CommunicationObject)
EnsureOpened()

Öffnet die aktuelle Kanalfactory, wenn sie noch nicht geöffnet ist.

(Geerbt von ChannelFactory)
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
Fault()

Bewirkt, dass ein Kommunikationsobjekt vom aktuellen Zustand in den fehlerhaften Zustand wechselt.

(Geerbt von CommunicationObject)
GetCommunicationObjectType()

Ruft den Typ des Kommunikationsobjekts ab.

(Geerbt von CommunicationObject)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetProperty<T>()

Gibt das eingegebene Objekt zurück, falls vorhanden, von der entsprechenden Ebene im Kanalstapel oder null, falls nicht vorhanden.

(Geerbt von ChannelFactory)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
InitializeEndpoint(Binding, EndpointAddress)

Initialisiert den Dienstendpunkt der Kanalfactory mit einer angegebenen Bindung und Adresse.

(Geerbt von ChannelFactory)
InitializeEndpoint(ServiceEndpoint)

Initialisiert den Dienstendpunkt der Kanalfactory mit einem angegebenen Endpunkt.

(Geerbt von ChannelFactory)
InitializeEndpoint(String, EndpointAddress)

Initialisiert den Dienstendpunkt der Kanalfactory mit einer angegebenen Adresse und Konfiguration.

(Geerbt von ChannelFactory)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
OnAbort()

Beendet die interne Kanalfactory der aktuellen Kanalfactory.

(Geerbt von ChannelFactory)
OnBeginClose(TimeSpan, AsyncCallback, Object)

Startet einen asynchronen Close-Vorgang auf der inneren Kanalfactory der aktuellen Kanalfactory, der ein Zustandsobjekt zugeordnet ist.

(Geerbt von ChannelFactory)
OnBeginOpen(TimeSpan, AsyncCallback, Object)

Startet einen asynchronen Geöffneten Vorgang auf der internen Kanalfactory der aktuellen Kanalfactory, der ein Zustandsobjekt zugeordnet ist.

(Geerbt von ChannelFactory)
OnClose(TimeSpan)

Anrufe schließen sich in der internen Kanalfactory mit einem angegebenen Timeout für den Abschluss des Vorgangs.

(Geerbt von ChannelFactory)
OnClosed()

Wird während des Übergangs eines Kommunikationsobjekts in den Abschlusszustand aufgerufen.

(Geerbt von CommunicationObject)
OnClosing()

Wird während des Übergangs eines Kommunikationsobjekts in den Abschlusszustand aufgerufen.

(Geerbt von CommunicationObject)
OnEndClose(IAsyncResult)

Schließt einen asynchronen Close-Vorgang auf der internen Kanalfactory der aktuellen Kanalfactory ab.

(Geerbt von ChannelFactory)
OnEndOpen(IAsyncResult)

Schließt einen asynchronen Geöffneten Vorgang auf der internen Kanalfactory der aktuellen Kanalfactory ab.

(Geerbt von ChannelFactory)
OnFaulted()

Fügt die Verarbeitung in ein Kommunikationsobjekt ein, nachdem es aufgrund des Aufrufs eines synchronen Fehlervorgangs in den fehlerhaften Zustand wechselt.

(Geerbt von CommunicationObject)
OnOpen(TimeSpan)

Anrufe werden auf der internen Kanalfactory der aktuellen Kanalfactory geöffnet, wobei ein angegebenes Timeout für den Abschluss des Vorgangs angegeben ist.

(Geerbt von ChannelFactory)
OnOpened()

Initialisiert eine schreibgeschützte Kopie des ClientCredentials-Objekts für die Kanalfactory.

(Geerbt von ChannelFactory)
OnOpening()

Erstellt die interne Kanalfactory für den aktuellen Kanal.

(Geerbt von ChannelFactory)
Open()

Bewirkt, dass ein Kommunikationsobjekt vom erstellten Zustand in den geöffneten Zustand wechselt.

(Geerbt von CommunicationObject)
Open(TimeSpan)

Bewirkt, dass ein Kommunikationsobjekt innerhalb eines bestimmten Zeitintervalls vom erstellten Zustand in den geöffneten Zustand wechselt.

(Geerbt von CommunicationObject)
ThrowIfDisposed()

Löst eine Ausnahme aus, wenn das Kommunikationsobjekt verworfen wird.

(Geerbt von CommunicationObject)
ThrowIfDisposedOrImmutable()

Löst eine Ausnahme aus, wenn das Kommunikationsobjekt, das die eigenschaft State, nicht auf den Created Zustand festgelegt ist.

(Geerbt von CommunicationObject)
ThrowIfDisposedOrNotOpen()

Löst eine Ausnahme aus, wenn sich das Kommunikationsobjekt nicht im Opened Zustand befindet.

(Geerbt von CommunicationObject)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Ereignisse

Closed

Tritt auf, wenn ein Kommunikationsobjekt in den geschlossenen Zustand wechselt.

(Geerbt von CommunicationObject)
Closing

Tritt auf, wenn ein Kommunikationsobjekt in den Schließen-Zustand wechselt.

(Geerbt von CommunicationObject)
Faulted

Tritt auf, wenn ein Kommunikationsobjekt in den fehlerhaften Zustand wechselt.

(Geerbt von CommunicationObject)
Opened

Tritt auf, wenn ein Kommunikationsobjekt in den geöffneten Zustand wechselt.

(Geerbt von CommunicationObject)
Opening

Tritt auf, wenn ein Kommunikationsobjekt in den Öffnungszustand wechselt.

(Geerbt von CommunicationObject)

Explizite Schnittstellenimplementierungen

IAsyncDisposable.DisposeAsync()

Stellt die Möglichkeit zum Erstellen und Verwalten von Duplexkanälen verschiedener Typen bereit, die von Clients zum Senden und Empfangen von Nachrichten an und von Dienstendpunkten verwendet werden.

(Geerbt von ChannelFactory)
IDisposable.Dispose()

Schließt die aktuelle Kanalfactory.

(Geerbt von ChannelFactory)

Erweiterungsmethoden

ConfigureAwait(IAsyncDisposable, Boolean)

Konfiguriert, wie auf die von einem asynchronen Einweg zurückgegebenen Aufgaben gewartet wird.

Gilt für: