IContractBehavior Antarmuka
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menerapkan metode yang dapat digunakan untuk memperpanjang perilaku run-time untuk kontrak baik dalam layanan atau aplikasi klien.
public interface class IContractBehavior
public interface IContractBehavior
type IContractBehavior = interface
Public Interface IContractBehavior
- Turunan
Contoh
Contoh kode berikut mengasumsikan implementasi kustom IInstanceProvider yang disebut ObjectProviderBehavior yang menyediakan perilaku "singleton"; selalu mengembalikan instans layanan yang sama dan tidak mendaur ulangnya.
Untuk menyisipkan kustomisasi penyedia instans, contoh menunjukkan cara mengimplementasikan atribut kustom (SingletonBehaviorAttribute) yang menerapkan untuk menyisipkan penyedia instans IContractBehavior layanan kustom. Ini juga mengimplementasikan IContractBehaviorAttribute, yang mengikat penggunaannya ke ISampleService kontrak.
public class SingletonBehaviorAttribute : Attribute, IContractBehaviorAttribute, IContractBehavior
{
#region IContractBehaviorAttribute Members
public Type TargetContract
{
get { return typeof(ISampleService); }
}
#endregion
#region IContractBehavior Members
public void AddBindingParameters(ContractDescription description, ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection parameters)
{
return;
}
public void ApplyClientBehavior(ContractDescription description, ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
return;
}
public void ApplyDispatchBehavior(ContractDescription description, ServiceEndpoint endpoint, DispatchRuntime dispatch)
{
dispatch.InstanceProvider = new ObjectProviderBehavior("Custom ObjectProviderBehavior constructor.");
}
public void Validate(ContractDescription description, ServiceEndpoint endpoint)
{
return;
}
#endregion
}
Public Class SingletonBehaviorAttribute
Inherits Attribute
Implements IContractBehaviorAttribute, IContractBehavior
#Region "IContractBehaviorAttribute Members"
Public ReadOnly Property TargetContract() As Type Implements IContractBehaviorAttribute.TargetContract
Get
Return GetType(ISampleService)
End Get
End Property
#End Region
#Region "IContractBehavior Members"
Public Sub AddBindingParameters(ByVal description As ContractDescription, ByVal endpoint As ServiceEndpoint, ByVal parameters As System.ServiceModel.Channels.BindingParameterCollection) Implements IContractBehavior.AddBindingParameters
Return
End Sub
Public Sub ApplyClientBehavior(ByVal description As ContractDescription, ByVal endpoint As ServiceEndpoint, ByVal clientRuntime As ClientRuntime) Implements IContractBehavior.ApplyClientBehavior
Return
End Sub
Public Sub ApplyDispatchBehavior(ByVal description As ContractDescription, ByVal endpoint As ServiceEndpoint, ByVal dispatch As DispatchRuntime) Implements IContractBehavior.ApplyDispatchBehavior
dispatch.InstanceProvider = New ObjectProviderBehavior("Custom ObjectProviderBehavior constructor.")
End Sub
Public Sub Validate(ByVal description As ContractDescription, ByVal endpoint As ServiceEndpoint) Implements IContractBehavior.Validate
Return
End Sub
#End Region
End Class
Keterangan
Terapkan IContractBehavior antarmuka untuk memodifikasi, memeriksa, atau memperluas beberapa aspek eksekusi di seluruh kontrak di tingkat aplikasi. Tidak seperti IServiceBehavior objek dan IEndpointBehavior , IContractBehavior objek tidak dapat ditambahkan ke runtime menggunakan file konfigurasi aplikasi; objek hanya dapat ditambahkan secara terprogram atau menggunakan atribut.
Untuk informasi selengkapnya tentang memilih antara perilaku layanan, titik akhir, dan kontrak, lihat Mengonfigurasi dan Memperpanjang Runtime dengan Perilaku.
AddBindingParameters Gunakan metode untuk menyediakan elemen pengikatan dengan data kustom untuk mendukung perilaku.
ApplyClientBehavior Gunakan metode untuk memodifikasi, memeriksa, atau menyisipkan ekstensi ke kontrak dalam aplikasi klien.
ApplyDispatchBehavior Gunakan metode untuk memodifikasi, memeriksa, atau menyisipkan ekstensi ke kontrak dalam aplikasi layanan.
Validate Gunakan metode untuk memastikan bahwa kontrak dapat mendukung fitur tertentu.
IContractBehavior objek dapat menggunakan salah satu metode ini, tetapi seringkali hanya satu yang penting; dalam kasus seperti itu, metode yang tidak digunakan dapat kembali tanpa nilai apa pun.
Nota
IContractBehavior Semua metode lolos System.ServiceModel.Description.ContractDescription dan System.ServiceModel.Description.ServiceEndpoint sebagai parameter. Parameter ini untuk pemeriksaan; jika Anda mengubah objek, perilaku eksekusi tidak ditentukan.
IContractBehavior jenis dapat digunakan pada layanan atau klien, atau keduanya. Untuk melakukan tugas penyesuaian pada layanan, IContractBehavior objek harus ditambahkan ke Behaviors properti sebelum konstruksi runtime layanan, yang terjadi ketika ICommunicationObject.Open metode dipanggil pada System.ServiceModel.ServiceHost objek. Ada dua cara untuk melakukan ini.
Metode pertama adalah menambahkan perilaku kontrak kustom secara terprogram ke Behaviors properti sebelum titik ketika ICommunicationObject.Open metode dipanggil pada System.ServiceModel.ServiceHost objek. Saat diterapkan dengan cara ini, perilaku diterapkan untuk semua pesan yang mengalir melalui kontrak tersebut pada titik akhir apa pun.
Nota
Perilaku diterapkan ke semua kontrak dengan jenis yang sama. Misalnya, jika Anda secara terprogram menambahkan jenis kontrak yang sama ke lebih dari satu titik akhir, perilaku memodifikasi semua titik akhir yang merujuk ke objek kontrak yang sama.
Metode kedua adalah membuat atribut kustom yang mengimplementasikan IContractBehavior dan menerapkannya ke:
Antarmuka kontrak. Dalam hal ini, perilaku diterapkan ke semua kontrak jenis tersebut di titik akhir apa pun.
Kelas layanan. Dalam hal ini, perilaku diterapkan ke semua titik akhir terlepas dari kontrak.
Kelas panggilan balik. Dalam hal ini, perilaku diterapkan ke titik akhir klien dupleks.
Perilaku pendekatan kedua sedikit bervariasi jika atribut kustom juga mengimplementasikan System.ServiceModel.Description.IContractBehaviorAttribute. Dalam hal ini, perilakunya adalah sebagai berikut:
Antarmuka kontrak. Dalam hal ini, perilaku diterapkan ke semua kontrak jenis tersebut di titik akhir apa pun dan Windows Communication Foundation (WCF) mengabaikan nilai IContractBehaviorAttribute.TargetContract properti.
Kelas layanan. Dalam kasus ini, perilaku hanya diterapkan pada titik akhir yang kontraknya adalah nilai dari properti IContractBehaviorAttribute.TargetContract.
Kelas panggilan balik. Dalam kasus ini, perilaku diterapkan pada endpoint klien dupleks dan WCF mengabaikan nilai properti IContractBehaviorAttribute.TargetContract.
Untuk melakukan tugas penyesuaian pada klien yang dimaksudkannya, IContractBehavior objek harus ditambahkan ke Behaviors properti sebelum konstruksi runtime klien, yang terjadi ketika ChannelFactory<TChannel>.CreateChannel dipanggil. Ada dua cara untuk melakukan ini:
Tambahkan perilaku kontrak kustom secara terprogram ke Behaviors properti sebelum titik ketika dipanggil ChannelFactory<TChannel>.CreateChannel .
Buat atribut kustom yang juga mengimplementasikan IContractBehavior.
Untuk informasi selengkapnya tentang menambahkan IContractBehavior jenis secara terprogram ke aplikasi klien atau layanan, lihat Mengonfigurasi dan Memperluas Runtime dengan Perilaku.
Metode
| Nama | Deskripsi |
|---|---|
| AddBindingParameters(ContractDescription, ServiceEndpoint, BindingParameterCollection) |
Mengonfigurasi elemen pengikatan apa pun untuk mendukung perilaku kontrak. |
| ApplyClientBehavior(ContractDescription, ServiceEndpoint, ClientRuntime) |
Menerapkan modifikasi atau ekstensi klien di seluruh kontrak. |
| ApplyDispatchBehavior(ContractDescription, ServiceEndpoint, DispatchRuntime) |
Menerapkan modifikasi atau ekstensi klien di seluruh kontrak. |
| Validate(ContractDescription, ServiceEndpoint) |
Terapkan untuk mengonfirmasi bahwa kontrak dan titik akhir dapat mendukung perilaku kontrak. |