DuplexClientBase<TChannel> 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.
Wird verwendet, um einen Kanal zu einem Duplexdienst zu erstellen und diesen Kanal einem Rückrufobjekt zuzuordnen.
generic <typename TChannel>
where TChannel : classpublic ref class DuplexClientBase abstract : System::ServiceModel::ClientBase<TChannel>
public abstract class DuplexClientBase<TChannel> : System.ServiceModel.ClientBase<TChannel> where TChannel : class
type DuplexClientBase<'Channel (requires 'Channel : null)> = class
inherit ClientBase<'Channel (requires 'Channel : null)>
Public MustInherit Class DuplexClientBase(Of TChannel)
Inherits ClientBase(Of TChannel)
Typparameter
- TChannel
Der Typ des zu erstellenden Kanals.
- Vererbung
Beispiele
Das folgende Beispiel zeigt die Verwendung im Client eines Duplex-WCF-Clienttyps, der SampleDuplexHelloClient
, um ein neues System.ServiceModel.InstanceContext-Objekt mit dem Rückrufobjekt zu übergeben, um auf Rückrufe zu lauschen.
using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Threading;
namespace Microsoft.WCF.Documentation
{
[CallbackBehaviorAttribute(
IncludeExceptionDetailInFaults= true,
UseSynchronizationContext=true,
ValidateMustUnderstand=true
)]
public class Client : SampleDuplexHelloCallback
{
AutoResetEvent waitHandle;
public Client()
{
waitHandle = new AutoResetEvent(false);
}
public void Run()
{
// Picks up configuration from the configuration file.
SampleDuplexHelloClient wcfClient
= new SampleDuplexHelloClient(new InstanceContext(this), "WSDualHttpBinding_SampleDuplexHello");
try
{
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("Enter a greeting to send and press ENTER: ");
Console.Write(">>> ");
Console.ForegroundColor = ConsoleColor.Green;
string greeting = Console.ReadLine();
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("Called service with: \r\n\t" + greeting);
wcfClient.Hello(greeting);
Console.WriteLine("Execution passes service call and moves to the WaitHandle.");
this.waitHandle.WaitOne();
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("Set was called.");
Console.Write("Press ");
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("ENTER");
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write(" to exit...");
Console.ReadLine();
}
catch (TimeoutException timeProblem)
{
Console.WriteLine("The service operation timed out. " + timeProblem.Message);
Console.ReadLine();
}
catch (CommunicationException commProblem)
{
Console.WriteLine("There was a communication problem. " + commProblem.Message);
Console.ReadLine();
}
}
public static void Main()
{
Client client = new Client();
client.Run();
}
public void Reply(string response)
{
Console.WriteLine("Received output.");
Console.WriteLine("\r\n\t" + response);
this.waitHandle.Set();
}
}
}
Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports System.Threading
Namespace Microsoft.WCF.Documentation
<CallbackBehaviorAttribute(IncludeExceptionDetailInFaults:= True, UseSynchronizationContext:=True, ValidateMustUnderstand:=True)> _
Public Class Client
Implements SampleDuplexHelloCallback
Private waitHandle As AutoResetEvent
Public Sub New()
waitHandle = New AutoResetEvent(False)
End Sub
Public Sub Run()
' Picks up configuration from the configuration file.
Dim wcfClient As New SampleDuplexHelloClient(New InstanceContext(Me), "WSDualHttpBinding_SampleDuplexHello")
Try
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine("Enter a greeting to send and press ENTER: ")
Console.Write(">>> ")
Console.ForegroundColor = ConsoleColor.Green
Dim greeting As String = Console.ReadLine()
Console.ForegroundColor = ConsoleColor.White
Console.WriteLine("Called service with: " & Constants.vbCrLf & Constants.vbTab & greeting)
wcfClient.Hello(greeting)
Console.WriteLine("Execution passes service call and moves to the WaitHandle.")
Me.waitHandle.WaitOne()
Console.ForegroundColor = ConsoleColor.Blue
Console.WriteLine("Set was called.")
Console.Write("Press ")
Console.ForegroundColor = ConsoleColor.Red
Console.Write("ENTER")
Console.ForegroundColor = ConsoleColor.Blue
Console.Write(" to exit...")
Console.ReadLine()
Catch timeProblem As TimeoutException
Console.WriteLine("The service operation timed out. " & timeProblem.Message)
Console.ReadLine()
Catch commProblem As CommunicationException
Console.WriteLine("There was a communication problem. " & commProblem.Message)
Console.ReadLine()
End Try
End Sub
Public Shared Sub Main()
Dim client As New Client()
client.Run()
End Sub
Public Sub Reply(ByVal response As String) Implements SampleDuplexHelloCallback.Reply
Console.WriteLine("Received output.")
Console.WriteLine(Constants.vbCrLf & Constants.vbTab & response)
Me.waitHandle.Set()
End Sub
End Class
End Namespace
Hinweise
Verwenden Sie die DuplexClientBase<TChannel>-Klasse, um einen Kanal zu einem Dienst zu erstellen, der ein Rückrufobjekt angibt. Das DuplexClientBase<TChannel>-Objekt umschließt ein System.ServiceModel.DuplexChannelFactory<TChannel>-Objekt, das die Konnektivität für das WCF-Objekt bereitstellt. Sie können einen der beiden Typen verwenden, um eine Verbindung mit einem Duplexdienst herzustellen. Weitere Informationen zu Duplexdiensten finden Sie unter Duplex services.
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 automatisch IDisposable
Vermeiden von Nichtverweismitgliedern: Sie können dazu führen, dass der Compiler automatisch IDisposable
Vermeiden Sie Finalisierer; Wenn Sie jedoch eine einschließen, sollten Sie die Buildwarnung unterdrücken und SuppressFinalize(Object) und den Finalizer selbst aus (On)(Begin)Close (und/oder OnAbort) aufrufen, um zu emulieren, was das automatisch generierte IDisposable Verhalten wäre.
Konstruktoren
DuplexClientBase<TChannel>(InstanceContext) |
Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts. |
DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress) |
Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe der angegebenen Rückrufobjekt-, Bindungs- und Dienstendpunktadresse. |
DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint) |
Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mit dem angegebenen Rückrufobjekt und dem Dienstendpunkt. |
DuplexClientBase<TChannel>(InstanceContext, String) |
Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts und des Konfigurationsnamens. |
DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress) |
Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts, des Konfigurationsnamens und der Dienstendpunktadresse. |
DuplexClientBase<TChannel>(InstanceContext, String, String) |
Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts, des Konfigurationsnamens und der Dienstendpunktadresse. |
DuplexClientBase<TChannel>(Object) |
Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts. |
DuplexClientBase<TChannel>(Object, Binding, EndpointAddress) |
Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe der angegebenen Rückrufobjekt-, Bindungs- und Dienstendpunktadresse. |
DuplexClientBase<TChannel>(Object, ServiceEndpoint) |
Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mit dem angegebenen Rückrufobjekt und dem Dienstendpunkt. |
DuplexClientBase<TChannel>(Object, String) |
Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts und des Konfigurationsnamens. |
DuplexClientBase<TChannel>(Object, String, EndpointAddress) |
Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts, des Konfigurationsnamens und der Dienstendpunktadresse. |
DuplexClientBase<TChannel>(Object, String, String) |
Initialisiert eine neue Instanz der DuplexClientBase<TChannel> Klasse mithilfe des angegebenen Rückrufobjekts, des Endpunktkonfigurationsnamens und der Dienstendpunktadresse. |
Eigenschaften
Channel |
Ruft den inneren Kanal ab, der zum Senden von Nachrichten an verschiedene konfigurierte Dienstendpunkte verwendet wird. (Geerbt von ClientBase<TChannel>) |
ChannelFactory |
Ruft das zugrunde liegende ChannelFactory<TChannel> -Objekt ab. (Geerbt von ClientBase<TChannel>) |
ClientCredentials |
Ruft die Clientanmeldeinformationen ab, die zum Aufrufen eines Vorgangs verwendet werden. (Geerbt von ClientBase<TChannel>) |
Endpoint |
Ruft den Zielendpunkt für den Dienst ab, mit dem der WCF-Client eine Verbindung herstellen kann. (Geerbt von ClientBase<TChannel>) |
InnerChannel |
Ruft die zugrunde liegende IClientChannel Implementierung ab. (Geerbt von ClientBase<TChannel>) |
InnerDuplexChannel |
Ruft die zugrunde liegende IClientChannel Implementierung für den Duplexkanal ab. |
State |
Ruft den aktuellen Status des ClientBase<TChannel> -Objekts ab. (Geerbt von ClientBase<TChannel>) |
Methoden
Abort() |
Bewirkt, dass das ClientBase<TChannel>-Objekt sofort vom aktuellen Zustand in den geschlossenen Zustand wechselt. (Geerbt von ClientBase<TChannel>) |
Close() |
Bewirkt, dass das ClientBase<TChannel>-Objekt vom aktuellen Zustand in den geschlossenen Zustand wechselt. (Geerbt von ClientBase<TChannel>) |
CloseAsync() |
Wird verwendet, um einen Kanal zu einem Duplexdienst zu erstellen und diesen Kanal einem Rückrufobjekt zuzuordnen. (Geerbt von ClientBase<TChannel>) |
CreateChannel() |
Gibt einen Kanal an den Dienst zurück, der dem an den Konstruktor übergebenen Rückrufobjekt zugeordnet ist. |
CreateChannel() |
Gibt einen neuen Kanal an den Dienst zurück. (Geerbt von ClientBase<TChannel>) |
DisplayInitializationUI() |
Weist den inneren Kanal an, eine Benutzeroberfläche anzuzeigen, wenn ein Kanal vor der Verwendung initialisiert werden muss. (Geerbt von ClientBase<TChannel>) |
Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
GetDefaultValueForInitialization<T>() |
Repliziert das Verhalten des Standardschlüsselworts in C#. (Geerbt von ClientBase<TChannel>) |
GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
InvokeAsync(ClientBase<TChannel>.BeginOperationDelegate, Object[], ClientBase<TChannel>.EndOperationDelegate, SendOrPostCallback, Object) |
Bietet Unterstützung für die Implementierung des ereignisbasierten asynchronen Musters. Weitere Informationen zu diesem Muster finden Sie unter Ereignisbasierte asynchrones Musterübersicht. (Geerbt von ClientBase<TChannel>) |
MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
Open() |
Bewirkt, dass das ClientBase<TChannel>-Objekt vom erstellten Zustand in den geöffneten Zustand wechselt. (Geerbt von ClientBase<TChannel>) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
IAsyncDisposable.DisposeAsync() |
Wird verwendet, um einen Kanal zu einem Duplexdienst zu erstellen und diesen Kanal einem Rückrufobjekt zuzuordnen. (Geerbt von ClientBase<TChannel>) |
ICommunicationObject.BeginClose(AsyncCallback, Object) |
Startet einen asynchronen Vorgang, um die ClientBase<TChannel>zu schließen. (Geerbt von ClientBase<TChannel>) |
ICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object) |
Startet einen asynchronen Vorgang, um die ClientBase<TChannel> mit einem angegebenen Timeout zu schließen. (Geerbt von ClientBase<TChannel>) |
ICommunicationObject.BeginOpen(AsyncCallback, Object) |
Startet einen asynchronen Vorgang, um das ClientBase<TChannel> -Objekt zu öffnen. (Geerbt von ClientBase<TChannel>) |
ICommunicationObject.BeginOpen(TimeSpan, AsyncCallback, Object) |
Beginnt einen asynchronen Vorgang, um das ClientBase<TChannel> -Objekt innerhalb eines angegebenen Zeitintervalls zu öffnen. (Geerbt von ClientBase<TChannel>) |
ICommunicationObject.Close() |
Bewirkt, dass ein Kommunikationsobjekt vom aktuellen Zustand in den geschlossenen Zustand wechselt. (Geerbt von ClientBase<TChannel>) |
ICommunicationObject.Close(TimeSpan) |
Bewirkt, dass das ClientBase<TChannel>-Objekt vom aktuellen Zustand in den geschlossenen Zustand wechselt. (Geerbt von ClientBase<TChannel>) |
ICommunicationObject.Closed |
Der Ereignishandler, der aufgerufen wird, wenn das ClientBase<TChannel>-Objekt von seinem aktuellen Zustand in den geschlossenen Zustand umgestellt wurde. (Geerbt von ClientBase<TChannel>) |
ICommunicationObject.Closing |
Der Ereignishandler, der aufgerufen wird, wenn das ClientBase<TChannel>-Objekt vom aktuellen Zustand in den geschlossenen Zustand wechselt. (Geerbt von ClientBase<TChannel>) |
ICommunicationObject.EndClose(IAsyncResult) |
Schließt einen asynchronen Vorgang ab, um das ClientBase<TChannel> -Objekt zu schließen. (Geerbt von ClientBase<TChannel>) |
ICommunicationObject.EndOpen(IAsyncResult) |
Schließt einen asynchronen Vorgang ab, um das ClientBase<TChannel> -Objekt zu öffnen. (Geerbt von ClientBase<TChannel>) |
ICommunicationObject.Faulted |
Der Ereignishandler, der aufgerufen wird, wenn beim Ausführen eines Vorgangs für das ClientBase<TChannel>-Objekt ein Fehler auftritt. (Geerbt von ClientBase<TChannel>) |
ICommunicationObject.Open() |
Bewirkt, dass ein Kommunikationsobjekt vom erstellten Zustand in den geöffneten Zustand wechselt. (Geerbt von ClientBase<TChannel>) |
ICommunicationObject.Open(TimeSpan) |
Bewirkt, dass das ClientBase<TChannel>-Objekt innerhalb eines bestimmten Zeitraums vom erstellten Zustand in den geöffneten Zustand übergehen soll. (Geerbt von ClientBase<TChannel>) |
ICommunicationObject.Opened |
Der Ereignishandler, der aufgerufen wird, wenn der ClientBase<TChannel> Objekt vom erstellten Zustand in den geöffneten Zustand wechselt. (Geerbt von ClientBase<TChannel>) |
ICommunicationObject.Opening |
Der Ereignishandler, der aufgerufen wird, wenn der ClientBase<TChannel> Objekt vom erstellten Zustand in den geöffneten Zustand wechselt. (Geerbt von ClientBase<TChannel>) |
IDisposable.Dispose() |
Explizite Implementierung der Dispose()-Methode. (Geerbt von ClientBase<TChannel>) |
Erweiterungsmethoden
ConfigureAwait(IAsyncDisposable, Boolean) |
Konfiguriert, wie auf die von einem asynchronen Einweg zurückgegebenen Aufgaben gewartet wird. |