您好,登錄后才能下訂單哦!
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”來確保只處理需要的錯誤。在客戶進入重試狀態前會使用策略驗證這個異常是否屬于瞬態錯誤。
下面是幾個類似的項目:
譯文:SQL Azure客戶端-瞬態錯誤處理最佳實踐
基于Enterprise Library 6 的AOP實現
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。