Teilen über


ChannelFactory Klasse

Definition

Erstellt und verwaltet die Kanäle, die von Clients zum Senden von Nachrichten an Dienstendpunkte verwendet werden.

public ref class ChannelFactory abstract : System::ServiceModel::Channels::CommunicationObject, IDisposable, System::ServiceModel::Channels::IChannelFactory
public ref class ChannelFactory abstract : System::ServiceModel::Channels::CommunicationObject, IAsyncDisposable, IDisposable, System::ServiceModel::Channels::IChannelFactory
public abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, IDisposable, System.ServiceModel.Channels.IChannelFactory
public abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, IAsyncDisposable, IDisposable, System.ServiceModel.Channels.IChannelFactory
type ChannelFactory = class
    inherit CommunicationObject
    interface IDisposable
    interface IChannelFactory
    interface ICommunicationObject
type ChannelFactory = class
    inherit CommunicationObject
    interface IChannelFactory
    interface ICommunicationObject
    interface IDisposable
    interface IAsyncDisposable
type ChannelFactory = class
    inherit CommunicationObject
    interface IChannelFactory
    interface ICommunicationObject
    interface IDisposable
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IChannelFactory, IDisposable
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IAsyncDisposable, IChannelFactory, IDisposable
Vererbung
ChannelFactory
Abgeleitet
Implementiert

Beispiele

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

Kanalfabriken, die die IChannelFactory Schnittstelle und die zugehörigen Kanäle implementieren, werden in der Regel von den Initiatoren eines Kommunikationsmusters verwendet. Listener-Fabriken, die die IChannelListener Schnittstelle und die zugehörigen Listener implementieren, bieten die Mechanismen, mit denen Kanäle für die Kommunikation akzeptiert werden.

Diese Klasse ist nicht Teil des Kanalmodells, sondern des Dienstmodells. Die CreateFactory-Methode bietet die Möglichkeit, eine IChannelFactory für einen Dienstendpunkt zu erstellen. Verwenden Sie ihn, um einen Client zu erstellen, der mit einem Schnittstellenvertrag für den Dienst ohne Verwendung von Metadaten oder Richtlinien in Verbindung kommt.

Anmerkung

Das Festlegen ChannelFactory.Credentials.Windows.AllowedImpersonationLevel auf TokenImpersonationLevel.Anonymous führt unabhängig von der Identitätswechselstufe immer zu einer anonymen Anmeldung.

Besondere Notiz für verwaltete C++-Benutzer, die von dieser Klasse abgeleitet werden:

  • Setzen Sie den Bereinigungscode in (On)(Begin)Close (und/oder OnAbort) und nicht in einen Destruktor.

  • Vermeiden Sie Destruktoren; sie führen dazu, dass der Compiler IDisposableautomatisch generiert.

  • Vermeiden Sie Nichtverweismitglieder; sie können dazu führen, dass der Compiler IDisposableautomatisch generiert.

  • Vermeiden Sie die Verwendung eines Finalizers; Wenn Sie jedoch eine einschließen, sollten Sie die Buildwarnung unterdrücken und SuppressFinalize(Object) aufrufen und den Finalizer selbst aus (On)(Begin)Close (und/oder OnAbort) emulieren, um zu emulieren, was das automatisch generierte IDisposable Verhalten wäre.

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.

Konstruktoren

ChannelFactory()

Initialisiert eine neue Instanz der ChannelFactory Klasse.

Eigenschaften

Credentials

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

DefaultCloseTimeout

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

DefaultOpenTimeout

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

Endpoint

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

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.

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

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird eine Beschreibung des Dienstendpunkts erstellt, der der Kanalfactory zugeordnet ist.

CreateFactory()

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

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.

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.

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.

InitializeEndpoint(EndpointAddress)

Erstellt und verwaltet die Kanäle, die von Clients zum Senden von Nachrichten an Dienstendpunkte verwendet werden.

InitializeEndpoint(ServiceEndpoint)

Initialisiert den Dienstendpunkt der Kanalfactory mit einem angegebenen Endpunkt.

InitializeEndpoint(String, EndpointAddress)

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

MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
OnAbort()

Beendet die interne Kanalfactory der aktuellen Kanalfactory.

OnBeginClose(TimeSpan, AsyncCallback, Object)

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

OnBeginOpen(TimeSpan, AsyncCallback, Object)

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

OnClose(TimeSpan)

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

OnCloseAsync(TimeSpan)

Erstellt und verwaltet die Kanäle, die von Clients zum Senden von Nachrichten an Dienstendpunkte verwendet werden.

OnCloseAsync(TimeSpan)

Erstellt und verwaltet die Kanäle, die von Clients zum Senden von Nachrichten an Dienstendpunkte verwendet werden.

(Geerbt von CommunicationObject)
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.

OnEndOpen(IAsyncResult)

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

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.

OnOpenAsync(TimeSpan)

Erstellt und verwaltet die Kanäle, die von Clients zum Senden von Nachrichten an Dienstendpunkte verwendet werden.

OnOpenAsync(TimeSpan)

Erstellt und verwaltet die Kanäle, die von Clients zum Senden von Nachrichten an Dienstendpunkte verwendet werden.

(Geerbt von CommunicationObject)
OnOpened()

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

OnOpening()

Erstellt die interne Kanalfactory für den aktuellen Kanal.

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

IAsyncCommunicationObject.CloseAsync(TimeSpan)

Erstellt und verwaltet die Kanäle, die von Clients zum Senden von Nachrichten an Dienstendpunkte verwendet werden.

(Geerbt von CommunicationObject)
IAsyncCommunicationObject.OpenAsync(TimeSpan)

Erstellt und verwaltet die Kanäle, die von Clients zum Senden von Nachrichten an Dienstendpunkte verwendet werden.

(Geerbt von CommunicationObject)
IAsyncDisposable.DisposeAsync()

Erstellt und verwaltet die Kanäle, die von Clients zum Senden von Nachrichten an Dienstendpunkte verwendet werden.

IDisposable.Dispose()

Schließt die aktuelle Kanalfactory.

Erweiterungsmethoden

CloseHelperAsync(ICommunicationObject, TimeSpan)

Erstellt und verwaltet die Kanäle, die von Clients zum Senden von Nachrichten an Dienstendpunkte verwendet werden.

OpenHelperAsync(ICommunicationObject, TimeSpan)

Erstellt und verwaltet die Kanäle, die von Clients zum Senden von Nachrichten an Dienstendpunkte verwendet werden.

GetInternalCloseTimeout(CommunicationObject)

Erstellt und verwaltet die Kanäle, die von Clients zum Senden von Nachrichten an Dienstendpunkte verwendet werden.

ConfigureAwait(IAsyncDisposable, Boolean)

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

Gilt für: