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
Pastikan Anda telah melakukan Prosedur Penyiapan Satu Kali untuk Sampel Windows Communication Foundation.
Untuk membangun solusi edisi C# atau Visual Basic .NET, ikuti petunjuknya di Membangun Sampel WCF.
Untuk menjalankan sampel dalam konfigurasi satu atau lintas komputer, ikuti instruksi pada Menjalankan Sampel WCF.