ChannelFactory Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
- 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 |
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:
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für