您好,登錄后才能下訂單哦!
ADO.NET連接SQL Server有時(shí)候聯(lián)機(jī)會(huì)無故的中斷 (例如閑置過久或是交易時(shí)間太長等因素),這時(shí)又要重新連接,在.NET Framework 4.5之前,這件事情要由開發(fā)人員自己依照ADO.NET的SqlException來判斷并自行重試,重試的算法也要由開發(fā)人員來自定義,所以SQL Database的CAT (Customer Advisory Team) 開發(fā)了Transient Fault Framework給Windows Azure的開發(fā)人員使用,而.NET Framework 4.5.1則正式將它納入ADO.NET的核心程序代碼中,能夠斷開會(huì)話狀態(tài)并在適當(dāng)?shù)臅r(shí)候恢復(fù)會(huì)話,很多場(chǎng)景都會(huì)收益于這個(gè)功能.
ADO.NET Idle Connection Resiliency這個(gè)功能被包裝在Entity Framework 6中,在DbConfiguration設(shè)定DbExecutionStrategy對(duì)象,Entity Framework 6內(nèi)建了四種不同的DbExecutionStrategy[http://msdn.microsoft.com/pt-BR/data/dn456835],分別是:
類 | 說明 |
DefaultExecutionStrategy | 執(zhí)行時(shí)不包含重試策略,這會(huì)自動(dòng)用于SQL Server以外的數(shù)據(jù)庫。 |
DefaultSqlExecutionStrategy | 執(zhí)行時(shí)不包含重試策略,但是它會(huì)包裝例外狀況,由使用者決定是否要啟用Connection Resiliency。 |
DbExecutionStrategy | 這個(gè)對(duì)象是所有執(zhí)行策略的基礎(chǔ)類別,它包裝了指數(shù)式重試原則 (exponential retry policy) 算法,并且由實(shí)作來決定要如何使用這個(gè)算法,以及重試的次數(shù)等。 |
SqlAzureExecutionStrategy | 專為SQL Azure Database設(shè)計(jì)的重試策略,會(huì)依照已知的可能瞬斷問題進(jìn)行自動(dòng)的重試處理。 |
上文提到的 Transient Fault Framework 其實(shí)Enterprise Library的一個(gè)模塊。這個(gè)框架考慮到了處理所有可能的瞬態(tài)錯(cuò)誤的需求,在內(nèi)部實(shí)現(xiàn)了一個(gè)“Retry Policy”來確保只處理需要的錯(cuò)誤。在客戶進(jìn)入重試狀態(tài)前會(huì)使用策略驗(yàn)證這個(gè)異常是否屬于瞬態(tài)錯(cuò)誤。
下面是幾個(gè)類似的項(xiàng)目:
譯文:SQL Azure客戶端-瞬態(tài)錯(cuò)誤處理最佳實(shí)踐
基于Enterprise Library 6 的AOP實(shí)現(xiàn)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。