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 k duplexní službě 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 duplexního typu klienta WCF, SampleDuplexHelloClient
, předat nový System.ServiceModel.InstanceContext objekt s objektem zpětného volání naslouchá zpětné volání zpět.
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
Pomocí třídy DuplexClientBase<TChannel> vytvořte kanál do služby, která určuje objekt zpětného volání. Objekt DuplexClientBase<TChannel> zabalí objekt System.ServiceModel.DuplexChannelFactory<TChannel>, který poskytuje připojení pro objekt WCF. K připojení k duplexní službě můžete použít některý typ. Další informace o duplexní služby naleznete v tématu Duplex Services.
Zvláštní poznámka pro spravované uživatele C++, kteří pocházejí 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ůsobí, že kompilátor automaticky vygeneruje IDisposable
Vyhněte se nenákazovým členům: mohou způsobit automatické generování kompilátoru IDisposable
Vyhněte se finalizačním metodám; ale pokud ho zahrnete, měli byste potlačit upozornění sestavení a volat SuppressFinalize(Object) a finalizátor samotný z (On)(Begin)Close (a/nebo OnAbort), aby emuloval, co by bylo automaticky generované IDisposable chování.
Konstruktory
DuplexClientBase<TChannel>(InstanceContext) |
Inicializuje novou instanci třídy DuplexClientBase<TChannel> pomocí zadaného objektu zpětného volání. |
DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress) |
Inicializuje novou instanci třídy DuplexClientBase<TChannel> pomocí zadaného objektu zpětného volání, vazby a adresy koncového bodu služby. |
DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint) |
Inicializuje novou instanci třídy DuplexClientBase<TChannel> se zadaným objektem zpětného volání a koncovým bodem služby. |
DuplexClientBase<TChannel>(InstanceContext, String) |
Inicializuje novou instanci třídy DuplexClientBase<TChannel> pomocí zadaného objektu zpětného volání a názvu konfigurace. |
DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress) |
Inicializuje novou instanci třídy DuplexClientBase<TChannel> pomocí zadaného objektu zpětného volání, názvu konfigurace a adresy koncového bodu služby. |
DuplexClientBase<TChannel>(InstanceContext, String, String) |
Inicializuje novou instanci třídy DuplexClientBase<TChannel> pomocí zadaného objektu zpětného volání, názvu konfigurace a adresy koncového bodu služby. |
DuplexClientBase<TChannel>(Object) |
Inicializuje novou instanci třídy DuplexClientBase<TChannel> pomocí zadaného objektu zpětného volání. |
DuplexClientBase<TChannel>(Object, Binding, EndpointAddress) |
Inicializuje novou instanci třídy DuplexClientBase<TChannel> pomocí zadaného objektu zpětného volání, vazby a adresy koncového bodu služby. |
DuplexClientBase<TChannel>(Object, ServiceEndpoint) |
Inicializuje novou instanci třídy DuplexClientBase<TChannel> se zadaným objektem zpětného volání a koncovým bodem služby. |
DuplexClientBase<TChannel>(Object, String) |
Inicializuje novou instanci třídy DuplexClientBase<TChannel> pomocí zadaného objektu zpětného volání a názvu konfigurace. |
DuplexClientBase<TChannel>(Object, String, EndpointAddress) |
Inicializuje novou instanci třídy DuplexClientBase<TChannel> pomocí zadaného objektu zpětného volání, názvu konfigurace a adresy koncového bodu služby. |
DuplexClientBase<TChannel>(Object, String, String) |
Inicializuje novou instanci třídy DuplexClientBase<TChannel> pomocí zadaného objektu zpětného volání, názvu konfigurace koncového 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ých nakonfigurovaných koncových bodů služby. (Zděděno od ClientBase<TChannel>) |
ChannelFactory |
Získá základní ChannelFactory<TChannel> objektu. (Zděděno od ClientBase<TChannel>) |
ClientCredentials |
Získá přihlašovací údaje klienta používané 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 implementace pro duplexní kanál. |
State |
Získá aktuální stav ClientBase<TChannel> objektu. (Zděděno od ClientBase<TChannel>) |
Metody
Abort() |
Způsobí, že objekt ClientBase<TChannel> přejde okamžitě z aktuálního stavu do uzavřeného stavu. (Zděděno od ClientBase<TChannel>) |
Close() |
Způsobí, že objekt ClientBase<TChannel> přejde z aktuálního stavu do uzavřeného stavu. (Zděděno od ClientBase<TChannel>) |
CloseAsync() |
Slouží k vytvoření kanálu k duplexní službě 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í do služby nový kanál. (Zděděno od ClientBase<TChannel>) |
DisplayInitializationUI() |
Instruuje vnitřní kanál, aby zobrazil uživatelské rozhraní, pokud je nutné inicializovat kanál před jeho použitím. (Zděděno od ClientBase<TChannel>) |
Equals(Object) |
Určuje, zda je zadaný objekt roven 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í funkce hash. (Zděděno od Object) |
GetType() |
Získá Type aktuální instance. (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 naleznete v tématu Přehled asynchronního vzoru založeného na událostech. (Zděděno od ClientBase<TChannel>) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
Open() |
Způsobí, že ClientBase<TChannel> objekt přejde z vytvořeného stavu do otevřeného stavu. (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 k duplexní službě 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, která zavře ClientBase<TChannel>. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object) |
Zahájí asynchronní operaci, která zavře ClientBase<TChannel> se zadaným časovým limitem. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.BeginOpen(AsyncCallback, Object) |
Zahájí asynchronní operaci, která otevře objekt ClientBase<TChannel>. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.BeginOpen(TimeSpan, AsyncCallback, Object) |
Zahájí asynchronní operaci, která otevře objekt ClientBase<TChannel> v zadaném časovém intervalu. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Close() |
Způsobí přechod komunikačního objektu z jeho aktuálního stavu do uzavřeného stavu. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Close(TimeSpan) |
Způsobí, že objekt ClientBase<TChannel> přejde z aktuálního stavu do uzavřeného stavu. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Closed |
Obslužná rutina události, která se vyvolá, když ClientBase<TChannel> objekt přešel z jeho aktuálního stavu do uzavřeného stavu. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Closing |
Obslužná rutina události, která se vyvolá, když ClientBase<TChannel> objekt přejde z jeho aktuálního stavu do uzavřeného stavu. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.EndClose(IAsyncResult) |
Dokončí asynchronní operaci a zavře ClientBase<TChannel> objekt. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.EndOpen(IAsyncResult) |
Dokončí asynchronní operaci, aby se otevřel objekt ClientBase<TChannel>. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Faulted |
Obslužná rutina události, která se vyvolá, když dojde k chybě při provádění operace na ClientBase<TChannel> objektu. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Open() |
Způsobí, že komunikační objekt přejde z vytvořeného stavu do otevřeného stavu. (Zděděno od ClientBase<TChannel>) |
ICommunicationObject.Open(TimeSpan) |
Způsobí, že objekt ClientBase<TChannel> přejde 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á se vyvolá při přechodu ClientBase<TChannel> 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á se vyvolá při přechodu ClientBase<TChannel> objektu z vytvořeného stavu do otevřeného stavu. (Zděděno od ClientBase<TChannel>) |
IDisposable.Dispose() |
Explicitní implementace metody Dispose() (Zděděno od ClientBase<TChannel>) |
Metody rozšíření
ConfigureAwait(IAsyncDisposable, Boolean) |
Konfiguruje, jak čekají na úlohy vrácené z asynchronního jednorázového použití. |