DuplexClientBase<TChannel> Klass

Definition

Används för att skapa en kanal till en duplex-tjänst och associera den kanalen med ett motringningsobjekt.

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)

Typparametrar

TChannel

Vilken typ av kanal som ska skapas.

Arv
DuplexClientBase<TChannel>

Exempel

I följande exempel visas användningen i klienten av en duplex-WCF-klienttyp, , SampleDuplexHelloClientför att skicka ett nytt System.ServiceModel.InstanceContext objekt med motringningsobjektet för att lyssna efter återanrop.

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

Kommentarer

DuplexClientBase<TChannel> Använd klassen för att skapa en kanal till en tjänst som anger ett motringningsobjekt. Objektet DuplexClientBase<TChannel> omsluter ett System.ServiceModel.DuplexChannelFactory<TChannel> objekt som tillhandahåller anslutningen för WCF-objektet. Du kan använda någon av typerna för att ansluta till en duplex-tjänst. Mer information om duplex-tjänster finns i Duplex Services.

Särskild anmärkning för hanterade C++-användare som härleds från den här klassen:

  • Placera din rensningskod i (På)(Begin)Close (och/eller OnAbort), inte i en destruktor.
  • Undvik destructors: de gör att kompilatorn automatiskt genererar IDisposable.
  • Undvik icke-referensmedlemmar: de kan göra så att kompilatorn automatiskt genererar IDisposable.
  • Undvik finalizers; men om du inkluderar en bör du ignorera byggvarningen och anropet SuppressFinalize(Object) och själva slutföraren från (På)(Begin)Close (och/eller OnAbort) för att emulera vad som skulle ha varit det automatiskt genererade beteendet IDisposable .

Konstruktorer

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

Initierar en ny instans av DuplexClientBase<TChannel> klassen med det angivna motringningsobjektet, bindningen och tjänstslutpunktsadressen.

DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint)

Initierar en ny instans av DuplexClientBase<TChannel> klassen med det angivna motringningsobjektet och tjänstslutpunkten.

DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)

Initierar en ny instans av DuplexClientBase<TChannel> klassen med det angivna motringningsobjektet, konfigurationsnamnet och tjänstslutpunktsadressen.

DuplexClientBase<TChannel>(InstanceContext, String, String)

Initierar en ny instans av DuplexClientBase<TChannel> klassen med det angivna motringningsobjektet, konfigurationsnamnet och tjänstslutpunktsadressen.

DuplexClientBase<TChannel>(InstanceContext, String)

Initierar en ny instans av DuplexClientBase<TChannel> klassen med det angivna motringningsobjektet och konfigurationsnamnet.

DuplexClientBase<TChannel>(InstanceContext)

Initierar en ny instans av DuplexClientBase<TChannel> klassen med det angivna motringningsobjektet.

DuplexClientBase<TChannel>(Object, Binding, EndpointAddress)

Initierar en ny instans av DuplexClientBase<TChannel> klassen med det angivna motringningsobjektet, bindningen och tjänstslutpunktsadressen.

DuplexClientBase<TChannel>(Object, ServiceEndpoint)

Initierar en ny instans av DuplexClientBase<TChannel> klassen med det angivna motringningsobjektet och tjänstslutpunkten.

DuplexClientBase<TChannel>(Object, String, EndpointAddress)

Initierar en ny instans av DuplexClientBase<TChannel> klassen med det angivna motringningsobjektet, konfigurationsnamnet och tjänstslutpunktsadressen.

DuplexClientBase<TChannel>(Object, String, String)

Initierar en ny instans av DuplexClientBase<TChannel> klassen med det angivna motringningsobjektet, konfigurationsnamnet för slutpunkten och tjänstslutpunktsadressen.

DuplexClientBase<TChannel>(Object, String)

Initierar en ny instans av DuplexClientBase<TChannel> klassen med det angivna motringningsobjektet och konfigurationsnamnet.

DuplexClientBase<TChannel>(Object)

Initierar en ny instans av DuplexClientBase<TChannel> klassen med det angivna motringningsobjektet.

Egenskaper

Name Description
Channel

Hämtar den inre kanalen som används för att skicka meddelanden till olika konfigurerade tjänstslutpunkter.

(Ärvd från ClientBase<TChannel>)
ChannelFactory

Hämtar det underliggande ChannelFactory<TChannel> objektet.

(Ärvd från ClientBase<TChannel>)
ClientCredentials

Hämtar klientens autentiseringsuppgifter som används för att anropa en åtgärd.

(Ärvd från ClientBase<TChannel>)
Endpoint

Hämtar målslutpunkten för tjänsten som WCF-klienten kan ansluta till.

(Ärvd från ClientBase<TChannel>)
InnerChannel

Hämtar den underliggande IClientChannel implementeringen.

(Ärvd från ClientBase<TChannel>)
InnerDuplexChannel

Hämtar den underliggande IClientChannel implementeringen för duplex-kanalen.

State

Hämtar objektets ClientBase<TChannel> aktuella tillstånd.

(Ärvd från ClientBase<TChannel>)

Metoder

Name Description
Abort()

Gör att objektet ClientBase<TChannel> övergår omedelbart från dess aktuella tillstånd till det stängda tillståndet.

(Ärvd från ClientBase<TChannel>)
Close()

Gör att objektet ClientBase<TChannel> övergår från dess aktuella tillstånd till det stängda tillståndet.

(Ärvd från ClientBase<TChannel>)
CreateChannel()

Returnerar en kanal till tjänsten som är associerad med motringningsobjektet som skickas till konstruktorn.

CreateChannel()

Returnerar en ny kanal till tjänsten.

(Ärvd från ClientBase<TChannel>)
DisplayInitializationUI()

Instruerar den inre kanalen att visa ett användargränssnitt om det krävs för att initiera kanalen innan den används.

(Ärvd från ClientBase<TChannel>)
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetDefaultValueForInitialization<T>()

Replikerar beteendet för standardnyckelordet i C#.

(Ärvd från ClientBase<TChannel>)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
InvokeAsync(ClientBase<TChannel>.BeginOperationDelegate, Object[], ClientBase<TChannel>.EndOperationDelegate, SendOrPostCallback, Object)

Ger stöd för att implementera det händelsebaserade asynkrona mönstret. Mer information om det här mönstret finns i Händelsebaserad asynkron mönsteröversikt.

(Ärvd från ClientBase<TChannel>)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
Open()

ClientBase<TChannel> Gör att objektet övergår från det skapade tillståndet till det öppnade tillståndet.

(Ärvd från ClientBase<TChannel>)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Explicita gränssnittsimplementeringar

Name Description
ICommunicationObject.BeginClose(AsyncCallback, Object)

Påbörjar en asynkron åtgärd för att stänga ClientBase<TChannel>.

(Ärvd från ClientBase<TChannel>)
ICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object)

Påbörjar en asynkron åtgärd för att stänga ClientBase<TChannel> med en angiven tidsgräns.

(Ärvd från ClientBase<TChannel>)
ICommunicationObject.BeginOpen(AsyncCallback, Object)

Påbörjar en asynkron åtgärd för att öppna ClientBase<TChannel> objektet.

(Ärvd från ClientBase<TChannel>)
ICommunicationObject.BeginOpen(TimeSpan, AsyncCallback, Object)

Påbörjar en asynkron åtgärd för att öppna ClientBase<TChannel> objektet inom ett angivet tidsintervall.

(Ärvd från ClientBase<TChannel>)
ICommunicationObject.Close()

Gör att ett kommunikationsobjekt övergår från dess aktuella tillstånd till det stängda tillståndet.

(Ärvd från ClientBase<TChannel>)
ICommunicationObject.Close(TimeSpan)

Gör att objektet ClientBase<TChannel> övergår från dess aktuella tillstånd till det stängda tillståndet.

(Ärvd från ClientBase<TChannel>)
ICommunicationObject.Closed

Händelsehanteraren som anropas när ClientBase<TChannel> objektet har övergått från dess aktuella tillstånd till det stängda tillståndet.

(Ärvd från ClientBase<TChannel>)
ICommunicationObject.Closing

Händelsehanteraren som anropas när objektet ClientBase<TChannel> övergår från dess aktuella tillstånd till det stängda tillståndet.

(Ärvd från ClientBase<TChannel>)
ICommunicationObject.EndClose(IAsyncResult)

Slutför en asynkron åtgärd för att stänga objektet ClientBase<TChannel> .

(Ärvd från ClientBase<TChannel>)
ICommunicationObject.EndOpen(IAsyncResult)

Slutför en asynkron åtgärd för att öppna ClientBase<TChannel> objektet.

(Ärvd från ClientBase<TChannel>)
ICommunicationObject.Faulted

Händelsehanteraren som anropas när ett fel inträffar när en åtgärd utförs på ClientBase<TChannel> objektet.

(Ärvd från ClientBase<TChannel>)
ICommunicationObject.Open()

Gör att ett kommunikationsobjekt övergår från det skapade tillståndet till det öppnade tillståndet.

(Ärvd från ClientBase<TChannel>)
ICommunicationObject.Open(TimeSpan)

ClientBase<TChannel> Gör att objektet övergår från det skapade tillståndet till det öppnade tillståndet inom ett angivet tidsintervall.

(Ärvd från ClientBase<TChannel>)
ICommunicationObject.Opened

Händelsehanteraren som anropas när objektet ClientBase<TChannel> övergår från det skapade tillståndet till det öppnade tillståndet.

(Ärvd från ClientBase<TChannel>)
ICommunicationObject.Opening

Händelsehanteraren som anropas när objektet ClientBase<TChannel> övergår från det skapade tillståndet till det öppnade tillståndet.

(Ärvd från ClientBase<TChannel>)
IDisposable.Dispose()

Explicit implementering av Dispose() metoden.

(Ärvd från ClientBase<TChannel>)

Gäller för