Bagikan melalui


IContractBehavior.ApplyDispatchBehavior Metode

Definisi

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.

Berlaku untuk