Bagikan melalui


<reliableSession>

Menentukan pengaturan untuk Olahpesan WS-Reliable. Ketika elemen ini ditambahkan ke pengikatan kustom, saluran yang dihasilkan dapat mendukung jaminan pengiriman tepat sekali.

<configuration>
  <system.serviceModel>
    <bindings>
      <customBinding>
        <binding>
          <reliableSession>

Sintaks

<reliableSession acknowledgementInterval="TimeSpan"
                 flowControlEnabled="Boolean"
                 inactivityTimeout="TimeSpan"
                 maxPendingChannels="Integer"
                 maxRetryCount="Integer"
                 maxTransferWindowSize="Integer"
                 reliableMessagingVersion="Default/WSReliableMessagingFebruary2005/WSReliableMessaging11"
                 ordered="Boolean" />

Atribut dan Elemen

Bagian berikut menjelaskan atribut, elemen turunan, dan elemen induk.

Atribut

Atribut Deskripsi
acknowledgementInterval TimeSpan yang berisi interval waktu maksimum saluran akan menunggu untuk mengirim pengakuan untuk pesan yang diterima hingga saat itu. Defaultnya adalah 00:00:0.2.
flowControlEnabled Nilai Boolean yang menunjukkan apakah kontrol alur tingkat lanjut, implementasi kontrol alur khusus Microsoft untuk olahpesan WS-Reliable, diaktifkan. Defaultnya adalah true.
inactivityTimeout TimeSpan yang menentukan durasi maksimum bahwa saluran akan memungkinkan pihak komunikasi lain untuk tidak mengirim pesan apa pun, sebelum menyalahkan saluran. Defaultnya adalah 00:10:00.

Aktivitas di saluran didefinisikan sebagai menerima pesan aplikasi atau infrastruktur. Properti ini mengontrol jumlah waktu maksimum untuk menjaga sesi tidak aktif tetap hidup. Jika waktu yang lebih lama berlalu tanpa aktivitas, sesi dibatalkan oleh infrastruktur dan kesalahan saluran. Catatan: Aplikasi tidak perlu mengirim pesan secara berkala untuk menjaga koneksi tetap hidup.
maxPendingChannels Bilangan bulat yang menentukan jumlah saluran maksimum yang dapat diterima. Nilai ini harus antara 1 hingga 16384 inklusif. Default-nya adalah 4.

Saluran tertunda ketika mereka menunggu untuk diterima. Setelah batas tersebut tercapai, tidak ada saluran yang dibuat. Sebaliknya, mereka dimasukkan ke dalam mode tertunda sampai nomor ini turun (dengan menerima saluran yang tertunda). Ini merupakan batas per pabrik.

Ketika ambang tercapai dan aplikasi jarak jauh mencoba membuat sesi andal baru, permintaan ditolak dan operasi terbuka yang mendorong kesalahan ini. Batas ini tidak berlaku untuk jumlah saluran keluar yang tertunda.
maxRetryCount Bilangan bulat yang menentukan berapa kali saluran yang dapat diandalkan mencoba mengirimkan ulang pesan yang belum diterima pengakuannya, dengan memanggil Kirim pada saluran yang mendasarnya.

Nilai ini harus lebih besar dari nol. Defaultnya adalah 8.

Nilai ini harus berupa bilangan bulat yang lebih besar dari nol. Jika pengakuan tidak diterima setelah transmisi ulang terakhir, kesalahan akan rusak.

Pesan dianggap akan ditransfer jika pengirimannya di penerima telah diakui oleh penerima.

Jika pengakuan belum diterima dalam waktu tertentu untuk pesan yang telah dikirimkan, infrastruktur secara otomatis mengirimkan ulang pesan. Infrastruktur mencoba mengirim ulang pesan paling lama berapa kali ditentukan oleh properti ini. Jika pengakuan tidak diterima setelah transmisi ulang terakhir, kesalahan akan rusak.

Infrastruktur ini menggunakan algoritma back-off eksponensial untuk menentukan kapan harus mengirimkan ulang, berdasarkan waktu pulang-pergi rata-rata yang dihitung. Waktu awalnya dimulai pada 1 detik sebelum transmisi ulang dan menggandakan penundaan dengan setiap upaya, yang menghasilkan sekitar 8,5 menit berlalu antara upaya transmisi pertama dan upaya transmisi ulang terakhir. Waktu untuk upaya transmisi ulang pertama disesuaikan sesuai dengan waktu pulang pergi yang dihitung dan peregangan waktu yang dihasilkan yang diambil upaya tersebut bervariasi. Ini memungkinkan waktu transmisi ulang untuk beradaptasi secara dinamis dengan berbagai kondisi jaringan.
maxTransferWindowSize Bilangan bulat yang menentukan ukuran maksimum buffer. Nilai yang valid adalah dari 1 hingga 4096 inklusif.

Pada klien, atribut ini mendefinisikan ukuran maksimum buffer yang digunakan oleh saluran yang dapat diandalkan untuk menyimpan pesan yang belum diakui oleh penerima. Unit kuota adalah pesan. Jika buffer penuh, operasi SEND lebih lanjut akan diblokir.

Pada penerima, atribut ini menentukan ukuran maksimum buffer yang digunakan oleh saluran untuk menyimpan pesan masuk yang belum dikirim ke aplikasi. Jika buffer penuh, pesan lebih lanjut diam-diam dihilangkan oleh penerima dan memerlukan transmisi ulang oleh klien.
dipesan Boolean yang menentukan apakah pesan dijamin tiba dalam urutan pengirimannya. Jika pengaturan ini adalah false, pesan dapat tiba di luar urutan. Defaultnya adalah true.
reliableMessagingVersion Nilai yang valid dari ReliableMessagingVersion yang menentukan versi WS-ReliableMessaging yang akan digunakan.

Elemen Anak

Tidak ada

Elemen Induk

Elemen Deskripsi
<pengikatan> Menentukan semua kemampuan pengikatan dari pengikatan kustom.

Keterangan

Sesi yang andal menyediakan fitur untuk olahpesan dan sesi yang andal. Pesan andal mencoba kembali komunikasi tentang kegagalan dan memungkinkan jaminan pengiriman seperti kedatangan pesan secara berurutan ditentukan. Sesi mempertahankan status untuk klien di antara panggilan. Elemen ini juga secara opsional menyediakan pengiriman pesan yang dipesan. Sesi yang diimplementasikan ini dapat melintasi perantara SOAP dan transportasi.

Setiap elemen pengikatan mewakili langkah pemrosesan saat mengirim atau menerima pesan. Pada durasi, elemen pengikatan membuat pabrik saluran dan pendengar yang diperlukan untuk membangun tumpukan saluran keluar dan masuk yang diperlukan untuk mengirim dan menerima pesan. reliableSession menyediakan lapisan opsional dalam tumpukan yang dapat membangun sesi yang andal antara titik akhir dan mengonfigurasi perilaku sesi ini.

Untuk informasi selengkapnya, lihat Sesi Andal.

Contoh

Contoh berikut menunjukkan cara mengonfigurasi pengikatan kustom dengan berbagai elemen pengodean transportasi dan pesan, terutama mengaktifkan sesi yang andal, yang mempertahankan status klien dan menentukan jaminan pengiriman dalam urutan. Fitur ini dikonfigurasi dalam file konfigurasi aplikasi untuk klien dan layanan. Contoh menunjukkan konfigurasi layanan.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="Microsoft.ServiceModel.Samples.CalculatorService"
               behaviorConfiguration="CalculatorServiceBehavior">
        <!-- This endpoint is exposed at the base address provided by host: http://localhost/servicemodelsamples/service.svc -->
        <!-- specify customBinding binding and a binding configuration to use -->
        <endpoint address=""
                  binding="customBinding"
                  bindingConfiguration="Binding1"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <!-- The mex endpoint is exposed at http://localhost/servicemodelsamples/service.svc/mex -->
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>
    <!-- custom binding configuration - configures HTTP transport, reliable sessions -->
    <bindings>
      <customBinding>
        <binding name="Binding1">
          <reliableSession />
          <security authenticationMode="SecureConversation"
                    requireSecurityContextCancellation="true">
          </security>
          <compositeDuplex />
          <oneWay />
          <textMessageEncoding messageVersion="Soap12WSAddressing10"
                               writeEncoding="utf-8" />
          <httpTransport authenticationScheme="Anonymous"
                         bypassProxyOnLocal="false"
                         hostNameComparisonMode="StrongWildcard"
                         proxyAuthenticationScheme="Anonymous"
                         realm=""
                         useDefaultWebProxy="true" />
        </binding>
      </customBinding>
    </bindings>
    <!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
    <behaviors>
      <serviceBehaviors>
        <behavior name="CalculatorServiceBehavior">
          <serviceMetadata httpGetEnabled="True" />
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Lihat juga