中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ADO.NET的彈性連接控制[ADO.NET idle connection resiliency]

發布時間:2020-07-03 01:19:14 來源:網絡 閱讀:617 作者:張善友 欄目:編程語言

ADO.NET連接SQL Server有時候聯機會無故的中斷 (例如閑置過久或是交易時間太長等因素),這時又要重新連接,在.NET Framework 4.5之前,這件事情要由開發人員自己依照ADO.NET的SqlException來判斷并自行重試,重試的算法也要由開發人員來自定義,所以SQL Database的CAT (Customer Advisory Team) 開發了Transient Fault Framework給Windows Azure的開發人員使用,而.NET Framework 4.5.1則正式將它納入ADO.NET的核心程序代碼中,能夠斷開會話狀態并在適當的時候恢復會話,很多場景都會收益于這個功能.

ADO.NET Idle Connection Resiliency這個功能被包裝在Entity Framework 6中,在DbConfiguration設定DbExecutionStrategy對象,Entity Framework 6內建了四種不同的DbExecutionStrategy[http://msdn.microsoft.com/pt-BR/data/dn456835],分別是:

說明

DefaultExecutionStrategy

執行時不包含重試策略,這會自動用于SQL Server以外的數據庫。

DefaultSqlExecutionStrategy

執行時不包含重試策略,但是它會包裝例外狀況,由使用者決定是否要啟用Connection Resiliency。

DbExecutionStrategy

這個對象是所有執行策略的基礎類別,它包裝了指數式重試原則 (exponential retry policy) 算法,并且由實作來決定要如何使用這個算法,以及重試的次數等。

SqlAzureExecutionStrategy

專為SQL Azure Database設計的重試策略,會依照已知的可能瞬斷問題進行自動的重試處理。

上文提到的 Transient Fault Framework 其實Enterprise Library的一個模塊。這個框架考慮到了處理所有可能的瞬態錯誤的需求,在內部實現了一個“Retry Policy”來確保只處理需要的錯誤。在客戶進入重試狀態前會使用策略驗證這個異常是否屬于瞬態錯誤。

  • 提供了一個可擴展的Retry邏輯處理瞬態錯誤,不僅限于SQL Server。
  • 支持一系列的重試方案(固定周期,漸進周期,隨機指數退避)
  • 支持SQL 連接和SQL命令使用不同的Retry策略。
  • SqlConnectionSqlCommand對象提供了擴展方法來實現Retry操作
  • 支持Retry后的回調,通知用戶代碼是否發生了Retry情況
  • 支持快速重試模式,當第一次發生進行Retry時會立即嘗試而沒有延遲
  • 允許在應用程序配置文件中定義Retry策略
  • 支持同步和異步請求

下面是幾個類似的項目:

  • SQL Fault Retry Provider提供了一個如何創建高可用性應用程序的案例,當然特指在SQL Mirroring環境下。并且提供了一個可以進行重試操作的 Data Provider.
  • Endjin Retry Framework:提供了一下TPL的 重試框架
  • Polly: 提供了一個.NET 3.5/4.0/4.5 下都可用的重試庫
  • 通過nuget上 查詢retry可以查到很多相關的項目 https://www.nuget.org/packages?q=retry 

 

譯文:SQL Azure客戶端-瞬態錯誤處理最佳實踐

基于Enterprise Library 6 的AOP實現

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉义县| 安达市| 天台县| 湘潭县| 会理县| 万山特区| 南宫市| 开远市| 儋州市| 肥城市| 辽宁省| 筠连县| 峨山| 克东县| 陆川县| 新和县| 牙克石市| 綦江县| 东乌| 宁河县| 潞城市| 泗洪县| 梨树县| 云霄县| 博兴县| 南康市| 庆元县| 介休市| 元朗区| 宜君县| 许昌县| 怀宁县| 门头沟区| 南木林县| 荔波县| 宜丰县| 宣武区| 南华县| 呼玛县| 中牟县| 舟曲县|