DuplexClientBase<TChannel> Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Slouží k vytvoření kanálu pro duplexní službu a přidružení kanálu k objektu zpětného volání.
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)
Parametry typu
- TChannel
Typ kanálu, který se má vytvořit.
- Dědičnost
Příklady
Následující příklad ukazuje použití v klientovi typu duplexního klienta WCF , SampleDuplexHelloClient
k předání nového System.ServiceModel.InstanceContext objektu s objektem zpětného volání pro naslouchání zpětným voláním.
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
Poznámky
DuplexClientBase<TChannel> Pomocí třídy vytvořte kanál pro službu, která určuje objekt zpětného volání. Objekt DuplexClientBase<TChannel> zalomí System.ServiceModel.DuplexChannelFactory<TChannel> objekt, který poskytuje připojení k objektu WCF. K oboustranné službě se můžete připojit pomocí libovolného typu. Další informace o duplexním službách najdete v tématu Duplex Services.
Zvláštní poznámka pro uživatele spravovaného jazyka C++, kteří jsou odvozeni z této třídy:
Vložte kód čištění do (On)(Begin)Close (a/nebo OnAbort), ne do destruktoru.
Vyhněte se destruktorům: způsobují automatické generování kompilátoru IDisposable
Vyhněte se ne referenčním členům: Můžou způsobit automatické vygenerování kompilátoru. IDisposable
Vyhněte se finalizátorům; Pokud ale zahrnete, měli byste potlačit upozornění na sestavení a volat SuppressFinalize(Object) a samotný finalizační proces z (On)(Begin)Close (nebo OnAbort) za účelem emulace automaticky generovaného IDisposable chování.
Konstruktory
DuplexClientBase<TChannel>(InstanceContext) |
Inicializuje novou instanci DuplexClientBase<TChannel> třídy pomocí zadaného zpětného volání objektu. |
DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress) |
Inicializuje novou instanci třídy pomocí zadaného objektu zpětného volání, vazby a adresy koncového DuplexClientBase<TChannel> bodu služby. |
DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint) |
Inicializuje novou instanci DuplexClientBase<TChannel> třídy se zadaným objektem zpětného volání a koncovým bodem služby. |
DuplexClientBase<TChannel>(InstanceContext, String) |
Inicializuje novou instanci DuplexClientBase<TChannel> třídy pomocí zadaného objektu zpětného volání a názvu konfigurace. |
DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress) |
Inicializuje novou instanci třídy pomocí zadaného objektu zpětného DuplexClientBase<TChannel> volání, názvu konfigurace a adresy koncového bodu služby. |
DuplexClientBase<TChannel>(InstanceContext, String, String) |
Inicializuje novou instanci třídy pomocí zadaného objektu zpětného DuplexClientBase<TChannel> volání, názvu konfigurace a adresy koncového bodu služby. |
DuplexClientBase<TChannel>(Object) |
Inicializuje novou instanci DuplexClientBase<TChannel> třídy pomocí zadaného zpětného volání objektu. |
DuplexClientBase<TChannel>(Object, Binding, EndpointAddress) |
Inicializuje novou instanci třídy pomocí zadaného objektu zpětného volání, vazby a adresy koncového DuplexClientBase<TChannel> bodu služby. |
DuplexClientBase<TChannel>(Object, ServiceEndpoint) |
Inicializuje novou instanci DuplexClientBase<TChannel> třídy se zadaným objektem zpětného volání a koncovým bodem služby. |
DuplexClientBase<TChannel>(Object, String) |
Inicializuje novou instanci DuplexClientBase<TChannel> třídy pomocí zadaného objektu zpětného volání a názvu konfigurace. |
DuplexClientBase<TChannel>(Object, String, EndpointAddress) |
Inicializuje novou instanci třídy pomocí zadaného objektu zpětného DuplexClientBase<TChannel> volání, názvu konfigurace a adresy koncového bodu služby. |
DuplexClientBase<TChannel>(Object, String, String) |
Inicializuje novou instanci třídy pomocí zadaného objektu zpětného volání, názvu konfigurace koncového DuplexClientBase<TChannel> bodu a adresy koncového bodu služby. |
Vlastnosti
Channel |
Získá vnitřní kanál používaný k odesílání zpráv do různě nakonfigurovaných koncových bodů služby. (Zděděno od ClientBase<TChannel>) |
ChannelFactory |
Získá základní ChannelFactory<TChannel> objekt. (Zděděno od ClientBase<TChannel>) |
ClientCredentials |
Získá přihlašovací údaje klienta použité k volání operace. (Zděděno od ClientBase<TChannel>) |
Endpoint |
Získá cílový koncový bod pro službu, ke které se klient WCF může připojit. (Zděděno od ClientBase<TChannel>) |
InnerChannel |
Získá základní IClientChannel implementaci. (Zděděno od ClientBase<TChannel>) |
InnerDuplexChannel |
Získá základní IClientChannel implementaci duplexního kanálu. |
State |
Získá aktuální stav objektu ClientBase<TChannel> . (Zděděno od ClientBase<TChannel>) |
Metody
Abort() |
Způsobí okamžitý ClientBase<TChannel> přechod objektu z aktuálního stavu do uzavřeného stavu. (Zděděno od ClientBase<TChannel>) |
Close() |
Způsobí přechod objektu ClientBase<TChannel> z aktuálního stavu do uzavřeného stavu. (Zděděno od ClientBase<TChannel>) |
CloseAsync() |
Slouží k vytvoření kanálu pro duplexní službu a přidružení kanálu k objektu zpětného volání. (Zděděno od ClientBase<TChannel>) |
CreateChannel() |
Vrátí kanál službě přidružené k objektu zpětného volání předaného konstruktoru. |
CreateChannel() |
Vrátí nový kanál do služby. (Zděděno od ClientBase<TChannel>) |
DisplayInitializationUI() |
Instruuje vnitřní kanál, aby zobrazil uživatelské rozhraní, pokud se vyžaduje k inicializaci kanálu před jeho použitím. (Zděděno od ClientBase<TChannel>) |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetDefaultValueForInitialization<T>() |
Replikuje chování výchozího klíčového slova v jazyce C#. (Zděděno od ClientBase<TChannel>) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
InvokeAsync(ClientBase<TChannel>.BeginOperationDelegate, Object[], ClientBase<TChannel>.EndOperationDelegate, SendOrPostCallback, Object) |
Poskytuje podporu pro implementaci asynchronního vzoru založeného na událostech. Další informace o tomto vzoru najdete v tématu Přehled asynchronních vzorů založených na událostech. (Zděděno od ClientBase<TChannel>) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
Open() |
ClientBase<TChannel> Způsobí přechod objektu z vytvořeného stavu do otevřeného stavu. (Zděděno od ClientBase<TChannel>) |
OpenAsync() |
Slouží k vytvoření kanálu pro duplexní službu a přidružení kanálu k objektu zpětného volání. (Zděděno od ClientBase<TChannel>) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Explicitní implementace rozhraní
IAsyncDisposable.DisposeAsync() |
Slouží k vytvoření kanálu pro duplexní službu a přidružení kanálu k objektu zpětného volání. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.BeginClose(AsyncCallback, Object) |
Zahájí asynchronní operaci k zavření objektu ClientBase<TChannel>. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object) |
Zahájí asynchronní operaci, která ukončí ClientBase<TChannel> operaci se zadaným časovým limitem. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.BeginOpen(AsyncCallback, Object) |
Zahájí asynchronní operaci k otevření objektu ClientBase<TChannel> . (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.BeginOpen(TimeSpan, AsyncCallback, Object) |
Zahájí asynchronní operaci, která ClientBase<TChannel> otevře objekt v zadaném časovém intervalu. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Close() |
Způsobí přechod komunikačního objektu z aktuálního stavu do uzavřeného stavu. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Close(TimeSpan) |
Způsobí přechod objektu ClientBase<TChannel> z aktuálního stavu do uzavřeného stavu. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Closed |
Obslužná rutina události, která je vyvolána při přechodu objektu ClientBase<TChannel> z aktuálního stavu do uzavřeného stavu. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Closing |
Obslužná rutina události, která je vyvolána při přechodu objektu ClientBase<TChannel> z aktuálního stavu do uzavřeného stavu. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.EndClose(IAsyncResult) |
Dokončí asynchronní operaci k zavření objektu ClientBase<TChannel> . (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.EndOpen(IAsyncResult) |
Dokončí asynchronní operaci k otevření objektu ClientBase<TChannel> . (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Faulted |
Obslužná rutina události, která je vyvolána, když dojde k chybě při provádění operace s objektem ClientBase<TChannel> . (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Open() |
Způsobí přechod komunikačního objektu z vytvořeného stavu do otevřeného stavu. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Open(TimeSpan) |
Způsobí přechod objektu ClientBase<TChannel> z vytvořeného stavu do otevřeného stavu v zadaném časovém intervalu. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Opened |
Obslužná rutina události, která je vyvolána při ClientBase<TChannel> přechodu objektu z vytvořeného stavu do otevřeného stavu. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Opening |
Obslužná rutina události, která je vyvolána při ClientBase<TChannel> přechodu objektu z vytvořeného stavu do otevřeného stavu. (Zděděno od ClientBase<TChannel>) |
IDisposable.Dispose() |
Explicitní implementace Dispose() metody. (Zděděno od ClientBase<TChannel>) |
Metody rozšíření
CloseHelperAsync(ICommunicationObject, TimeSpan) |
Slouží k vytvoření kanálu pro duplexní službu a přidružení kanálu k objektu zpětného volání. |
OpenHelperAsync(ICommunicationObject, TimeSpan) |
Slouží k vytvoření kanálu pro duplexní službu a přidružení kanálu k objektu zpětného volání. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Konfiguruje, jak se provádí čekání na úlohy vrácené z asynchronního jednorázového použití. |
Platí pro
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro