Bagikan melalui


Pabrik Saluran

Sampel ChannelFactory menunjukkan bagaimana aplikasi klien dapat membuat saluran dengan kelas ChannelFactory tersebut dan bukan yang dihasilkan oleh klien. Sampel ini didasarkan pada Memulai yang mengimplementasikan layanan kalkulator.

Catatan

Prosedur penyiapan dan petunjuk pembuatan untuk sampel ini terdapat di akhir topik ini.

Sampel ini menggunakan kelas ChannelFactory<TChannel> untuk membuat saluran ke titik akhir layanan. Biasanya, untuk membuat saluran ke titik akhir layanan, Anda menghasilkan jenis klien dengan Alat Utilitas Metadata ServiceModel (Svcutil.exe) dan membuat instans dari jenis yang dihasilkan. Anda juga dapat membuat saluran dengan menggunakan kelas ChannelFactory<TChannel>, seperti yang ditunjukkan dalam sampel ini. Layanan yang dibuat oleh kode sampel berikut identik dengan layanan di Memulai.

EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc");
WSHttpBinding binding = new WSHttpBinding();
ChannelFactory<ICalculator> factory = new
                    ChannelFactory<ICalculator>(binding, address);
ICalculator channel = factory.CreateChannel();

Penting

Jika Anda menjalankan sampel ini dalam skenario lintas mesin, Anda harus mengganti "localhost" dalam kode sebelumnya dengan nama mesin yang sepenuhnya memenuhi syarat di mana mesin tersebut menjalankan layanan. Sampel ini tidak menggunakan konfigurasi untuk mengatur alamat titik akhir, jadi ini harus dilakukan dalam kode.

Setelah saluran dibuat, operasi layanan dapat dipanggil sama seperti klien yang dihasilkan.

// Call the Add service operation.
double value1 = 100.00D;
double value2 = 15.99D;
double result = channel.Add(value1, value2);
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);

Untuk menutup saluran, pertama-tama saluran harus ditransmisikan ke antarmuka IClientChannel. Hal ini harus dilakukan karena saluran sebagaimana yang dihasilkan akan dideklarasikan dalam aplikasi klien menggunakan antarmuka ICalculator, yang memiliki metode seperti Add dan Subtract tetapi bukan Close. Metode Close berasal dari antarmuka ICommunicationObject.

// Close the channel.
 ((IClientChannel)client).Close();

Saat Anda menjalankan sampel, permintaan dan respons operasi ditampilkan di jendela konsol klien. Tekan ENTER di jendela klien untuk mematikan aplikasi klien.

Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714

Press <ENTER> to terminate client.

Untuk menyiapkan, membangun, dan menjalankan sampel

  1. Pastikan Anda telah melakukan Prosedur Penyiapan Satu Kali untuk Sampel Windows Communication Foundation.

  2. Untuk membangun solusi edisi C# atau Visual Basic .NET, ikuti petunjuknya di Membangun Sampel WCF. Perhatikan bahwa sampel ini tidak mengaktifkan penerbitan metadata. Anda harus terlebih dahulu mengaktifkan penerbitan metadata untuk sampel ini guna meregenerasi jenis klien.

  3. Untuk menjalankan sampel dalam konfigurasi satu atau lintas komputer, ikuti instruksi pada Menjalankan Sampel WCF.

Untuk menjalankan mesin lintas sampel

Ganti "localhost" dalam kode berikut dengan nama mesin yang sepenuhnya memenuhi syarat di mana mesin tersebut menjalankan layanan.

EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc");