ChannelFactory<TChannel> Klasse

Definition

Eine Factory, die verschiedene Kanaltypen erstellt, die von Clients zum Senden von Nachrichten an unterschiedlich 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
    interface ICommunicationObject
    interface IChannelFactory<'Channel>
type ChannelFactory<'Channel> = class
    inherit ChannelFactory
    interface IChannelFactory<'Channel>
    interface IChannelFactory
    interface ICommunicationObject
Public Class ChannelFactory(Of TChannel)
Inherits ChannelFactory
Implements IChannelFactory(Of TChannel)

Typparameter

TChannel

Der von der Kanalfactory erzeugte Kanaltyp. Dieser Typ muss entweder IOutputChannel oder IRequestChannel sein.

Vererbung
ChannelFactory<TChannel>
Abgeleitet
Implementiert

Beispiele

Das folgende Beispiel zeigt, wie eine Kanalfactory erstellt und zum Erstellen und Verwalten von Kanälen verwendet wird.

    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 das programmgesteuerte Einfügen eines Clientverhaltens vor dem Erstellen des Kanalobjekts durch die Factory veranschaulicht.

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 unterstützt erweiterte Szenarien, in denen eine Kanalfactory erstellt werden muss, die zur Erstellung mehrerer Kanaltypen eingesetzt werden kann.

Beim programmgesteuerten Hinzufügen von Verhalten, wird das Verhalten vor dem Erstellen eines Kanals der entsprechenden Behaviors-Eigenschaft in der ChannelFactory hinzugefügt. Ein Codebeispiel finden Sie im Beispielabschnitt.

Häufig haben Client- oder aufrufende Anwendungen (z. B. sind Anwendungen der mittleren Ebene auch Clientanwendungen), die diesen Typ verwenden, auch komplexe Zustandsverwaltungsanforderungen sowie Leistungsanforderungen. Weitere Informationen zu diesen Szenarien finden Sie unter Clientanwendungen der mittleren Ebene.

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 Bindung und Endpunktadresse.

ChannelFactory<TChannel>(Binding, String)

Initialisiert eine neue Instanz der ChannelFactory<TChannel>-Klasse mit einer angegebenen Bindung 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 der Remoteadresse zugeordnet ist.

ChannelFactory<TChannel>(Type)

Initialisiert eine neue Instanz der ChannelFactory<TChannel>-Klasse.

Eigenschaften

Credentials

Ruft die Anmeldeinformationen ab, die von Clients für die Kommunikation mit einem Dienstendpunkt über die von der Factory erzeugten Kanäle verwendet werden.

(Geerbt von ChannelFactory)
DefaultCloseTimeout

Ruft das Standardzeitintervall ab, das für den Abschluss eines Schließvorgangs bereitgestellt wird.

(Geerbt von ChannelFactory)
DefaultOpenTimeout

Ruft das Zeitintervall ab, das für den Abschluss eines Öffnungsvorgangs bereitgestellt wird.

(Geerbt von ChannelFactory)
Endpoint

Ruft den Dienstendpunkt ab, zu dem die von der Factory erzeugten Kanäle eine Verbindung aufbauen.

(Geerbt von ChannelFactory)
IsDisposed

Ruft einen Wert ab, mit dem angegeben wird, ob das Kommunikationsobjekt verworfen wurde.

(Geerbt von CommunicationObject)
State

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

(Geerbt von CommunicationObject)
ThisLock

Ruft die gegenseitig exklusive Sperre ab, die die Klasseninstanz während eines Zustandsübergangs schützt.

(Geerbt von CommunicationObject)

Methoden

Abort()

Bewirkt, dass ein Kommunikationsobjekt unmittelbar vom aktuellen Zustand in den Schließzustand übergeht.

(Geerbt von CommunicationObject)
ApplyConfiguration(String)

Initialisiert die Kanalfactory mit den Verhaltensweisen, die von einer bestimmten Konfigurationsdatei bereitgestellt werden, sowie mit den Verhaltensweisen im Dienstendpunkt der Kanalfactory.

(Geerbt von ChannelFactory)
BeginClose(AsyncCallback, Object)

Startet einen asynchronen Vorgang, um ein Kommunikationsobjekt zu schließen.

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

Startet einen asynchronen Vorgang, um ein Kommunikationsobjekt mit einem festgelegten Timeout zu schließen.

(Geerbt von CommunicationObject)
BeginOpen(AsyncCallback, Object)

Startet einen asynchronen Vorgang, um ein Kommunikationsobjekt zu öffnen.

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

Startet einen asynchronen Vorgang, um ein Kommunikationsobjekt innerhalb eines festgelegten Zeitraums zu öffnen.

(Geerbt von CommunicationObject)
Close()

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

(Geerbt von CommunicationObject)
Close(TimeSpan)

Bewirkt den Übergang eines Kommunikationsobjekts innerhalb eines angegebenen Zeitraums vom aktuellen Zustand in den geschlossenen Zustand.

(Geerbt von CommunicationObject)
CreateChannel()

Erstellt einen Kanal eines angegebenen Typs für eine angegebene Endpunktadresse.

CreateChannel(Binding, EndpointAddress)

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

CreateChannel(Binding, EndpointAddress, Uri)

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

CreateChannel(EndpointAddress)

Erstellt einen Kanal zum Senden von Nachrichten an einen Dienst an einer bestimmten Endpunktadresse.

CreateChannel(EndpointAddress, Uri)

Erstellt einen Kanal zum Senden von Nachrichten an einen Dienst an einer bestimmten Endpunktadresse durch eine angegebene Transportadresse.

CreateChannel(String)

Erstellt einen Kanal zum Senden von Nachrichten an einen Dienst, dessen Endpunkt auf angegebene Art und Weise konfiguriert wird.

CreateChannelWithActAsToken(SecurityToken)

Erstellt einen Channel, der verwendet wird, um Nachrichten an einen Dienst mit einer Aktion als Sicherheitstoken zu senden.

CreateChannelWithActAsToken(SecurityToken, EndpointAddress)

Erstellt einen Kanal zum Senden von Nachrichten an einen Dienst mit einer Aktion als Sicherheitstoken an einer bestimmten Endpunktadresse.

CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri)

Erstellt einen Kanal zum Senden von Nachrichten an einen Dienst mit einer Aktion als Sicherheitstoken an einer bestimmten Endpunktadresse durch eine angegebene Transportadresse.

CreateChannelWithIssuedToken(SecurityToken)

Erstellt einen Channel, der verwendet wird, um Nachrichten an einen Dienst mit einem ausgestellten Sicherheitstoken zu senden.

CreateChannelWithIssuedToken(SecurityToken, EndpointAddress)

Erstellt einen Kanal zum Senden von Nachrichten an einen Dienst mit einem ausgestellte Sicherheitstoken an einer bestimmten Endpunktadresse.

CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri)

Erstellt einen Kanal zum Senden von Nachrichten an einen Dienst mit einem ausgestellte Sicherheitstoken an einer bestimmten Endpunktadresse durch eine angegebene Transportadresse.

CreateChannelWithOnBehalfOfToken(SecurityToken)

Erstellt einen Channel, der verwendet wird, um Nachrichten an einen Dienst mit den Namen des Sicherheitstoken zu senden.

CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress)

Erstellt einen Kanal zum Senden von Nachrichten an einen Dienst mit dem Namen des Sicherheitstokens an einer bestimmten Endpunktadresse.

CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri)

Erstellt einen Kanal zum Senden von Nachrichten an einen Dienst mit den Namen des Sicherheitstokens an einer bestimmten Endpunktadresse durch eine angegebene Transportadresse.

CreateDescription()

Erstellt eine Beschreibung des Dienstendpunkts.

CreateFactory()

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

(Geerbt von ChannelFactory)
EndClose(IAsyncResult)

Beendet einen asynchronen Vorgang, um ein Kommunikationsobjekt zu schließen.

(Geerbt von CommunicationObject)
EndOpen(IAsyncResult)

Beendet einen asynchronen Vorgang, um ein Kommunikationsobjekt zu öffnen.

(Geerbt von CommunicationObject)
EnsureOpened()

Öffnet die aktuelle Kanalfactory, sofern diese noch nicht geöffnet ist.

(Geerbt von ChannelFactory)
Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
Fault()

Bewirkt, dass ein Kommunikationsobjekt vom aktuellen Zustand in den Fehlerzustand übergeht.

(Geerbt von CommunicationObject)
GetCommunicationObjectType()

Ruft den Typ des Kommunikationsobjekts ab.

(Geerbt von CommunicationObject)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetProperty<T>()

Gibt das angeforderte typisierte Objekt von der entsprechenden Ebene im Kanalstapel zurück, wenn es vorhanden ist, oder null, wenn es nicht vorhanden ist.

(Geerbt von ChannelFactory)
GetType()

Ruft den 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(EndpointAddress)

Eine Factory, die verschiedene Kanaltypen erstellt, die von Clients zum Senden von Nachrichten an unterschiedlich konfigurierte Dienstendpunkte verwendet werden.

(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 des aktuellen Object.

(Geerbt von Object)
OnAbort()

Beendet die innere Kanalfactory der aktuellen Kanalfactory.

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

Startet einen asynchronen Schließvorgang in der inneren Kanalfactory der aktuellen Kanalfactory, der ein Statusobjekt zugeordnet ist.

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

Startet einen asynchronen Öffnungsvorgang in der inneren Kanalfactory der aktuellen Kanalfactory, der ein Statusobjekt zugeordnet ist.

(Geerbt von ChannelFactory)
OnClose(TimeSpan)

Aufrufe werden in der inneren Kanalfactory mit einem angegebenen Timeout zum Abschluss des Vorgangs geschlossen.

(Geerbt von ChannelFactory)
OnCloseAsync(TimeSpan)

Eine Factory, die verschiedene Kanaltypen erstellt, die von Clients zum Senden von Nachrichten an unterschiedlich konfigurierte Dienstendpunkte verwendet werden.

(Geerbt von ChannelFactory)
OnClosed()

Wird während des Übergangs eines Kommunikationsobjekts in den Schließzustand aufgerufen.

(Geerbt von CommunicationObject)
OnClosing()

Wird während des Übergangs eines Kommunikationsobjekts in den Schließzustand aufgerufen.

(Geerbt von CommunicationObject)
OnEndClose(IAsyncResult)

Schließt einen asynchronen Schließvorgang in der inneren Kanalfactory der aktuellen Kanalfactory ab.

(Geerbt von ChannelFactory)
OnEndOpen(IAsyncResult)

Schließt einen asynchronen Öffnungsvorgang in der inneren Kanalfactory der aktuellen Kanalfactory ab.

(Geerbt von ChannelFactory)
OnFaulted()

Fügt Verarbeitung auf einem Kommunikationsobjekt ein, nachdem aufgrund des Aufrufs eines synchronen Fehlervorgangs der Übergang zum Fehlerzustand stattgefunden hat.

(Geerbt von CommunicationObject)
OnOpen(TimeSpan)

Aufrufe werden in der inneren Kanalfactory der aktuellen Kanalfactory mit einem angegebenen Timeout zum Abschluss des Vorgangs geöffnet.

(Geerbt von ChannelFactory)
OnOpenAsync(TimeSpan)

Eine Factory, die verschiedene Kanaltypen erstellt, die von Clients zum Senden von Nachrichten an unterschiedlich konfigurierte Dienstendpunkte verwendet werden.

(Geerbt von ChannelFactory)
OnOpened()

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

(Geerbt von ChannelFactory)
OnOpening()

Erstellt die innere Kanalfactory für den aktuellen Kanal.

(Geerbt von ChannelFactory)
Open()

Bewirkt den Übergang eines Kommunikationsobjekts aus dem Erstellt-Zustand in den Geöffnet-Zustand.

(Geerbt von CommunicationObject)
Open(TimeSpan)

Bewirkt den Übergang eines Kommunikationsobjekts innerhalb eines angegebenen Zeitraums vom Erstellt-Zustand in den Geöffnet-Zustand.

(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 der State-Eigenschaft nicht auf den Created-Zustand festgelegt wurde.

(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 ein, sobald ein Kommunikationsobjekt in den geschlossenen Zustand übergeht.

(Geerbt von CommunicationObject)
Closing

Tritt ein, sobald ein Kommunikationsobjekt in den Schließzustand übergeht.

(Geerbt von CommunicationObject)
Faulted

Tritt ein, sobald ein Kommunikationsobjekt in den Fehlerzustand übergeht.

(Geerbt von CommunicationObject)
Opened

Tritt ein, sobald ein Kommunikationsobjekt in den Geöffnet-Zustand übergeht.

(Geerbt von CommunicationObject)
Opening

Tritt ein, sobald ein Kommunikationsobjekt in den Öffnungszustand übergeht.

(Geerbt von CommunicationObject)

Explizite Schnittstellenimplementierungen

IAsyncCommunicationObject.CloseAsync(TimeSpan)

Eine Factory, die verschiedene Kanaltypen erstellt, die von Clients zum Senden von Nachrichten an unterschiedlich konfigurierte Dienstendpunkte verwendet werden.

(Geerbt von CommunicationObject)
IAsyncCommunicationObject.OpenAsync(TimeSpan)

Eine Factory, die verschiedene Kanaltypen erstellt, die von Clients zum Senden von Nachrichten an unterschiedlich konfigurierte Dienstendpunkte verwendet werden.

(Geerbt von CommunicationObject)
IAsyncDisposable.DisposeAsync()

Eine Factory, die verschiedene Kanaltypen erstellt, die von Clients zum Senden von Nachrichten an unterschiedlich konfigurierte Dienstendpunkte verwendet werden.

(Geerbt von ChannelFactory)
IDisposable.Dispose()

Schließt die aktuelle Kanalfactory.

(Geerbt von ChannelFactory)

Erweiterungsmethoden

CloseHelperAsync(ICommunicationObject, TimeSpan)

Eine Factory, die verschiedene Kanaltypen erstellt, die von Clients zum Senden von Nachrichten an unterschiedlich konfigurierte Dienstendpunkte verwendet werden.

OpenHelperAsync(ICommunicationObject, TimeSpan)

Eine Factory, die verschiedene Kanaltypen erstellt, die von Clients zum Senden von Nachrichten an unterschiedlich konfigurierte Dienstendpunkte verwendet werden.

GetInternalCloseTimeout(CommunicationObject)

Eine Factory, die verschiedene Kanaltypen erstellt, die von Clients zum Senden von Nachrichten an unterschiedlich konfigurierte Dienstendpunkte verwendet werden.

Gilt für:

Threadsicherheit

Dieser Typ ist threadsicher.