Perilaku Layanan Bawaan

Sampel Default menunjukkan bagaimana pengaturan perilaku layanan dapat dikonfigurasi. Sampel ini didasarkan pada panduan Memulai, yang mengimplementasikan ICalculator kontrak layanan. Sampel ini secara eksplisit mendefinisikan perilaku layanan dan perilaku operasi menggunakan ServiceBehaviorAttribute atribut 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 dihosting oleh Internet Information Services (IIS).

Nota

Prosedur penyiapan dan instruksi build untuk sampel ini terletak di akhir topik ini.

Kelas layanan menentukan perilaku dengan ServiceBehaviorAttribute dan OperationBehaviorAttribute seperti yang ditunjukkan 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 ServiceBehaviorAttribute atribut . Tabel berikut ini menjelaskan beberapa perilaku ini.

Perilaku layanan Deskripsi
AutomaticSessionShutdown Secara otomatis mematikan 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 ditetapkan. Gunakan ini saat Anda ingin mengontrol apakah akan menggunakan WindowsFormsSynchronizationContext di aplikasi Windows Forms.
IncludeExceptionDetailInFaults Menentukan apakah pengecualian eksekusi umum yang tidak tertangani akan dikonversi menjadi Fault<string> dan dikirim sebagai pesan kesalahan.
TransactionIsolationLevel Menentukan tingkat isolasi untuk transaksi.
ValidateMustUnderstand Menentukan apakah header pesan yang tidak terduga menyebabkan kondisi kesalahan.

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

Perilaku Operasi Deskripsi
TransactionAutoComplete Menentukan apakah penyelesaian operasi layanan mengonfirmasi transaksi saat ini.
TransactionScopeRequired Menentukan apakah operasi layanan mengikuti transaksi yang dikendalikan oleh klien.
Impersonation Menentukan apakah operasi layanan meniru identitas penelepon.
ReleaseInstanceMode Menentukan apakah instans layanan didaur ulang pada 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 dilakukan dalam operasi layanan. Sampel perilaku lainnya menjelaskan perilaku ini secara lebih rinci. Tekan ENTER di jendela klien untuk mematikan 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, mengompilasi, dan menjalankan sampel

  1. Pastikan Anda telah melakukan Prosedur Penyiapan One-Time untuk Sampel Windows Communication Foundation.

  2. Untuk membangun solusi edisi C# atau Visual Basic .NET, ikuti instruksi di Membangun Sampel Windows Communication Foundation.

  3. Untuk menjalankan sampel dalam konfigurasi satu atau lintas komputer, ikuti instruksi di Menjalankan Sampel Windows Communication Foundation.