DuplexClientBase<TChannel> Classe

Definizione

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à
DuplexClientBase<TChannel>

Esempio

Nell'esempio seguente viene illustrato l'utilizzo nel client di un tipo client WCF duplex, , SampleDuplexHelloClientper 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