IContractBehavior.ApplyDispatchBehavior Metode
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 modifikasi atau ekstensi klien di seluruh kontrak.
public:
void ApplyDispatchBehavior(System::ServiceModel::Description::ContractDescription ^ contractDescription, System::ServiceModel::Description::ServiceEndpoint ^ endpoint, System::ServiceModel::Dispatcher::DispatchRuntime ^ dispatchRuntime);
public void ApplyDispatchBehavior(System.ServiceModel.Description.ContractDescription contractDescription, System.ServiceModel.Description.ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.DispatchRuntime dispatchRuntime);
abstract member ApplyDispatchBehavior : System.ServiceModel.Description.ContractDescription * System.ServiceModel.Description.ServiceEndpoint * System.ServiceModel.Dispatcher.DispatchRuntime -> unit
Public Sub ApplyDispatchBehavior (contractDescription As ContractDescription, endpoint As ServiceEndpoint, dispatchRuntime As DispatchRuntime)
Parameter
- contractDescription
- ContractDescription
Deskripsi kontrak yang akan dimodifikasi.
- endpoint
- ServiceEndpoint
Titik akhir yang mengekspos kontrak.
- dispatchRuntime
- DispatchRuntime
Runtime pengiriman yang mengontrol eksekusi layanan.
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 ApplyDispatchBehavior untuk melihat, memodifikasi, atau menambahkan ekstensi kustom ke runtime layanan di semua pesan dalam kontrak tertentu atau untuk satu operasi tertentu dalam kontrak tersebut. Untuk detail tentang kustomisasi apa yang dapat Anda lakukan dalam aplikasi layanan, lihat DispatchRuntime dan DispatchOperation.
Metode ini ApplyDispatchBehavior dapat melemparkan NotImplementedException pengecualian jika perilaku hanya ditujukan untuk digunakan dalam aplikasi klien.
Metode ini dipanggil sekali untuk setiap titik akhir yang menggunakan kontrak layanan yang ditentukan.
Perhatikan bahwa mungkin ada dua operasi dengan nama yang sama dalam deskripsi (satu di setiap arah), jadi jika Anda harus melakukan iterasi melalui operasi di mana kontrak adalah kontrak dupleks, Anda harus menghubungkan arah pesan antara titik DispatchRuntime akhir dan yang dikembalikan oleh CallbackClientRuntime properti.
Selain itu, karena perilaku lain mungkin telah menambahkan atau menghapus beberapa operasi dari runtime, tidak ada jaminan bahwa ada jumlah operasi yang sama dalam deskripsi karena ada DispatchOperation objek dalam Operations properti.