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 abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, 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
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IChannelFactory, IDisposable
Vererbung
ChannelFactory
Abgeleitet
Implementiert

Beispiele

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

Kanalfactorys, die die IChannelFactory-Schnittstelle und deren zugehörige Kanäle implementieren, werden in der Regel von den Initiatoren eines Kommunikationsmusters verwendet. Listenerfactorys, die die IChannelListener-Schnittstelle und deren zugehörigen Listener implementieren, stellen die Mechanismen bereit, mit denen Kanäle für die Kommunikation akzeptiert werden.

Diese Klasse ist nicht Teil des Kanal- sondern des Dienstmodells. Die CreateFactory-Methode bietet die Mittel zum Erstellen von IChannelFactory für einen Dienstendpunkt. Verwenden Sie sie, um einen Client zu erstellen, der eine Verknüpfung zu einem Schnittstellenvertrag auf dem Dienst herstellt, ohne Metadaten oder Richtlinien zu verwenden.

Hinweis

Durch das Festlegen von ChannelFactory.Credentials.Windows.AllowedImpersonationLevel auf TokenImpersonationLevel.Anonymous wird stets eine anonyme Anmeldung ausgeführt, unabhängig von der Identitätswechselebene.

Spezieller Hinweis für Benutzer von Managed C++, die von dieser Klasse ableiten:

  • Fügen Sie den Bereinigungscode in (On)(Begin)Close (and/or OnAbort) ein, nicht in einen Destruktor.

  • Vermeiden Sie Destruktoren: Sie bewirken, dass der Compiler IDisposable automatisch generiert.

  • Vermeiden Sie Member ohne Verweis: Sie können bewirken, dass der Compiler IDisposable automatisch generiert.

  • Vermeiden Sie die Verwendung eines Finalizers: Wenn Sie dennoch einen Finalizer verwenden, sollten Sie die Buildwarnung unterdrücken und SuppressFinalize(Object) sowie den Finalizer über (On)(Begin)Close (and/or OnAbort) aufrufen, um das ansonsten automatisch generierte IDisposable-Verhalten zu emulieren.

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.

Konstruktoren

ChannelFactory()

Initialisiert eine neue Instanz der ChannelFactory-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.

DefaultCloseTimeout

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

DefaultOpenTimeout

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

Endpoint

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

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.

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

Erstellt beim Implementieren in einer abgeleiteten Klasse eine Beschreibung des Dienstendpunkts, der der Kanalfactory zugeordnet ist.

CreateFactory()

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

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.

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.

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.

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

(Geerbt von Object)
OnAbort()

Beendet die innere Kanalfactory der aktuellen Kanalfactory.

OnBeginClose(TimeSpan, AsyncCallback, Object)

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

OnBeginOpen(TimeSpan, AsyncCallback, Object)

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

OnClose(TimeSpan)

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

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.

OnEndOpen(IAsyncResult)

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

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.

OnOpened()

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

OnOpening()

Erstellt die innere Kanalfactory für den aktuellen Kanal.

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

IDisposable.Dispose()

Schließt die aktuelle Kanalfactory.

Gilt für