Freigeben über


ChannelFactory<TChannel> Klasse

Definition

Eine Factory, die Kanäle verschiedener Typen erstellt, die von Clients zum Senden von Nachrichten an verschiedene konfigurierte Dienstendpunkte verwendet werden.

generic <typename TChannel>
public ref class ChannelFactory : System::ServiceModel::ChannelFactory, System::ServiceModel::Channels::IChannelFactory<TChannel>
public class ChannelFactory<TChannel> : System.ServiceModel.ChannelFactory, System.ServiceModel.Channels.IChannelFactory<TChannel>
type ChannelFactory<'Channel> = class
    inherit ChannelFactory
    interface IChannelFactory<'Channel>
    interface IChannelFactory
    interface ICommunicationObject
type ChannelFactory<'Channel> = class
    inherit ChannelFactory
    interface IChannelFactory
    interface ICommunicationObject
    interface IChannelFactory<'Channel>
Public Class ChannelFactory(Of TChannel)
Inherits ChannelFactory
Implements IChannelFactory(Of TChannel)

Typparameter

TChannel

Der Typ des Kanals, der von der Kanalfabrik produziert wird. Dieser Typ muss entweder IOutputChannel oder IRequestChannelsein.

Vererbung
ChannelFactory<TChannel>
Abgeleitet
Implementiert

Beispiele

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

    BasicHttpBinding binding = new BasicHttpBinding();
    EndpointAddress address = new EndpointAddress("http://localhost:8000/ChannelApp");

    ChannelFactory<IRequestChannel> factory =
        new ChannelFactory<IRequestChannel>(binding, address);

    IRequestChannel channel = factory.CreateChannel();
    channel.Open();
    Message request = Message.CreateMessage(MessageVersion.Soap11, "hello");
    Message reply = channel.Request(request);
    Console.Out.WriteLine(reply.Headers.Action);
    reply.Close();
    channel.Close();
    factory.Close();
}

Im folgenden Codebeispiel wird gezeigt, wie ein Clientverhalten vor der Erstellung des Kanalobjekts durch die Factory programmgesteuert eingefügt wird.

public class Client
{
  public static void Main()
  {
    try
    {
      // Picks up configuration from the config file.
      ChannelFactory<ISampleServiceChannel> factory
        = new ChannelFactory<ISampleServiceChannel>("WSHttpBinding_ISampleService");

      // Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(new EndpointBehaviorMessageInspector());

      ISampleServiceChannel wcfClientChannel = factory.CreateChannel();

      // Making calls.
      Console.WriteLine("Enter the greeting to send: ");
      string greeting = Console.ReadLine();
      Console.WriteLine("The service responded: " + wcfClientChannel.SampleMethod(greeting));

      Console.WriteLine("Press ENTER to exit:");
      Console.ReadLine();

      // Done with service.
      wcfClientChannel.Close();
      Console.WriteLine("Done!");
    }
    catch (TimeoutException timeProblem)
    {
      Console.WriteLine("The service operation timed out. " + timeProblem.Message);
      Console.Read();
    }
    catch (FaultException<SampleFault> fault)
    {
      Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage);
      Console.Read();
    }
    catch (CommunicationException commProblem)
    {
      Console.WriteLine("There was a communication problem. " + commProblem.Message);
      Console.Read();
    }
  }
Public Class Client
  Public Shared Sub Main()
    Try
      ' Picks up configuration from the config file.
      Dim factory As New ChannelFactory(Of ISampleServiceChannel)("WSHttpBinding_ISampleService")

      ' Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(New EndpointBehaviorMessageInspector())

      Dim wcfClientChannel As ISampleServiceChannel = factory.CreateChannel()

      ' Making calls.
      Console.WriteLine("Enter the greeting to send: ")
            Dim greeting As String = Console.ReadLine()
      Console.WriteLine("The service responded: " & wcfClientChannel.SampleMethod(greeting))

      Console.WriteLine("Press ENTER to exit:")
      Console.ReadLine()

      ' Done with service. 
      wcfClientChannel.Close()
      Console.WriteLine("Done!")
    Catch timeProblem As TimeoutException
      Console.WriteLine("The service operation timed out. " & timeProblem.Message)
      Console.Read()
    Catch fault As FaultException(Of SampleFault)
      Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage)
      Console.Read()
    Catch commProblem As CommunicationException
      Console.WriteLine("There was a communication problem. " & commProblem.Message)
      Console.Read()
    End Try
  End Sub

Hinweise

Diese generische Klasse ermöglicht komplexere Szenarien, in denen eine Anforderung zum Erstellen einer Kanalfactory besteht, die zum Erstellen mehrerer Kanaltypen verwendet werden kann.

Beim programmgesteuerten Hinzufügen von Verhaltensweisen wird das Verhalten der entsprechenden Behaviors-Eigenschaft des ChannelFactory vor der Erstellung eines Kanals hinzugefügt. Ein Codebeispiel finden Sie im Beispielabschnitt.

Häufig sind Client- oder Aufrufen von Anwendungen (z. B. Anwendungen auf mittlerer Ebene auch Clientanwendungen), die diesen Typ verwenden, auch komplexe Zustandsverwaltungsanforderungen sowie Leistungsanforderungen aufweisen. Weitere Informationen zu diesen Szenarien finden Sie unter Middle-Tier client applications.

Konstruktoren

ChannelFactory<TChannel>()

Initialisiert eine neue Instanz der ChannelFactory<TChannel> Klasse.

ChannelFactory<TChannel>(Binding)

Initialisiert eine neue Instanz der ChannelFactory<TChannel> Klasse.

ChannelFactory<TChannel>(Binding, EndpointAddress)

Initialisiert eine neue Instanz der ChannelFactory<TChannel> Klasse mit einer angegebenen Bindungs- und Endpunktadresse.

ChannelFactory<TChannel>(Binding, String)

Initialisiert eine neue Instanz der ChannelFactory<TChannel> Klasse mit einer angegebenen Bindungs- und Remoteadresse.

ChannelFactory<TChannel>(ServiceEndpoint)

Initialisiert eine neue Instanz der ChannelFactory<TChannel>-Klasse, die Kanäle mit einem angegebenen Endpunkt erzeugt.

ChannelFactory<TChannel>(String)

Initialisiert eine neue Instanz der ChannelFactory<TChannel> Klasse mit einem angegebenen Endpunktkonfigurationsnamen.

ChannelFactory<TChannel>(String, EndpointAddress)

Initialisiert eine neue Instanz der ChannelFactory<TChannel> Klasse, die einem angegebenen Namen für die Endpunktkonfiguration und Die Remoteadresse zugeordnet ist.

ChannelFactory<TChannel>(Type)

Initialisiert eine neue Instanz der ChannelFactory<TChannel> Klasse.

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.

CreateChannel(Binding, EndpointAddress)

Erstellt einen Kanal eines angegebenen Typs, der zum Senden von Nachrichten an einen Dienstendpunkt verwendet wird, der mit einer angegebenen Bindung konfiguriert ist.

CreateChannel(Binding, EndpointAddress, Uri)

Erstellt einen Kanal eines angegebenen Typs, der zum Senden von Nachrichten an einen Dienstendpunkt an eine angegebene Transportadresse verwendet wird, die mit einer angegebenen Bindung konfiguriert ist.

CreateChannel(EndpointAddress)

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

CreateChannel(EndpointAddress, Uri)

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

CreateChannel(String)

Erstellt einen Kanal, der zum Senden von Nachrichten an einen Dienst verwendet wird, dessen Endpunkt auf bestimmte Weise konfiguriert ist.

CreateChannelWithActAsToken(SecurityToken)

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

CreateChannelWithActAsToken(SecurityToken, EndpointAddress)

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

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.

CreateChannelWithIssuedToken(SecurityToken)

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

CreateChannelWithIssuedToken(SecurityToken, EndpointAddress)

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

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.

CreateChannelWithOnBehalfOfToken(SecurityToken)

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

CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress)

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

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.

CreateDescription()

Erstellt eine Beschreibung des Dienstendpunkts.

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

Eine Factory, die Kanäle verschiedener Typen erstellt, die von Clients zum Senden von Nachrichten an verschiedene konfigurierte Dienstendpunkte 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:

Threadsicherheit

Dieser Typ ist threadsicher.