DuplexClientBase<TChannel> Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
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. |