Bagikan melalui


Cara: Menyesuaikan Pengikatan yang Disediakan Sistem

Windows Communication Foundation (WCF) meliputi beberapa pengikatan yang disediakan sistem yang memungkinkan Anda mengonfigurasi beberapa properti elemen pengikatan yang mendasar, tetapi tidak semua properti. Topik ini menunjukkan cara mengatur properti pada elemen pengikatan untuk membuat pengikatan kustom.

Untuk informasi selengkapnya tentang cara membuat dan mengonfigurasi langsung elemen pengikatan tanpa menggunakan pengikatan yang disediakan sistem, lihat Pengikatan Kustom.

Untuk mengetahui informasi selengkapnya tentang cara membuat dan memperluas pengikatan kustom, lihat Memperluas Pengikatan.

Dalam WCF semua pengikatan terdiri dari elemen pengikatan. Setiap elemen pengikatan adalah turunan dari kelas BindingElement. Pengikatan yang disediakan sistem seperti BasicHttpBinding membuat dan mengonfigurasi elemen pengikatannya sendiri. Topik ini menunjukkan kepada Anda cara mengakses dan mengubah properti elemen pengikatan berikut, yang tidak secara langsung terekspos pada pengikatan; khususnya, kelas BasicHttpBinding.

Elemen pengikatan individu disimpan dalam koleksi yang diwakili oleh kelas BindingElementCollection dan ditambahkan dengan urutan berikut: Alur Transaksi, Sesi Andal, Keamanan, Dupleks Komposit, Satu arah, Keamanan Aliran, Pengodean Pesan, dan Transportasi. Perhatikan bahwa tidak semua elemen pengikatan yang tercantum diperlukan dalam setiap pengikatan. Elemen pengikatan yang ditentukan pengguna juga dapat muncul dalam koleksi elemen pengikatan ini dan harus muncul dalam urutan yang sama seperti yang dijelaskan sebelumnya. Misalnya, transportasi yang ditentukan pengguna harus menjadi elemen terakhir dari koleksi elemen pengikatan.

Kelas BasicHttpBinding berisi tiga elemen pengikatan:

  1. Elemen pengikatan keamanan opsional, baik kelas AsymmetricSecurityBindingElement yang digunakan dengan transportasi HTTP (keamanan tingkat pesan) atau kelas TransportSecurityBindingElement, yang digunakan ketika lapisan transportasi memberikan keamanan, dalam hal ini transportasi HTTPS digunakan.

  2. Elemen pengikatan pengenkode pesan yang diperlukan, baik TextMessageEncodingBindingElement atau MtomMessageEncodingBindingElement.

  3. Elemen pengikatan transportasi yang diperlukan, baik HttpTransportBindingElement atau HttpsTransportBindingElement.

Dalam contoh ini kita membuat instans pengikatan, menghasilkan pengikatan kustom darinya, memeriksa elemen pengikatan dalam pengikatan kustom, dan saat menemukan elemen pengikatan HTTP, kita mengatur properti KeepAliveEnabled-nya ke false. Properti KeepAliveEnabled tidak diekspos langsung pada BasicHttpBinding, jadi kita harus membuat pengikatan kustom untuk menavigasi ke elemen pengikatan dan mengatur properti ini.

Untuk mengubah pengikatan yang disediakan sistem

  1. Buat instans kelas BasicHttpBinding dan atur mode keamanannya ke tingkat pesan.

    //  Create an instance of the T:System.ServiceModel.BasicHttpBinding
    //  class and set its security mode to message-level security.
    BasicHttpBinding binding = new BasicHttpBinding();
    binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;
    binding.Security.Mode = BasicHttpSecurityMode.Message;
    
    '  Create an instance of the T:System.ServiceModel.BasicHttpBinding 
    '  class and set its security mode to message-level security.
    Dim binding As New BasicHttpBinding()
    With binding.Security
        .Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate
        .Mode = BasicHttpSecurityMode.Message
    End With
    
  2. Buat pengikatan kustom dari pengikatan dan buat kelas BindingElementCollection dari salah satu properti pengikatan kustom.

    //  Create a custom binding from the binding
    CustomBinding cb = new CustomBinding(binding);
    //  Get the BindingElementCollection from this custom binding
    BindingElementCollection bec = cb.Elements();
    
    '  Create a custom binding from the binding 
    Dim cb As New CustomBinding(binding)
    '  Get the BindingElementCollection from this custom binding 
    Dim bec = cb.Elements
    
  3. Ulangi melalui kelas BindingElementCollection, dan saat Anda menemukan kelas HttpTransportBindingElement, atur properti KeepAliveEnabled-nya ke false.

    //  Loop through the collection, and when you find the HTTP binding element
    //  set its KeepAliveEnabled property to false
    foreach (BindingElement be in bec)
    {
        Type thisType = be.GetType();
        Console.WriteLine(thisType);
        if (be is HttpTransportBindingElement)
        {
            HttpTransportBindingElement httpElement = (HttpTransportBindingElement)be;
            Console.WriteLine("\tBefore: HttpTransportBindingElement.KeepAliveEnabled = {0}", httpElement.KeepAliveEnabled);
            httpElement.KeepAliveEnabled = false;
            Console.WriteLine("\tAfter:  HttpTransportBindingElement.KeepAliveEnabled = {0}", httpElement.KeepAliveEnabled);
        }
    }
    
    '  Loop through the collection, and when you find the HTTP binding element
    '  set its KeepAliveEnabled property to false
    For Each be In bec
        Dim thisType = be.GetType()
        Console.WriteLine(thisType)
        If TypeOf be Is HttpTransportBindingElement Then
            Dim httpElement As HttpTransportBindingElement = CType(be, HttpTransportBindingElement)
            Console.WriteLine(Constants.vbTab & "Before: HttpTransportBindingElement.KeepAliveEnabled = {0}", httpElement.KeepAliveEnabled)
            httpElement.KeepAliveEnabled = False
            Console.WriteLine(vbTab & "After:  HttpTransportBindingElement.KeepAliveEnabled = {0}", httpElement.KeepAliveEnabled)
        End If
    Next be
    

Lihat juga