DuplexClientBase<TChannel> Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Consente di creare un canale per un servizio duplex e associare tale canale a un oggetto callback.
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)
Parametri di tipo
- TChannel
Tipo di canale da creare.
- Ereditarietà
Esempio
Nell'esempio seguente viene illustrato l'utilizzo nel client di un tipo client WCF duplex, , SampleDuplexHelloClient
per passare un nuovo System.ServiceModel.InstanceContext oggetto con l'oggetto di callback per l'ascolto dei callback.
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
Commenti
Utilizzare la classe DuplexClientBase<TChannel> per creare un canale per un servizio che specifica un oggetto callback. L'oggetto DuplexClientBase<TChannel> esegue il wrapping di un System.ServiceModel.DuplexChannelFactory<TChannel> oggetto , che fornisce la connettività per l'oggetto WCF. Per connettersi a un servizio duplex è possibile utilizzare uno dei due tipi. Per altre informazioni sui servizi duplex, vedere Servizi duplex.
Nota speciale in caso di derivazione da questa classe in C++ gestito:
Inserire il codice di pulizia in (On)(Begin)Close (e/o OnAbort), non in un distruttore.
Evitare i distruttori: comportano la generazione automatica dell'interfaccia IDisposable da parte del compilatore
Evitare membri di non riferimento: possono comportare la generazione automatica dell'interfaccia IDisposable da parte del compilatore
Evitare i finalizzatori. Se tuttavia si include un finalizzatore, è necessario annullare l'avviso di compilazione e chiamare il metodo SuppressFinalize(Object) e il finalizzatore stesso mediante (On)(Begin)Close (e/o OnAbort) al fine di emulare il comportamento dell'interfaccia IDisposable che sarebbe stata generata automaticamente.
Costruttori
DuplexClientBase<TChannel>(InstanceContext) |
Consente di inizializzare una nuova istanza della classe DuplexClientBase<TChannel> utilizzando l'oggetto callback specificato. |
DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress) |
Consente di inizializzare una nuova istanza della classe DuplexClientBase<TChannel> con l'oggetto callback, l'associazione e l'indirizzo dell'endpoint di servizio specificati. |
DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint) |
Inizializza una nuova istanza della classe DuplexClientBase<TChannel> con l'oggetto callback e l'endpoint di servizio specificati. |
DuplexClientBase<TChannel>(InstanceContext, String) |
Consente di inizializzare una nuova istanza della classe DuplexClientBase<TChannel> con l'oggetto callback e il nome di configurazione specificati. |
DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress) |
Consente di inizializzare una nuova istanza della classe DuplexClientBase<TChannel> con l'oggetto callback, il nome di configurazione e l'indirizzo dell'endpoint di servizio specificati. |
DuplexClientBase<TChannel>(InstanceContext, String, String) |
Consente di inizializzare una nuova istanza della classe DuplexClientBase<TChannel> con l'oggetto callback, il nome di configurazione e l'indirizzo dell'endpoint di servizio specificati. |
DuplexClientBase<TChannel>(Object) |
Consente di inizializzare una nuova istanza della classe DuplexClientBase<TChannel> utilizzando l'oggetto callback specificato. |
DuplexClientBase<TChannel>(Object, Binding, EndpointAddress) |
Consente di inizializzare una nuova istanza della classe DuplexClientBase<TChannel> con l'oggetto callback, l'associazione e l'indirizzo dell'endpoint di servizio specificati. |
DuplexClientBase<TChannel>(Object, ServiceEndpoint) |
Inizializza una nuova istanza della classe DuplexClientBase<TChannel> con l'oggetto callback e l'endpoint di servizio specificati. |
DuplexClientBase<TChannel>(Object, String) |
Consente di inizializzare una nuova istanza della classe DuplexClientBase<TChannel> con l'oggetto callback e il nome di configurazione specificati. |
DuplexClientBase<TChannel>(Object, String, EndpointAddress) |
Consente di inizializzare una nuova istanza della classe DuplexClientBase<TChannel> con l'oggetto callback, il nome di configurazione e l'indirizzo dell'endpoint di servizio specificati. |
DuplexClientBase<TChannel>(Object, String, String) |
Consente di inizializzare una nuova istanza della classe DuplexClientBase<TChannel> con l'oggetto callback, il nome di configurazione dell'endpoint e l'indirizzo dell'endpoint di servizio specificati. |
Proprietà
Channel |
Ottiene il canale interno utilizzato per inviare messaggi a endpoint del servizio con diverse configurazioni. (Ereditato da ClientBase<TChannel>) |
ChannelFactory |
Ottiene l'oggetto ChannelFactory<TChannel> sottostante. (Ereditato da ClientBase<TChannel>) |
ClientCredentials |
Ottiene le credenziali client utilizzate per chiamare un'operazione. (Ereditato da ClientBase<TChannel>) |
Endpoint |
Ottiene l'endpoint di destinazione per il servizio al quale il client WCF può connettersi. (Ereditato da ClientBase<TChannel>) |
InnerChannel |
Ottiene l'implementazione dell'interfaccia IClientChannel sottostante. (Ereditato da ClientBase<TChannel>) |
InnerDuplexChannel |
Ottiene l'implementazione di IClientChannel sottostante per il canale duplex. |
State |
Ottiene lo stato corrente dell'oggetto ClientBase<TChannel>. (Ereditato da ClientBase<TChannel>) |
Metodi
Abort() |
Determina la transizione immediata dell'oggetto ClientBase<TChannel> dallo stato corrente allo stato di chiusura. (Ereditato da ClientBase<TChannel>) |
Close() |
Determina la transizione dell'oggetto ClientBase<TChannel> dallo stato corrente allo stato di chiusura. (Ereditato da ClientBase<TChannel>) |
CloseAsync() |
Consente di creare un canale per un servizio duplex e associare tale canale a un oggetto callback. (Ereditato da ClientBase<TChannel>) |
CreateChannel() |
Restituisce un canale per il servizio associato all'oggetto callback passato al costruttore. |
CreateChannel() |
Restituisce un nuovo canale per il servizio. (Ereditato da ClientBase<TChannel>) |
DisplayInitializationUI() |
Indica al canale interno di visualizzare un'interfaccia utente se necessaria per inizializzare il canale prima di utilizzarlo. (Ereditato da ClientBase<TChannel>) |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
GetDefaultValueForInitialization<T>() |
Replica il comportamento della parola chiave predefinita in C#. (Ereditato da ClientBase<TChannel>) |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
InvokeAsync(ClientBase<TChannel>.BeginOperationDelegate, Object[], ClientBase<TChannel>.EndOperationDelegate, SendOrPostCallback, Object) |
Fornisce supporto per implementare il modello asincrono basato su eventi Per ulteriori informazioni su questo modello, vedere Cenni preliminari sul modello asincrono basato su eventi. (Ereditato da ClientBase<TChannel>) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
Open() |
Determina la transizione dell'oggetto ClientBase<TChannel> dallo stato di creazione allo stato di apertura. (Ereditato da ClientBase<TChannel>) |
OpenAsync() |
Consente di creare un canale per un servizio duplex e associare tale canale a un oggetto callback. (Ereditato da ClientBase<TChannel>) |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
IAsyncDisposable.DisposeAsync() |
Consente di creare un canale per un servizio duplex e associare tale canale a un oggetto callback. (Ereditato da ClientBase<TChannel>) |
ICommunicationObject.BeginClose(AsyncCallback, Object) |
Avvia un'operazione asincrona per chiudere l'oggetto ClientBase<TChannel>. (Ereditato da ClientBase<TChannel>) |
ICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object) |
Avvia un'operazione asincrona per chiudere l'oggetto ClientBase<TChannel> entro un determinato intervallo di tempo. (Ereditato da ClientBase<TChannel>) |
ICommunicationObject.BeginOpen(AsyncCallback, Object) |
Avvia un'operazione asincrona per aprire l'oggetto ClientBase<TChannel>. (Ereditato da ClientBase<TChannel>) |
ICommunicationObject.BeginOpen(TimeSpan, AsyncCallback, Object) |
Avvia un'operazione asincrona per aprire l'oggetto ClientBase<TChannel> entro l'intervallo di tempo specificato. (Ereditato da ClientBase<TChannel>) |
ICommunicationObject.Close() |
Comporta la transizione di un oggetto di comunicazione dallo stato corrente allo stato di chiusura. (Ereditato da ClientBase<TChannel>) |
ICommunicationObject.Close(TimeSpan) |
Determina la transizione dell'oggetto ClientBase<TChannel> dallo stato corrente allo stato di chiusura. (Ereditato da ClientBase<TChannel>) |
ICommunicationObject.Closed |
Gestore eventi richiamato quando l'oggetto ClientBase<TChannel> ha eseguito la transizione dallo stato corrente allo stato di chiusura. (Ereditato da ClientBase<TChannel>) |
ICommunicationObject.Closing |
Gestore eventi richiamato quando l'oggetto ClientBase<TChannel> esegue la transizione dallo stato corrente allo stato di chiusura. (Ereditato da ClientBase<TChannel>) |
ICommunicationObject.EndClose(IAsyncResult) |
Completa un'operazione asincrona di chiusura dell'oggetto ClientBase<TChannel>. (Ereditato da ClientBase<TChannel>) |
ICommunicationObject.EndOpen(IAsyncResult) |
Completa un'operazione asincrona di apertura dell'oggetto ClientBase<TChannel>. (Ereditato da ClientBase<TChannel>) |
ICommunicationObject.Faulted |
Gestore eventi richiamato quando si verifica un errore durante l'esecuzione di un'operazione sull'oggetto ClientBase<TChannel>. (Ereditato da ClientBase<TChannel>) |
ICommunicationObject.Open() |
Comporta la transizione di un oggetto di comunicazione dallo stato di creazione allo stato di apertura. (Ereditato da ClientBase<TChannel>) |
ICommunicationObject.Open(TimeSpan) |
Determina la transizione dell'oggetto ClientBase<TChannel> dallo stato di creazione allo stato di apertura entro l'intervallo di tempo specificato. (Ereditato da ClientBase<TChannel>) |
ICommunicationObject.Opened |
Gestore eventi richiamato quando l'oggetto ClientBase<TChannel> esegue la transizione dallo stato di creazione allo stato di apertura. (Ereditato da ClientBase<TChannel>) |
ICommunicationObject.Opening |
Gestore eventi richiamato quando l'oggetto ClientBase<TChannel> esegue la transizione dallo stato di creazione allo stato di apertura. (Ereditato da ClientBase<TChannel>) |
IDisposable.Dispose() |
Implementazione esplicita del metodo Dispose(). (Ereditato da ClientBase<TChannel>) |
Metodi di estensione
CloseHelperAsync(ICommunicationObject, TimeSpan) |
Consente di creare un canale per un servizio duplex e associare tale canale a un oggetto callback. |
OpenHelperAsync(ICommunicationObject, TimeSpan) |
Consente di creare un canale per un servizio duplex e associare tale canale a un oggetto callback. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Consente di configurare la modalità di esecuzione delle espressioni await per le attività restituite da un elemento disposable asincrono. |
Si applica a
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per