Bagikan melalui


DuplexClientBase<TChannel> Kelas

Definisi

Digunakan untuk membuat saluran ke layanan dupleks dan mengaitkan saluran tersebut dengan objek panggilan balik.

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)

Jenis parameter

TChannel

Jenis saluran yang akan dibuat.

Warisan
DuplexClientBase<TChannel>

Contoh

Contoh berikut menunjukkan penggunaan dalam klien jenis klien WCF dupleks, SampleDuplexHelloClient, untuk meneruskan objek System.ServiceModel.InstanceContext baru dengan objek panggilan balik untuk mendengarkan panggilan balik.

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

Keterangan

Gunakan kelas DuplexClientBase<TChannel> untuk membuat saluran ke layanan yang menentukan objek panggilan balik. Objek DuplexClientBase<TChannel> membungkus objek System.ServiceModel.DuplexChannelFactory<TChannel>, yang menyediakan konektivitas untuk objek WCF. Anda dapat menggunakan salah satu jenis untuk menyambungkan ke layanan dupleks. Untuk informasi selengkapnya tentang layanan dupleks, lihat Duplex Services.

Catatan khusus untuk pengguna C++ Terkelola yang berasal dari kelas ini:

  • Masukkan kode pembersihan Anda di (Aktif)(Mulai)Tutup (dan/atau OnAbort), bukan di destruktor.

  • Hindari destruktor: mereka menyebabkan pengompilasi membuat IDisposable secara otomatis

  • Hindari anggota non-referensi: mereka dapat menyebabkan pengompilasi membuat IDisposable secara otomatis

  • Hindari finalizer; tetapi jika Anda menyertakannya, Anda harus menekan peringatan build dan memanggil SuppressFinalize(Object) dan finalizer itu sendiri dari (On)(Begin)Close (dan/atau OnAbort) untuk meniru apa yang akan menjadi perilaku IDisposable yang dihasilkan secara otomatis.

Konstruktor

DuplexClientBase<TChannel>(InstanceContext)

Menginisialisasi instans baru kelas DuplexClientBase<TChannel> menggunakan objek panggilan balik yang ditentukan.

DuplexClientBase<TChannel>(InstanceContext, Binding, EndpointAddress)

Menginisialisasi instans baru kelas DuplexClientBase<TChannel> menggunakan objek panggilan balik, pengikatan, dan alamat titik akhir layanan yang ditentukan.

DuplexClientBase<TChannel>(InstanceContext, ServiceEndpoint)

Menginisialisasi instans baru kelas DuplexClientBase<TChannel> dengan objek panggilan balik dan titik akhir layanan yang ditentukan.

DuplexClientBase<TChannel>(InstanceContext, String)

Menginisialisasi instans baru kelas DuplexClientBase<TChannel> menggunakan objek panggilan balik dan nama konfigurasi yang ditentukan.

DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)

Menginisialisasi instans baru kelas DuplexClientBase<TChannel> menggunakan objek panggilan balik, nama konfigurasi, dan alamat titik akhir layanan yang ditentukan.

DuplexClientBase<TChannel>(InstanceContext, String, String)

Menginisialisasi instans baru kelas DuplexClientBase<TChannel> menggunakan objek panggilan balik, nama konfigurasi, dan alamat titik akhir layanan yang ditentukan.

DuplexClientBase<TChannel>(Object)

Menginisialisasi instans baru kelas DuplexClientBase<TChannel> menggunakan objek panggilan balik yang ditentukan.

DuplexClientBase<TChannel>(Object, Binding, EndpointAddress)

Menginisialisasi instans baru kelas DuplexClientBase<TChannel> menggunakan objek panggilan balik, pengikatan, dan alamat titik akhir layanan yang ditentukan.

DuplexClientBase<TChannel>(Object, ServiceEndpoint)

Menginisialisasi instans baru kelas DuplexClientBase<TChannel> dengan objek panggilan balik dan titik akhir layanan yang ditentukan.

DuplexClientBase<TChannel>(Object, String)

Menginisialisasi instans baru kelas DuplexClientBase<TChannel> menggunakan objek panggilan balik dan nama konfigurasi yang ditentukan.

DuplexClientBase<TChannel>(Object, String, EndpointAddress)

Menginisialisasi instans baru kelas DuplexClientBase<TChannel> menggunakan objek panggilan balik, nama konfigurasi, dan alamat titik akhir layanan yang ditentukan.

DuplexClientBase<TChannel>(Object, String, String)

Menginisialisasi instans baru kelas DuplexClientBase<TChannel> menggunakan objek panggilan balik yang ditentukan, nama konfigurasi titik akhir, dan alamat titik akhir layanan.

Properti

Channel

Mendapatkan saluran dalam yang digunakan untuk mengirim pesan ke berbagai titik akhir layanan yang dikonfigurasi.

(Diperoleh dari ClientBase<TChannel>)
ChannelFactory

Mendapatkan objek ChannelFactory<TChannel> yang mendasar.

(Diperoleh dari ClientBase<TChannel>)
ClientCredentials

Mendapatkan kredensial klien yang digunakan untuk memanggil operasi.

(Diperoleh dari ClientBase<TChannel>)
Endpoint

Mendapatkan titik akhir target untuk layanan yang dapat disambungkan oleh klien WCF.

(Diperoleh dari ClientBase<TChannel>)
InnerChannel

Mendapatkan implementasi IClientChannel yang mendasar.

(Diperoleh dari ClientBase<TChannel>)
InnerDuplexChannel

Mendapatkan implementasi IClientChannel yang mendasar untuk saluran dupleks.

State

Mendapatkan status objek ClientBase<TChannel> saat ini.

(Diperoleh dari ClientBase<TChannel>)

Metode

Abort()

Menyebabkan objek ClientBase<TChannel> segera beralih dari statusnya saat ini ke status tertutup.

(Diperoleh dari ClientBase<TChannel>)
Close()

Menyebabkan objek ClientBase<TChannel> beralih dari statusnya saat ini ke status tertutup.

(Diperoleh dari ClientBase<TChannel>)
CloseAsync()

Digunakan untuk membuat saluran ke layanan dupleks dan mengaitkan saluran tersebut dengan objek panggilan balik.

(Diperoleh dari ClientBase<TChannel>)
CreateChannel()

Mengembalikan saluran ke layanan yang terkait dengan objek panggilan balik yang diteruskan ke konstruktor.

CreateChannel()

Mengembalikan saluran baru ke layanan.

(Diperoleh dari ClientBase<TChannel>)
DisplayInitializationUI()

Menginstruksikan saluran dalam untuk menampilkan antarmuka pengguna jika diperlukan untuk menginisialisasi saluran sebelum menggunakannya.

(Diperoleh dari ClientBase<TChannel>)
Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetDefaultValueForInitialization<T>()

Mereplikasi perilaku kata kunci default di C#.

(Diperoleh dari ClientBase<TChannel>)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan Type instans saat ini.

(Diperoleh dari Object)
InvokeAsync(ClientBase<TChannel>.BeginOperationDelegate, Object[], ClientBase<TChannel>.EndOperationDelegate, SendOrPostCallback, Object)

Menyediakan dukungan untuk menerapkan pola asinkron berbasis peristiwa. Untuk informasi selengkapnya tentang pola ini, lihat Gambaran Umum Pola Asinkron Berbasis Peristiwa.

(Diperoleh dari ClientBase<TChannel>)
MemberwiseClone()

Membuat salinan dangkal dari Objectsaat ini.

(Diperoleh dari Object)
Open()

Menyebabkan objek ClientBase<TChannel> transisi dari status yang dibuat ke status terbuka.

(Diperoleh dari ClientBase<TChannel>)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Implementasi Antarmuka Eksplisit

IAsyncDisposable.DisposeAsync()

Digunakan untuk membuat saluran ke layanan dupleks dan mengaitkan saluran tersebut dengan objek panggilan balik.

(Diperoleh dari ClientBase<TChannel>)
ICommunicationObject.BeginClose(AsyncCallback, Object)

Memulai operasi asinkron untuk menutup ClientBase<TChannel>.

(Diperoleh dari ClientBase<TChannel>)
ICommunicationObject.BeginClose(TimeSpan, AsyncCallback, Object)

Memulai operasi asinkron untuk menutup ClientBase<TChannel> dengan batas waktu yang ditentukan.

(Diperoleh dari ClientBase<TChannel>)
ICommunicationObject.BeginOpen(AsyncCallback, Object)

Memulai operasi asinkron untuk membuka objek ClientBase<TChannel>.

(Diperoleh dari ClientBase<TChannel>)
ICommunicationObject.BeginOpen(TimeSpan, AsyncCallback, Object)

Memulai operasi asinkron untuk membuka objek ClientBase<TChannel> dalam interval waktu tertentu.

(Diperoleh dari ClientBase<TChannel>)
ICommunicationObject.Close()

Menyebabkan objek komunikasi beralih dari statusnya saat ini ke status tertutup.

(Diperoleh dari ClientBase<TChannel>)
ICommunicationObject.Close(TimeSpan)

Menyebabkan objek ClientBase<TChannel> beralih dari statusnya saat ini ke status tertutup.

(Diperoleh dari ClientBase<TChannel>)
ICommunicationObject.Closed

Penanganan aktivitas yang dipanggil ketika objek ClientBase<TChannel> telah beralih dari statusnya saat ini ke status tertutup.

(Diperoleh dari ClientBase<TChannel>)
ICommunicationObject.Closing

Penanganan aktivitas yang dipanggil ketika objek ClientBase<TChannel> beralih dari statusnya saat ini ke status tertutup.

(Diperoleh dari ClientBase<TChannel>)
ICommunicationObject.EndClose(IAsyncResult)

Menyelesaikan operasi asinkron untuk menutup objek ClientBase<TChannel>.

(Diperoleh dari ClientBase<TChannel>)
ICommunicationObject.EndOpen(IAsyncResult)

Menyelesaikan operasi asinkron untuk membuka objek ClientBase<TChannel>.

(Diperoleh dari ClientBase<TChannel>)
ICommunicationObject.Faulted

Penanganan aktivitas yang dipanggil ketika kesalahan terjadi saat melakukan operasi pada objek ClientBase<TChannel>.

(Diperoleh dari ClientBase<TChannel>)
ICommunicationObject.Open()

Menyebabkan objek komunikasi beralih dari status yang dibuat ke status terbuka.

(Diperoleh dari ClientBase<TChannel>)
ICommunicationObject.Open(TimeSpan)

Menyebabkan objek ClientBase<TChannel> transisi dari status yang dibuat ke status terbuka dalam interval waktu yang ditentukan.

(Diperoleh dari ClientBase<TChannel>)
ICommunicationObject.Opened

Penanganan aktivitas yang dipanggil saat objek ClientBase<TChannel> transisi dari status yang dibuat ke status yang dibuka.

(Diperoleh dari ClientBase<TChannel>)
ICommunicationObject.Opening

Penanganan aktivitas yang dipanggil saat objek ClientBase<TChannel> transisi dari status yang dibuat ke status yang dibuka.

(Diperoleh dari ClientBase<TChannel>)
IDisposable.Dispose()

Implementasi eksplisit dari metode Dispose().

(Diperoleh dari ClientBase<TChannel>)

Metode Ekstensi

ConfigureAwait(IAsyncDisposable, Boolean)

Mengonfigurasi bagaimana menunggu tugas yang dikembalikan dari asinkron sekali pakai akan dilakukan.

Berlaku untuk