ChannelFactory<TChannel> Kelas

Definisi

Pabrik yang membuat saluran dari berbagai jenis yang digunakan oleh klien untuk mengirim pesan ke berbagai titik akhir layanan yang dikonfigurasi.

generic <typename TChannel>
public ref class ChannelFactory : System::ServiceModel::ChannelFactory, System::ServiceModel::Channels::IChannelFactory<TChannel>
public class ChannelFactory<TChannel> : System.ServiceModel.ChannelFactory, System.ServiceModel.Channels.IChannelFactory<TChannel>
type ChannelFactory<'Channel> = class
    inherit ChannelFactory
    interface IChannelFactory
    interface ICommunicationObject
    interface IChannelFactory<'Channel>
type ChannelFactory<'Channel> = class
    inherit ChannelFactory
    interface IChannelFactory<'Channel>
    interface IChannelFactory
    interface ICommunicationObject
Public Class ChannelFactory(Of TChannel)
Inherits ChannelFactory
Implements IChannelFactory(Of TChannel)

Jenis parameter

TChannel

Jenis saluran yang diproduksi oleh pabrik saluran. Jenis ini harus berupa IOutputChannel atau IRequestChannel.

Warisan
ChannelFactory<TChannel>
Turunan
Penerapan

Contoh

Contoh berikut menunjukkan cara membuat pabrik saluran dan menggunakannya untuk membuat dan mengelola saluran.

    BasicHttpBinding binding = new BasicHttpBinding();
    EndpointAddress address = new EndpointAddress("http://localhost:8000/ChannelApp");

    ChannelFactory<IRequestChannel> factory =
        new ChannelFactory<IRequestChannel>(binding, address);

    IRequestChannel channel = factory.CreateChannel();
    channel.Open();
    Message request = Message.CreateMessage(MessageVersion.Soap11, "hello");
    Message reply = channel.Request(request);
    Console.Out.WriteLine(reply.Headers.Action);
    reply.Close();
    channel.Close();
    factory.Close();
}

Contoh kode berikut menunjukkan cara menyisipkan perilaku klien secara terprogram sebelum pembuatan objek saluran oleh pabrik.

public class Client
{
  public static void Main()
  {
    try
    {
      // Picks up configuration from the config file.
      ChannelFactory<ISampleServiceChannel> factory
        = new ChannelFactory<ISampleServiceChannel>("WSHttpBinding_ISampleService");

      // Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(new EndpointBehaviorMessageInspector());

      ISampleServiceChannel wcfClientChannel = factory.CreateChannel();

      // Making calls.
      Console.WriteLine("Enter the greeting to send: ");
      string greeting = Console.ReadLine();
      Console.WriteLine("The service responded: " + wcfClientChannel.SampleMethod(greeting));

      Console.WriteLine("Press ENTER to exit:");
      Console.ReadLine();

      // Done with service.
      wcfClientChannel.Close();
      Console.WriteLine("Done!");
    }
    catch (TimeoutException timeProblem)
    {
      Console.WriteLine("The service operation timed out. " + timeProblem.Message);
      Console.Read();
    }
    catch (FaultException<SampleFault> fault)
    {
      Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage);
      Console.Read();
    }
    catch (CommunicationException commProblem)
    {
      Console.WriteLine("There was a communication problem. " + commProblem.Message);
      Console.Read();
    }
  }
Public Class Client
  Public Shared Sub Main()
    Try
      ' Picks up configuration from the config file.
      Dim factory As New ChannelFactory(Of ISampleServiceChannel)("WSHttpBinding_ISampleService")

      ' Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(New EndpointBehaviorMessageInspector())

      Dim wcfClientChannel As ISampleServiceChannel = factory.CreateChannel()

      ' Making calls.
      Console.WriteLine("Enter the greeting to send: ")
            Dim greeting As String = Console.ReadLine()
      Console.WriteLine("The service responded: " & wcfClientChannel.SampleMethod(greeting))

      Console.WriteLine("Press ENTER to exit:")
      Console.ReadLine()

      ' Done with service. 
      wcfClientChannel.Close()
      Console.WriteLine("Done!")
    Catch timeProblem As TimeoutException
      Console.WriteLine("The service operation timed out. " & timeProblem.Message)
      Console.Read()
    Catch fault As FaultException(Of SampleFault)
      Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage)
      Console.Read()
    Catch commProblem As CommunicationException
      Console.WriteLine("There was a communication problem. " & commProblem.Message)
      Console.Read()
    End Try
  End Sub

Keterangan

Kelas generik ini memungkinkan skenario yang lebih canggih di mana ada persyaratan untuk membuat pabrik saluran yang dapat digunakan untuk membuat lebih dari satu jenis saluran.

Saat menambahkan perilaku secara terprogram, perilaku ditambahkan ke properti yang sesuai Behaviors pada ChannelFactory sebelum pembuatan saluran apa pun. Lihat bagian contoh untuk sampel kode.

Aplikasi klien atau panggilan yang sering (misalnya, aplikasi tingkat menengah juga merupakan aplikasi klien) menggunakan jenis ini juga memiliki kebutuhan manajemen status yang kompleks serta kebutuhan performa. Untuk informasi selengkapnya tentang skenario ini, silakan lihat Aplikasi Klien Tingkat Menengah.

Konstruktor

ChannelFactory<TChannel>()

Menginisialisasi instans baru kelas ChannelFactory<TChannel>.

ChannelFactory<TChannel>(Binding)

Menginisialisasi instans baru kelas ChannelFactory<TChannel>.

ChannelFactory<TChannel>(Binding, EndpointAddress)

Menginisialisasi instans ChannelFactory<TChannel> baru kelas dengan pengikatan dan alamat titik akhir tertentu.

ChannelFactory<TChannel>(Binding, String)

Menginisialisasi instans ChannelFactory<TChannel> baru kelas dengan pengikatan dan alamat jarak jauh tertentu.

ChannelFactory<TChannel>(ServiceEndpoint)

Menginisialisasi instans ChannelFactory<TChannel> baru kelas yang menghasilkan saluran dengan titik akhir tertentu.

ChannelFactory<TChannel>(String)

Menginisialisasi instans ChannelFactory<TChannel> baru kelas dengan nama konfigurasi titik akhir tertentu.

ChannelFactory<TChannel>(String, EndpointAddress)

Menginisialisasi instans baru kelas yang ChannelFactory<TChannel> terkait dengan nama tertentu untuk konfigurasi titik akhir dan alamat jarak jauh.

ChannelFactory<TChannel>(Type)

Menginisialisasi instans baru kelas ChannelFactory<TChannel>.

Properti

Credentials

Mendapatkan kredensial yang digunakan oleh klien untuk mengomunikasikan titik akhir layanan melalui saluran yang diproduksi oleh pabrik.

(Diperoleh dari ChannelFactory)
DefaultCloseTimeout

Mendapatkan interval waktu default yang disediakan agar operasi penutupan selesai.

(Diperoleh dari ChannelFactory)
DefaultOpenTimeout

Mendapatkan interval waktu default yang disediakan agar operasi terbuka selesai.

(Diperoleh dari ChannelFactory)
Endpoint

Mendapatkan titik akhir layanan tempat saluran yang diproduksi oleh pabrik terhubung.

(Diperoleh dari ChannelFactory)
IsDisposed

Mendapatkan nilai yang menunjukkan apakah objek komunikasi telah dibuang.

(Diperoleh dari CommunicationObject)
State

Mendapatkan nilai yang menunjukkan status objek komunikasi saat ini.

(Diperoleh dari CommunicationObject)
ThisLock

Mendapatkan kunci yang saling eksklusif yang melindungi instans kelas selama transisi status.

(Diperoleh dari CommunicationObject)

Metode

Abort()

Menyebabkan objek komunikasi segera beralih dari statusnya saat ini ke status penutupan.

(Diperoleh dari CommunicationObject)
ApplyConfiguration(String)

Menginisialisasi pabrik saluran dengan perilaku yang disediakan oleh file konfigurasi tertentu dan dengan yang ada di titik akhir layanan pabrik saluran.

(Diperoleh dari ChannelFactory)
BeginClose(AsyncCallback, Object)

Memulai operasi asinkron untuk menutup objek komunikasi.

(Diperoleh dari CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

Memulai operasi asinkron untuk menutup objek komunikasi dengan batas waktu yang ditentukan.

(Diperoleh dari CommunicationObject)
BeginOpen(AsyncCallback, Object)

Memulai operasi asinkron untuk membuka objek komunikasi.

(Diperoleh dari CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

Memulai operasi asinkron untuk membuka objek komunikasi dalam interval waktu tertentu.

(Diperoleh dari CommunicationObject)
Close()

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

(Diperoleh dari CommunicationObject)
Close(TimeSpan)

Menyebabkan objek komunikasi beralih dari statusnya saat ini ke status tertutup dalam interval waktu tertentu.

(Diperoleh dari CommunicationObject)
CreateChannel()

Membuat saluran dari jenis tertentu ke alamat titik akhir tertentu.

CreateChannel(Binding, EndpointAddress)

Membuat saluran dari jenis tertentu yang digunakan untuk mengirim pesan ke titik akhir layanan yang dikonfigurasi dengan pengikatan tertentu.

CreateChannel(Binding, EndpointAddress, Uri)

Membuat saluran dari jenis tertentu yang digunakan untuk mengirim pesan ke titik akhir layanan pada alamat transportasi tertentu yang dikonfigurasi dengan pengikatan tertentu.

CreateChannel(EndpointAddress)

Membuat saluran yang digunakan untuk mengirim pesan ke layanan di alamat titik akhir tertentu.

CreateChannel(EndpointAddress, Uri)

Membuat saluran yang digunakan untuk mengirim pesan ke layanan di alamat titik akhir tertentu melalui alamat transportasi tertentu.

CreateChannel(String)

Membuat saluran yang digunakan untuk mengirim pesan ke layanan yang titik akhirnya dikonfigurasi dengan cara tertentu.

CreateChannelWithActAsToken(SecurityToken)

Membuat saluran yang digunakan untuk mengirim pesan ke layanan dengan bertindak sebagai token keamanan.

CreateChannelWithActAsToken(SecurityToken, EndpointAddress)

Membuat saluran yang digunakan untuk mengirim pesan ke layanan dengan bertindak sebagai token keamanan pada alamat titik akhir tertentu.

CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri)

Membuat saluran yang digunakan untuk mengirim pesan ke layanan dengan bertindak sebagai token keamanan pada alamat titik akhir tertentu melalui alamat transportasi tertentu.

CreateChannelWithIssuedToken(SecurityToken)

Membuat saluran yang digunakan untuk mengirim pesan ke layanan dengan token keamanan yang dikeluarkan.

CreateChannelWithIssuedToken(SecurityToken, EndpointAddress)

Membuat saluran yang digunakan untuk mengirim pesan ke layanan dengan token keamanan yang dikeluarkan pada alamat titik akhir tertentu.

CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri)

Membuat saluran yang digunakan untuk mengirim pesan ke layanan dengan token keamanan yang dikeluarkan pada alamat titik akhir tertentu melalui alamat transportasi tertentu.

CreateChannelWithOnBehalfOfToken(SecurityToken)

Membuat saluran yang digunakan untuk mengirim pesan ke layanan dengan atas nama token keamanan.

CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress)

Membuat saluran yang digunakan untuk mengirim pesan ke layanan dengan atas nama token keamanan pada alamat titik akhir tertentu.

CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri)

Membuat saluran yang digunakan untuk mengirim pesan ke layanan dengan atas nama token keamanan pada alamat titik akhir tertentu melalui alamat transportasi tertentu.

CreateDescription()

Membuat deskripsi titik akhir layanan.

CreateFactory()

Membangun pabrik saluran untuk titik akhir pabrik saat ini.

(Diperoleh dari ChannelFactory)
EndClose(IAsyncResult)

Menyelesaikan operasi asinkron untuk menutup objek komunikasi.

(Diperoleh dari CommunicationObject)
EndOpen(IAsyncResult)

Menyelesaikan operasi asinkron untuk membuka objek komunikasi.

(Diperoleh dari CommunicationObject)
EnsureOpened()

Membuka pabrik saluran saat ini jika belum dibuka.

(Diperoleh dari ChannelFactory)
Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
Fault()

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

(Diperoleh dari CommunicationObject)
GetCommunicationObjectType()

Mendapatkan jenis objek komunikasi.

(Diperoleh dari CommunicationObject)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetProperty<T>()

Mengembalikan objek jenis yang diminta, jika ada, dari lapisan yang sesuai di tumpukan saluran, atau null jika tidak ada.

(Diperoleh dari ChannelFactory)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
InitializeEndpoint(Binding, EndpointAddress)

Menginisialisasi titik akhir layanan pabrik saluran dengan pengikatan dan alamat tertentu.

(Diperoleh dari ChannelFactory)
InitializeEndpoint(EndpointAddress)

Pabrik yang membuat saluran dari berbagai jenis yang digunakan oleh klien untuk mengirim pesan ke berbagai titik akhir layanan yang dikonfigurasi.

(Diperoleh dari ChannelFactory)
InitializeEndpoint(ServiceEndpoint)

Menginisialisasi titik akhir layanan pabrik saluran dengan titik akhir tertentu.

(Diperoleh dari ChannelFactory)
InitializeEndpoint(String, EndpointAddress)

Menginisialisasi titik akhir layanan pabrik saluran dengan alamat dan konfigurasi tertentu.

(Diperoleh dari ChannelFactory)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
OnAbort()

Menghentikan pabrik saluran dalam dari pabrik saluran saat ini.

(Diperoleh dari ChannelFactory)
OnBeginClose(TimeSpan, AsyncCallback, Object)

Memulai operasi penutupan asinkron pada pabrik saluran dalam dari pabrik saluran saat ini yang memiliki objek status yang terkait dengannya.

(Diperoleh dari ChannelFactory)
OnBeginOpen(TimeSpan, AsyncCallback, Object)

Memulai operasi buka asinkron pada pabrik saluran dalam dari pabrik saluran saat ini yang memiliki objek status yang terkait dengannya.

(Diperoleh dari ChannelFactory)
OnClose(TimeSpan)

Panggilan ditutup di pabrik saluran dalam dengan waktu habis yang ditentukan untuk penyelesaian operasi.

(Diperoleh dari ChannelFactory)
OnCloseAsync(TimeSpan)

Pabrik yang membuat saluran dari berbagai jenis yang digunakan oleh klien untuk mengirim pesan ke berbagai titik akhir layanan yang dikonfigurasi.

(Diperoleh dari ChannelFactory)
OnClosed()

Dipanggil selama transisi objek komunikasi ke status penutupan.

(Diperoleh dari CommunicationObject)
OnClosing()

Dipanggil selama transisi objek komunikasi ke status penutupan.

(Diperoleh dari CommunicationObject)
OnEndClose(IAsyncResult)

Menyelesaikan operasi penutupan asinkron pada pabrik saluran dalam dari pabrik saluran saat ini.

(Diperoleh dari ChannelFactory)
OnEndOpen(IAsyncResult)

Menyelesaikan operasi buka asinkron di pabrik saluran dalam pabrik saluran saat ini.

(Diperoleh dari ChannelFactory)
OnFaulted()

Menyisipkan pemrosesan pada objek komunikasi setelah transisi ke status rusak karena pemanggilan operasi kesalahan sinkron.

(Diperoleh dari CommunicationObject)
OnOpen(TimeSpan)

Panggilan terbuka di pabrik saluran dalam dari pabrik saluran saat ini dengan batas waktu tertentu untuk penyelesaian operasi.

(Diperoleh dari ChannelFactory)
OnOpenAsync(TimeSpan)

Pabrik yang membuat saluran dari berbagai jenis yang digunakan oleh klien untuk mengirim pesan ke berbagai titik akhir layanan yang dikonfigurasi.

(Diperoleh dari ChannelFactory)
OnOpened()

Menginisialisasi salinan ClientCredentials objek baca-saja untuk pabrik saluran.

(Diperoleh dari ChannelFactory)
OnOpening()

Membangun pabrik saluran dalam untuk saluran saat ini.

(Diperoleh dari ChannelFactory)
Open()

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

(Diperoleh dari CommunicationObject)
Open(TimeSpan)

Menyebabkan objek komunikasi beralih dari status yang dibuat ke status dibuka dalam interval waktu tertentu.

(Diperoleh dari CommunicationObject)
ThrowIfDisposed()

Melempar pengecualian jika objek komunikasi dibuang.

(Diperoleh dari CommunicationObject)
ThrowIfDisposedOrImmutable()

Memberikan pengecualian jika objek State komunikasi properti tidak diatur ke status Created .

(Diperoleh dari CommunicationObject)
ThrowIfDisposedOrNotOpen()

Melempar pengecualian jika objek komunikasi tidak dalam status Opened .

(Diperoleh dari CommunicationObject)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Acara

Closed

Terjadi ketika objek komunikasi beralih ke status tertutup.

(Diperoleh dari CommunicationObject)
Closing

Terjadi ketika objek komunikasi beralih ke status penutupan.

(Diperoleh dari CommunicationObject)
Faulted

Terjadi ketika objek komunikasi beralih ke status rusak.

(Diperoleh dari CommunicationObject)
Opened

Terjadi ketika objek komunikasi beralih ke status terbuka.

(Diperoleh dari CommunicationObject)
Opening

Terjadi ketika objek komunikasi beralih ke status pembukaan.

(Diperoleh dari CommunicationObject)

Implementasi Antarmuka Eksplisit

IAsyncCommunicationObject.CloseAsync(TimeSpan)

Pabrik yang membuat saluran dari berbagai jenis yang digunakan oleh klien untuk mengirim pesan ke berbagai titik akhir layanan yang dikonfigurasi.

(Diperoleh dari CommunicationObject)
IAsyncCommunicationObject.OpenAsync(TimeSpan)

Pabrik yang membuat saluran dari berbagai jenis yang digunakan oleh klien untuk mengirim pesan ke berbagai titik akhir layanan yang dikonfigurasi.

(Diperoleh dari CommunicationObject)
IAsyncDisposable.DisposeAsync()

Pabrik yang membuat saluran dari berbagai jenis yang digunakan oleh klien untuk mengirim pesan ke berbagai titik akhir layanan yang dikonfigurasi.

(Diperoleh dari ChannelFactory)
IDisposable.Dispose()

Menutup pabrik saluran saat ini.

(Diperoleh dari ChannelFactory)

Metode Ekstensi

CloseHelperAsync(ICommunicationObject, TimeSpan)

Pabrik yang membuat saluran dari berbagai jenis yang digunakan oleh klien untuk mengirim pesan ke berbagai titik akhir layanan yang dikonfigurasi.

OpenHelperAsync(ICommunicationObject, TimeSpan)

Pabrik yang membuat saluran dari berbagai jenis yang digunakan oleh klien untuk mengirim pesan ke berbagai titik akhir layanan yang dikonfigurasi.

GetInternalCloseTimeout(CommunicationObject)

Pabrik yang membuat saluran dari berbagai jenis yang digunakan oleh klien untuk mengirim pesan ke berbagai titik akhir layanan yang dikonfigurasi.

ConfigureAwait(IAsyncDisposable, Boolean)

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

Berlaku untuk

Keamanan Thread

Jenis ini aman untuk utas.