Bagikan melalui


Perilaku Layanan Default

Sampel default menunjukkan bagaimana pengaturan perilaku layanan dapat dikonfigurasi. Sampel didasarkan pada Memulai, yang mengimplementasikan kontrak layanan ICalculator. Sampel ini secara eksplisit menentukan perilaku layanan dan perilaku operasi menggunakan atribut ServiceBehaviorAttribute dan OperationBehaviorAttribute. Anda dapat mengonfigurasi perilaku dalam file konfigurasi atau secara imperatif dalam kode (seperti yang ditunjukkan sampel ini).

Dalam sampel ini, klien adalah aplikasi konsol (.exe) dan layanan di-hosting oleh Layanan Informasi Internet (IIS).

Catatan

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

Kelas layanan menentukan perilaku dengan ServiceBehaviorAttribute dan OperationBehaviorAttribute seperti yang ditampilkan dalam sampel kode berikut. Semua nilai yang ditentukan adalah default.

[ServiceBehavior(
    AutomaticSessionShutdown=true,
    ConcurrencyMode=ConcurrencyMode.Single,
    InstanceContextMode=InstanceContextMode.PerSession,
    IncludeExceptionDetailInFaults=false,
    UseSynchronizationContext=true,
    ValidateMustUnderstand=true)]
public class CalculatorService : ICalculator
{
    [OperationBehavior(
        TransactionAutoComplete=true,
        TransactionScopeRequired=false,
        Impersonation=ImpersonationOption.NotAllowed)]
    public double Add(double n1, double n2)
    {
        System.Threading.Thread.Sleep(1600);
        return n1 + n2;
    }
    ...
}

Perilaku layanan ditentukan dengan atribut ServiceBehaviorAttribute. Tabel berikut menjelaskan beberapa perilaku ini.

Perilaku layanan Deskripsi
AutomaticSessionShutdown Secara otomatis menutup sesi atas permintaan klien.
ConcurrencyMode Menentukan mode konkurensi untuk setiap instans layanan.
InstanceContextMode Menentukan mode konteks instans.
UseSynchronizationContext Menentukan apakah akan menggunakan konteks sinkronisasi yang disediakan, jika salah satu ditetapkan. Gunakan ini ketika Anda ingin mengontrol apakah akan menggunakan WindowsFormsSynchronizationContext di aplikasi Formulir Windows.
IncludeExceptionDetailInFaults Menentukan apakah pengecualian eksekusi umum yang tidak tertangani akan dikonversi menjadi Fault<string> dan dikirim sebagai pesan kegagalan.
TransactionIsolationLevel Menentukan tingkat isolasi untuk transaksi.
ValidateMustUnderstand Menentukan apakah header pesan yang tidak terduga menyebabkan kondisi kesalahan.

Perilaku operasi ditentukan menggunakan atribut OperationBehaviorAttribute. Tabel berikut menjelaskan beberapa perilaku ini.

Perilaku Operasi Deskripsi
TransactionAutoComplete Menentukan apakah penyelesaian operasi layanan melakukan transaksi saat ini.
TransactionScopeRequired Menentukan apakah operasi layanan mendaftar dalam transaksi yang dialirkan klien.
Impersonation Menentukan apakah operasi layanan meniru identitas pemanggil.
ReleaseInstanceMode Menentukan apakah instans layanan didaur ulang di awal atau akhir panggilan operasi layanan.

Saat Anda menjalankan sampel, permintaan dan respons operasi ditampilkan di jendela konsol klien. Penundaan antara panggilan adalah hasil dari panggilan ke System.Threading.Thread.Sleep() yang dibuat dalam operasi layanan. Sisa sampel perilaku menjelaskan perilaku ini secara lebih detail. Tekan ENTER di jendela klien untuk mematikan komputer 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.

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