DuplexChannelFactory<TChannel> Klass

Definition

Ger möjlighet att skapa och hantera duplexkanaler av olika typer som används av klienter för att skicka och ta emot meddelanden till och från tjänstslutpunkter.

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)

Typparametrar

TChannel

Den typ av kanal som produceras av kanalfabriken.

Arv
Härledda

Exempel

Följande exempel visar hur du skapar en kanalfabrik och använder den för att skapa och hantera kanaler.

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

Kommentarer

Med en duplexkanal kan klienter och servrar kommunicera med varandra oberoende av varandra så att de kan initiera anrop till varandra. En duplex-tjänst kan skicka meddelanden till klientslutpunkten och tillhandahålla händelseliknande beteende. Duplex-kommunikation sker när en klient upprättar en session med en tjänst och tillhandahåller tjänsten med en kanal där tjänsten kan skicka meddelanden tillbaka till klienten. De olika CreateChannel metoderna används för att skapa dessa duplex-kanaler. Duplex-meddelandemönstret är ett av tre meddelandemönster som är tillgängliga för Windows Communication Foundation(WCF)-tjänster. De andra två meddelandemönstren är envägs och begärandesvar.

En allmän diskussion om duplex-tjänster som gör det möjligt för klienter att ansluta tillbaka till tjänsten finns i Duplex Services. En översikt och en beskrivning av stegen för att skriva ett Windows Communication Foundation-klientprogram (WCF) med hjälp av en kanalfabrik finns i How to: Use the ChannelFactory. En procedur som beskriver hur du skapar en Windows Communication Foundation-klient (WCF) i en klientklass som implementerar motringningsgränssnittet för att få åtkomst till en tjänst som använder ett duplex-meddelandemönster finns i Så här: Access Services med ett Duplex-kontrakt.

Konstruktorer

Name Description
DuplexChannelFactory<TChannel>(InstanceContext, Binding, EndpointAddress)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med ett objekt som implementerar återanropskontraktet och en angiven bindning och slutpunktsadress.

DuplexChannelFactory<TChannel>(InstanceContext, Binding, String)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med angiven instanskontext, bindning och fjärradress.

DuplexChannelFactory<TChannel>(InstanceContext, Binding)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med en kontext som implementerar återanropskontraktet och en angiven bindning.

DuplexChannelFactory<TChannel>(InstanceContext, ServiceEndpoint)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med ett objekt som implementerar återanropskontraktet och en angiven slutpunkt.

DuplexChannelFactory<TChannel>(InstanceContext, String, EndpointAddress)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med ett objekt som implementerar återanropskontraktet och en angiven konfigurations- och slutpunktsadress.

DuplexChannelFactory<TChannel>(InstanceContext, String)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med ett objekt som implementerar återanropskontraktet och en angiven konfiguration.

DuplexChannelFactory<TChannel>(InstanceContext)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med angiven instanskontext.

DuplexChannelFactory<TChannel>(Object, Binding, EndpointAddress)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med ett objekt som implementerar återanropskontraktet och en angiven bindning och slutpunktsadress.

DuplexChannelFactory<TChannel>(Object, Binding, String)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med angivet motringningsobjekt, bindning och fjärradress.

DuplexChannelFactory<TChannel>(Object, Binding)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med ett objekt som implementerar återanropskontraktet och en angiven bindning.

DuplexChannelFactory<TChannel>(Object, ServiceEndpoint)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med ett objekt som implementerar återanropskontraktet och en angiven slutpunkt.

DuplexChannelFactory<TChannel>(Object, String, EndpointAddress)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med ett objekt som implementerar återanropskontraktet och en angiven konfigurations- och slutpunktsadress.

DuplexChannelFactory<TChannel>(Object, String)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med ett objekt som implementerar återanropskontraktet och en angiven konfiguration.

DuplexChannelFactory<TChannel>(Object)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med ett objekt som implementerar återanropskontraktet.

DuplexChannelFactory<TChannel>(Type, Binding, EndpointAddress)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med angiven typ av motringningsinstans, bindning och fjärradress.

DuplexChannelFactory<TChannel>(Type, Binding, String)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med den angivna typen av motringningsinstans, bindning och fjärradress.

DuplexChannelFactory<TChannel>(Type, Binding)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med angiven typ av motringningsinstans och bindning.

DuplexChannelFactory<TChannel>(Type, ServiceEndpoint)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med angiven typ av motringningsinstans och tjänstslutpunkt.

DuplexChannelFactory<TChannel>(Type, String, EndpointAddress)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med den angivna typen av motringningsinstans, konfiguration och fjärradress.

DuplexChannelFactory<TChannel>(Type, String)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med angiven typ av motringningsinstans och konfiguration.

DuplexChannelFactory<TChannel>(Type)

Initierar en ny instans av DuplexChannelFactory<TChannel> klassen med den angivna typen av motringningsinstans.

Egenskaper

Name Description
Credentials

Hämtar de autentiseringsuppgifter som används av klienter för att kommunicera en tjänstslutpunkt via de kanaler som produceras av fabriken.

(Ärvd från ChannelFactory)
DefaultCloseTimeout

Hämtar standardintervallet för den tid som angetts för att en stängningsåtgärd ska slutföras.

(Ärvd från ChannelFactory)
DefaultOpenTimeout

Hämtar standardintervallet för den tid som angetts för att en öppen åtgärd ska slutföras.

(Ärvd från ChannelFactory)
Endpoint

Hämtar tjänstslutpunkten som kanalerna som produceras av fabriken ansluter till.

(Ärvd från ChannelFactory)
IsDisposed

Hämtar ett värde som anger om kommunikationsobjektet har tagits bort.

(Ärvd från CommunicationObject)
State

Hämtar ett värde som anger det aktuella tillståndet för kommunikationsobjektet.

(Ärvd från CommunicationObject)
ThisLock

Hämtar det ömsesidigt uteslutande låset som skyddar klassinstansen under en tillståndsövergång.

(Ärvd från CommunicationObject)

Metoder

Name Description
Abort()

Gör att ett kommunikationsobjekt omedelbart övergår från dess aktuella tillstånd till det avslutande tillståndet.

(Ärvd från CommunicationObject)
ApplyConfiguration(String)

Initierar kanalfabriken med de beteenden som tillhandahålls av en angiven konfigurationsfil och med dem i tjänstslutpunkten för kanalfabriken.

(Ärvd från ChannelFactory)
BeginClose(AsyncCallback, Object)

Påbörjar en asynkron åtgärd för att stänga ett kommunikationsobjekt.

(Ärvd från CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

Påbörjar en asynkron åtgärd för att stänga ett kommunikationsobjekt med en angiven tidsgräns.

(Ärvd från CommunicationObject)
BeginOpen(AsyncCallback, Object)

Påbörjar en asynkron åtgärd för att öppna ett kommunikationsobjekt.

(Ärvd från CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

Påbörjar en asynkron åtgärd för att öppna ett kommunikationsobjekt inom ett angivet tidsintervall.

(Ärvd från CommunicationObject)
Close()

Gör att ett kommunikationsobjekt övergår från dess aktuella tillstånd till det stängda tillståndet.

(Ärvd från CommunicationObject)
Close(TimeSpan)

Gör att ett kommunikationsobjekt övergår från dess aktuella tillstånd till det stängda tillståndet inom ett angivet tidsintervall.

(Ärvd från CommunicationObject)
CreateChannel()

Skapar en kanal av en angiven typ till en angiven slutpunktsadress.

(Ärvd från ChannelFactory<TChannel>)
CreateChannel(EndpointAddress, Uri)

Skapar en duplex-kanal mellan en tjänst och en motringningsinstans på klienten.

CreateChannel(EndpointAddress)

Skapar en kanal som används för att skicka meddelanden till en tjänst på en specifik slutpunktsadress.

(Ärvd från ChannelFactory<TChannel>)
CreateChannel(InstanceContext, Binding, EndpointAddress, Uri)

Skapar en duplex-kanal mellan en tjänst och en motringningsinstans på klienten.

CreateChannel(InstanceContext, Binding, EndpointAddress)

Skapar en duplex-kanal mellan en tjänst och en motringningsinstans på klienten.

CreateChannel(InstanceContext, EndpointAddress, Uri)

Skapar en duplex-kanal mellan en tjänst och en motringningsinstans på klienten.

CreateChannel(InstanceContext, EndpointAddress)

Skapar en duplex-kanal mellan en tjänst och en motringningsinstans på klienten.

CreateChannel(InstanceContext, String)

Skapar en duplex-kanal mellan en tjänst och en motringningsinstans på klienten.

CreateChannel(InstanceContext)

Skapar en duplex-kanal mellan en tjänst och en motringningsinstans på klienten.

CreateChannel(Object, Binding, EndpointAddress, Uri)

Skapar en duplex-kanal mellan en tjänst och en motringningsinstans på klienten.

CreateChannel(Object, Binding, EndpointAddress)

Skapar en duplex-kanal mellan en tjänst och en motringningsinstans på klienten.

CreateChannel(Object, String)

Skapar en duplex-kanal mellan en tjänst och en motringningsinstans på klienten.

CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en åtgärd som säkerhetstoken på en specifik slutpunktsadress via en angiven transportadress.

(Ärvd från ChannelFactory<TChannel>)
CreateChannelWithActAsToken(SecurityToken, EndpointAddress)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en åtgärd som säkerhetstoken på en specifik slutpunktsadress.

(Ärvd från ChannelFactory<TChannel>)
CreateChannelWithActAsToken(SecurityToken)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en åtgärd som säkerhetstoken.

(Ärvd från ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en utfärdad säkerhetstoken på en specifik slutpunktsadress via en angiven transportadress.

(Ärvd från ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken, EndpointAddress)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en utfärdad säkerhetstoken på en specifik slutpunktsadress.

(Ärvd från ChannelFactory<TChannel>)
CreateChannelWithIssuedToken(SecurityToken)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en utfärdad säkerhetstoken.

(Ärvd från ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en för säkerhetstokens räkning på en specifik slutpunktsadress via en angiven transportadress.

(Ärvd från ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en för säkerhetstokens räkning på en specifik slutpunktsadress.

(Ärvd från ChannelFactory<TChannel>)
CreateChannelWithOnBehalfOfToken(SecurityToken)

Skapar en kanal som används för att skicka meddelanden till en tjänst med en för säkerhetstokens räkning.

(Ärvd från ChannelFactory<TChannel>)
CreateDescription()

Skapar en beskrivning av tjänstslutpunkten.

(Ärvd från ChannelFactory<TChannel>)
CreateFactory()

Skapar kanalfabriken för den aktuella slutpunkten för fabriken.

(Ärvd från ChannelFactory)
EndClose(IAsyncResult)

Slutför en asynkron åtgärd för att stänga ett kommunikationsobjekt.

(Ärvd från CommunicationObject)
EndOpen(IAsyncResult)

Slutför en asynkron åtgärd för att öppna ett kommunikationsobjekt.

(Ärvd från CommunicationObject)
EnsureOpened()

Öppnar den aktuella kanalfabriken om den inte har öppnats ännu.

(Ärvd från ChannelFactory)
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
Fault()

Gör att ett kommunikationsobjekt övergår från dess aktuella tillstånd till det felaktiga tillståndet.

(Ärvd från CommunicationObject)
GetCommunicationObjectType()

Hämtar typen av kommunikationsobjekt.

(Ärvd från CommunicationObject)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetProperty<T>()

Returnerar det typerade objektet som begärs, om det finns, från lämpligt lager i kanalstacken eller null om det inte finns.

(Ärvd från ChannelFactory)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
InitializeEndpoint(Binding, EndpointAddress)

Initierar tjänstslutpunkten för kanalfabriken med en angiven bindning och adress.

(Ärvd från ChannelFactory)
InitializeEndpoint(ServiceEndpoint)

Initierar tjänstslutpunkten för kanalfabriken med en angiven slutpunkt.

(Ärvd från ChannelFactory)
InitializeEndpoint(String, EndpointAddress)

Initierar tjänstslutpunkten för kanalfabriken med en angiven adress och konfiguration.

(Ärvd från ChannelFactory)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
OnAbort()

Avslutar den inre kanalfabriken för den aktuella kanalfabriken.

(Ärvd från ChannelFactory)
OnBeginClose(TimeSpan, AsyncCallback, Object)

Påbörjar en asynkron stängningsåtgärd på den inre kanalfabriken i den aktuella kanalfabriken som har ett tillståndsobjekt associerat med den.

(Ärvd från ChannelFactory)
OnBeginOpen(TimeSpan, AsyncCallback, Object)

Påbörjar en asynkron öppen åtgärd på den inre kanalfabriken i den aktuella kanalfabriken som har ett tillståndsobjekt associerat med den.

(Ärvd från ChannelFactory)
OnClose(TimeSpan)

Anrop stänger på den inre kanalfabriken med en angiven tidsgräns för slutförandet av åtgärden.

(Ärvd från ChannelFactory)
OnClosed()

Anropas under övergången av ett kommunikationsobjekt till stängningstillståndet.

(Ärvd från CommunicationObject)
OnClosing()

Anropas under övergången av ett kommunikationsobjekt till stängningstillståndet.

(Ärvd från CommunicationObject)
OnEndClose(IAsyncResult)

Slutför en asynkron stängningsåtgärd på den inre kanalfabriken i den aktuella kanalfabriken.

(Ärvd från ChannelFactory)
OnEndOpen(IAsyncResult)

Slutför en asynkron öppen åtgärd på den inre kanalfabriken i den aktuella kanalfabriken.

(Ärvd från ChannelFactory)
OnFaulted()

Infogar bearbetning av ett kommunikationsobjekt när det övergår till feltillståndet på grund av att en synkron felåtgärd har anropats.

(Ärvd från CommunicationObject)
OnOpen(TimeSpan)

Anrop öppnas på den inre kanalfabriken i den aktuella kanalfabriken med en angiven tidsgräns för slutförandet av åtgärden.

(Ärvd från ChannelFactory)
OnOpened()

Initierar en skrivskyddad kopia av ClientCredentials objektet för kanalfabriken.

(Ärvd från ChannelFactory)
OnOpening()

Skapar den inre kanalfabriken för den aktuella kanalen.

(Ärvd från ChannelFactory)
Open()

Gör att ett kommunikationsobjekt övergår från det skapade tillståndet till det öppnade tillståndet.

(Ärvd från CommunicationObject)
Open(TimeSpan)

Gör att ett kommunikationsobjekt övergår från det skapade tillståndet till det öppna tillståndet inom ett angivet tidsintervall.

(Ärvd från CommunicationObject)
ThrowIfDisposed()

Utlöser ett undantag om kommunikationsobjektet tas bort.

(Ärvd från CommunicationObject)
ThrowIfDisposedOrImmutable()

Utlöser ett undantag om kommunikationsobjektet State som egenskapen inte är inställd på tillståndet Created .

(Ärvd från CommunicationObject)
ThrowIfDisposedOrNotOpen()

Utlöser ett undantag om kommunikationsobjektet inte är i tillståndet Opened .

(Ärvd från CommunicationObject)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Händelser

Name Description
Closed

Inträffar när ett kommunikationsobjekt övergår till stängt tillstånd.

(Ärvd från CommunicationObject)
Closing

Inträffar när ett kommunikationsobjekt övergår till det avslutande tillståndet.

(Ärvd från CommunicationObject)
Faulted

Inträffar när ett kommunikationsobjekt övergår till feltillståndet.

(Ärvd från CommunicationObject)
Opened

Inträffar när ett kommunikationsobjekt övergår till öppet tillstånd.

(Ärvd från CommunicationObject)
Opening

Inträffar när ett kommunikationsobjekt övergår till öppningstillståndet.

(Ärvd från CommunicationObject)

Explicita gränssnittsimplementeringar

Name Description
IDisposable.Dispose()

Stänger den aktuella kanalfabriken.

(Ärvd från ChannelFactory)

Gäller för