Condividi tramite


DuplexClientBase<TChannel> Classe

Definizione

Utilizzato per 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 del canale da creare.

Ereditarietà
DuplexClientBase<TChannel>

Esempio

Nell'esempio seguente viene illustrato l'utilizzo nel client di un tipo di client WCF duplex, il SampleDuplexHelloClient, per passare un nuovo oggetto System.ServiceModel.InstanceContext con l'oggetto callback in 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 a un servizio che specifica un oggetto callback. L'oggetto DuplexClientBase<TChannel> esegue il wrapping di un oggetto System.ServiceModel.DuplexChannelFactory<TChannel>, che fornisce la connettività per l'oggetto WCF. È possibile usare uno dei due tipi per connettersi a un servizio duplex. Per altre informazioni sui servizi duplex, vedere Duplex Services.

Nota speciale per gli utenti C++ gestiti che derivano da questa classe:

  • Inserire il codice di pulizia in (On)(Begin)Close (and/or OnAbort), non in un distruttore.

  • Evitare distruttori: causano la generazione automatica del compilatore IDisposable

  • Evitare membri non di riferimento: possono causare la generazione automatica del compilatore IDisposable

  • Evitare finalizzatori; ma se si include uno, è necessario eliminare l'avviso di compilazione e chiamare SuppressFinalize(Object) e il finalizzatore stesso da (On)(Begin)Close (e/o OnAbort) per emulare il comportamento IDisposable generato automaticamente.

Costruttori

DuplexClientBase<TChannel>(InstanceContext)

Inizializza una nuova istanza della classe DuplexClientBase<TChannel> utilizzando l'oggetto callback specificato.

DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress)

Inizializza una nuova istanza della classe DuplexClientBase<TChannel> utilizzando 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)

Inizializza una nuova istanza della classe DuplexClientBase<TChannel> utilizzando l'oggetto di callback e il nome di configurazione specificati.

DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)

Inizializza una nuova istanza della classe DuplexClientBase<TChannel> utilizzando l'oggetto callback, il nome di configurazione e l'indirizzo dell'endpoint di servizio specificati.

DuplexClientBase<TChannel>(InstanceContext, String, String)

Inizializza una nuova istanza della classe DuplexClientBase<TChannel> utilizzando l'oggetto callback, il nome di configurazione e l'indirizzo dell'endpoint di servizio specificati.

DuplexClientBase<TChannel>(Object)

Inizializza una nuova istanza della classe DuplexClientBase<TChannel> utilizzando l'oggetto callback specificato.

DuplexClientBase<TChannel>(Object, Binding, EndpointAddress)

Inizializza una nuova istanza della classe DuplexClientBase<TChannel> utilizzando 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)

Inizializza una nuova istanza della classe DuplexClientBase<TChannel> utilizzando l'oggetto di callback e il nome di configurazione specificati.

DuplexClientBase<TChannel>(Object, String, EndpointAddress)

Inizializza una nuova istanza della classe DuplexClientBase<TChannel> utilizzando l'oggetto callback, il nome di configurazione e l'indirizzo dell'endpoint di servizio specificati.

DuplexClientBase<TChannel>(Object, String, String)

Inizializza una nuova istanza della classe DuplexClientBase<TChannel> utilizzando l'oggetto callback, il nome della configurazione dell'endpoint e l'indirizzo dell'endpoint di servizio specificati.

Proprietà

Channel

Ottiene il canale interno utilizzato per inviare messaggi a diversi endpoint di servizio configurati.

(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 a cui il client WCF può connettersi.

(Ereditato da ClientBase<TChannel>)
InnerChannel

Ottiene l'implementazione del IClientChannel sottostante.

(Ereditato da ClientBase<TChannel>)
InnerDuplexChannel

Ottiene l'implementazione IClientChannel sottostante per il canale duplex.

State

Ottiene lo stato corrente dell'oggetto ClientBase<TChannel>.

(Ereditato da ClientBase<TChannel>)

Metodi

Abort()

Fa sì che l'oggetto ClientBase<TChannel> passi immediatamente dallo stato corrente allo stato chiuso.

(Ereditato da ClientBase<TChannel>)
Close()

Fa sì che l'oggetto ClientBase<TChannel> passi dallo stato corrente allo stato chiuso.

(Ereditato da ClientBase<TChannel>)
CloseAsync()

Utilizzato per creare un canale per un servizio duplex e associare tale canale a un oggetto callback.

(Ereditato da ClientBase<TChannel>)
CreateChannel()

Restituisce un canale al servizio associato all'oggetto callback passato al costruttore.

CreateChannel()

Restituisce un nuovo canale al servizio.

(Ereditato da ClientBase<TChannel>)
DisplayInitializationUI()

Indica al canale interno di visualizzare un'interfaccia utente se necessario inizializzare il canale prima di usarlo.

(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 il Type dell'istanza corrente.

(Ereditato da Object)
InvokeAsync(ClientBase<TChannel>.BeginOperationDelegate, Object[], ClientBase<TChannel>.EndOperationDelegate, SendOrPostCallback, Object)

Fornisce supporto per l'implementazione del modello asincrono basato su eventi. Per altre informazioni su questo modello, vedere Cenni preliminari sul modello asincrono basato su eventi.

(Ereditato da ClientBase<TChannel>)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
Open()

Fa sì che l'oggetto ClientBase<TChannel> passi dallo stato creato allo stato aperto.

(Ereditato da ClientBase<TChannel>)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IAsyncDisposable.DisposeAsync()

Utilizzato per 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 il ClientBase<TChannel>.

(Ereditato da ClientBase<TChannel>)
ICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object)

Avvia un'operazione asincrona per chiudere il ClientBase<TChannel> con un timeout specificato.

(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 un intervallo di tempo specificato.

(Ereditato da ClientBase<TChannel>)
ICommunicationObject.Close()

Fa sì che un oggetto di comunicazione passi dallo stato corrente allo stato chiuso.

(Ereditato da ClientBase<TChannel>)
ICommunicationObject.Close(TimeSpan)

Fa sì che l'oggetto ClientBase<TChannel> passi dallo stato corrente allo stato chiuso.

(Ereditato da ClientBase<TChannel>)
ICommunicationObject.Closed

Gestore eventi richiamato quando l'oggetto ClientBase<TChannel> è passato dallo stato corrente allo stato chiuso.

(Ereditato da ClientBase<TChannel>)
ICommunicationObject.Closing

Gestore eventi richiamato quando l'oggetto ClientBase<TChannel> passa dallo stato corrente allo stato chiuso.

(Ereditato da ClientBase<TChannel>)
ICommunicationObject.EndClose(IAsyncResult)

Completa un'operazione asincrona per chiudere l'oggetto ClientBase<TChannel>.

(Ereditato da ClientBase<TChannel>)
ICommunicationObject.EndOpen(IAsyncResult)

Completa un'operazione asincrona per aprire l'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()

Fa sì che un oggetto di comunicazione passi dallo stato creato allo stato aperto.

(Ereditato da ClientBase<TChannel>)
ICommunicationObject.Open(TimeSpan)

Fa sì che l'oggetto ClientBase<TChannel> passi dallo stato creato allo stato aperto entro un intervallo di tempo specificato.

(Ereditato da ClientBase<TChannel>)
ICommunicationObject.Opened

Gestore eventi richiamato quando l'oggetto ClientBase<TChannel> passa dallo stato creato allo stato aperto.

(Ereditato da ClientBase<TChannel>)
ICommunicationObject.Opening

Gestore eventi richiamato quando l'oggetto ClientBase<TChannel> passa dallo stato creato allo stato aperto.

(Ereditato da ClientBase<TChannel>)
IDisposable.Dispose()

Implementazione esplicita del metodo Dispose().

(Ereditato da ClientBase<TChannel>)

Metodi di estensione

ConfigureAwait(IAsyncDisposable, Boolean)

Configura il modo in cui verranno eseguite le attese nelle attività restituite da un oggetto eliminabile asincrono.

Si applica a