DuplexClientBase<TChannel> Klas

Definitie

Wordt gebruikt om een kanaal te maken voor een duplex-service en dat kanaal te koppelen aan een callback-object.

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)

Type parameters

TChannel

Het type kanaal dat moet worden gemaakt.

Overname
DuplexClientBase<TChannel>

Voorbeelden

In het volgende voorbeeld ziet u het gebruik in de client van een dubbelzijdig WCF-clienttype, het SampleDuplexHelloClient, om een nieuw System.ServiceModel.InstanceContext object door te geven met het callback-object om te luisteren naar callbacks.

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

Opmerkingen

Gebruik de DuplexClientBase<TChannel> klasse om een kanaal te maken voor een service waarmee een callback-object wordt opgegeven. Het DuplexClientBase<TChannel> object verpakt een System.ServiceModel.DuplexChannelFactory<TChannel> object, dat de connectiviteit biedt voor het WCF-object. U kunt beide typen gebruiken om verbinding te maken met een duplex-service. Zie Duplex Services voor meer informatie over duplexservices.

Speciale opmerking voor beheerde C++-gebruikers die zijn afgeleid van deze klasse:

  • Plaats de opschooncode in (On)(Begin)Close (en/of OnAbort), niet in een destructor.
  • Vermijd destructors: ze zorgen ervoor dat de compiler automatisch wordt gegenereerd IDisposable.
  • Vermijd niet-referentieleden: ze kunnen ertoe leiden dat de compiler automatisch wordt gegenereerd IDisposable.
  • Vermijd finalizers; maar als u er een opneemt, moet u de buildwaarschuwing en -aanroep SuppressFinalize(Object) onderdrukken en de finalizer zelf van (On)(Begin)Close (en/of OnAbort) om te emuleren wat het automatisch gegenereerde IDisposable gedrag zou zijn geweest.

Constructors

Name Description
DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress)

Initialiseert een nieuw exemplaar van de DuplexClientBase<TChannel> klasse met behulp van het opgegeven callback-object, de binding en het service-eindpuntadres.

DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint)

Initialiseert een nieuw exemplaar van de DuplexClientBase<TChannel> klasse met het opgegeven callback-object en service-eindpunt.

DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)

Initialiseert een nieuw exemplaar van de DuplexClientBase<TChannel> klasse met behulp van het opgegeven callback-object, de configuratienaam en het adres van het service-eindpunt.

DuplexClientBase<TChannel>(InstanceContext, String, String)

Initialiseert een nieuw exemplaar van de DuplexClientBase<TChannel> klasse met behulp van het opgegeven callback-object, de configuratienaam en het adres van het service-eindpunt.

DuplexClientBase<TChannel>(InstanceContext, String)

Initialiseert een nieuw exemplaar van de DuplexClientBase<TChannel> klasse met behulp van het opgegeven callback-object en de configuratienaam.

DuplexClientBase<TChannel>(InstanceContext)

Initialiseert een nieuw exemplaar van de DuplexClientBase<TChannel> klasse met behulp van het opgegeven callback-object.

DuplexClientBase<TChannel>(Object, Binding, EndpointAddress)

Initialiseert een nieuw exemplaar van de DuplexClientBase<TChannel> klasse met behulp van het opgegeven callback-object, de binding en het service-eindpuntadres.

DuplexClientBase<TChannel>(Object, ServiceEndpoint)

Initialiseert een nieuw exemplaar van de DuplexClientBase<TChannel> klasse met het opgegeven callback-object en service-eindpunt.

DuplexClientBase<TChannel>(Object, String, EndpointAddress)

Initialiseert een nieuw exemplaar van de DuplexClientBase<TChannel> klasse met behulp van het opgegeven callback-object, de configuratienaam en het adres van het service-eindpunt.

DuplexClientBase<TChannel>(Object, String, String)

Initialiseert een nieuw exemplaar van de DuplexClientBase<TChannel> klasse met behulp van het opgegeven callback-object, de naam van de eindpuntconfiguratie en het adres van het service-eindpunt.

DuplexClientBase<TChannel>(Object, String)

Initialiseert een nieuw exemplaar van de DuplexClientBase<TChannel> klasse met behulp van het opgegeven callback-object en de configuratienaam.

DuplexClientBase<TChannel>(Object)

Initialiseert een nieuw exemplaar van de DuplexClientBase<TChannel> klasse met behulp van het opgegeven callback-object.

Eigenschappen

Name Description
Channel

Hiermee wordt het binnenste kanaal opgehaald dat wordt gebruikt voor het verzenden van berichten naar verschillende geconfigureerde service-eindpunten.

(Overgenomen van ClientBase<TChannel>)
ChannelFactory

Hiermee wordt het onderliggende ChannelFactory<TChannel> object opgehaald.

(Overgenomen van ClientBase<TChannel>)
ClientCredentials

Hiermee haalt u de clientreferenties op die worden gebruikt om een bewerking aan te roepen.

(Overgenomen van ClientBase<TChannel>)
Endpoint

Hiermee haalt u het doeleindpunt op voor de service waarmee de WCF-client verbinding kan maken.

(Overgenomen van ClientBase<TChannel>)
InnerChannel

Hiermee haalt u de onderliggende IClientChannel implementatie op.

(Overgenomen van ClientBase<TChannel>)
InnerDuplexChannel

Hiermee haalt u de onderliggende IClientChannel implementatie voor het duplex-kanaal op.

State

Hiermee haalt u de huidige status van het ClientBase<TChannel> object op.

(Overgenomen van ClientBase<TChannel>)

Methoden

Name Description
Abort()

Zorgt ervoor dat het ClientBase<TChannel> object onmiddellijk van de huidige status overgaat naar de gesloten status.

(Overgenomen van ClientBase<TChannel>)
Close()

Zorgt ervoor dat het ClientBase<TChannel> object van de huidige status overgaat naar de gesloten status.

(Overgenomen van ClientBase<TChannel>)
CreateChannel()

Retourneert een kanaal naar de service die is gekoppeld aan het callback-object dat is doorgegeven aan de constructor.

CreateChannel()

Retourneert een nieuw kanaal naar de service.

(Overgenomen van ClientBase<TChannel>)
DisplayInitializationUI()

Geeft het binnenste kanaal de opdracht om een gebruikersinterface weer te geven als er een is vereist om het kanaal te initialiseren voordat het wordt gebruikt.

(Overgenomen van ClientBase<TChannel>)
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetDefaultValueForInitialization<T>()

Repliceert het gedrag van het standaardwoord in C#.

(Overgenomen van ClientBase<TChannel>)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
InvokeAsync(ClientBase<TChannel>.BeginOperationDelegate, Object[], ClientBase<TChannel>.EndOperationDelegate, SendOrPostCallback, Object)

Biedt ondersteuning voor het implementeren van het asynchrone patroon op basis van gebeurtenissen. Zie Overzicht van Asynchroon patroon op basis van gebeurtenissen voor meer informatie over dit patroon.

(Overgenomen van ClientBase<TChannel>)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
Open()

Zorgt ervoor dat het ClientBase<TChannel> object wordt overgezet van de gemaakte status in de geopende status.

(Overgenomen van ClientBase<TChannel>)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Expliciete interface-implementaties

Name Description
ICommunicationObject.BeginClose(AsyncCallback, Object)

Hiermee wordt een asynchrone bewerking gestart om de ClientBase<TChannel>.

(Overgenomen van ClientBase<TChannel>)
ICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object)

Hiermee wordt een asynchrone bewerking gestart om de ClientBase<TChannel> met een opgegeven time-out te sluiten.

(Overgenomen van ClientBase<TChannel>)
ICommunicationObject.BeginOpen(AsyncCallback, Object)

Hiermee wordt een asynchrone bewerking gestart om het ClientBase<TChannel> object te openen.

(Overgenomen van ClientBase<TChannel>)
ICommunicationObject.BeginOpen(TimeSpan, AsyncCallback, Object)

Hiermee wordt een asynchrone bewerking gestart om het ClientBase<TChannel> object binnen een opgegeven tijdsinterval te openen.

(Overgenomen van ClientBase<TChannel>)
ICommunicationObject.Close()

Zorgt ervoor dat een communicatieobject van de huidige status overgaat naar de gesloten status.

(Overgenomen van ClientBase<TChannel>)
ICommunicationObject.Close(TimeSpan)

Zorgt ervoor dat het ClientBase<TChannel> object van de huidige status overgaat naar de gesloten status.

(Overgenomen van ClientBase<TChannel>)
ICommunicationObject.Closed

De gebeurtenis-handler die wordt aangeroepen wanneer het ClientBase<TChannel> object is overgezet van de huidige status naar de gesloten status.

(Overgenomen van ClientBase<TChannel>)
ICommunicationObject.Closing

De gebeurtenis-handler die wordt aangeroepen wanneer het ClientBase<TChannel> object overgaat van de huidige status naar de gesloten status.

(Overgenomen van ClientBase<TChannel>)
ICommunicationObject.EndClose(IAsyncResult)

Hiermee voltooit u een asynchrone bewerking om het ClientBase<TChannel> object te sluiten.

(Overgenomen van ClientBase<TChannel>)
ICommunicationObject.EndOpen(IAsyncResult)

Hiermee wordt een asynchrone bewerking voltooid om het ClientBase<TChannel> object te openen.

(Overgenomen van ClientBase<TChannel>)
ICommunicationObject.Faulted

De gebeurtenishandler die wordt aangeroepen wanneer er een fout optreedt tijdens het uitvoeren van een bewerking op het ClientBase<TChannel> object.

(Overgenomen van ClientBase<TChannel>)
ICommunicationObject.Open()

Zorgt ervoor dat een communicatieobject wordt overgezet van de gemaakte status in de geopende status.

(Overgenomen van ClientBase<TChannel>)
ICommunicationObject.Open(TimeSpan)

Zorgt ervoor dat het ClientBase<TChannel> object binnen een opgegeven tijdsinterval van de gemaakte status overgaat naar de geopende status.

(Overgenomen van ClientBase<TChannel>)
ICommunicationObject.Opened

De gebeurtenis-handler die wordt aangeroepen wanneer het ClientBase<TChannel> object overgaat van de gemaakte status naar de geopende status.

(Overgenomen van ClientBase<TChannel>)
ICommunicationObject.Opening

De gebeurtenis-handler die wordt aangeroepen wanneer het ClientBase<TChannel> object overgaat van de gemaakte status naar de geopende status.

(Overgenomen van ClientBase<TChannel>)
IDisposable.Dispose()

Expliciete implementatie van de Dispose() methode.

(Overgenomen van ClientBase<TChannel>)

Van toepassing op