ADO.NET連接SQL Server有時(shí)候聯(lián)機(jī)會(huì)無(wú)故的中斷 (例如閑置過(guò)久或是交易時(shí)間太長(zhǎng)等因素),這時(shí)又要重新連接,在.NET Framework 4.5之前,這件事情要由開(kāi)發(fā)人員自己依照ADO.NET的SqlException來(lái)判斷并自行重試,重試的算法也要由開(kāi)發(fā)人員來(lái)自定義,所以SQL Database的CAT (Customer Advisory Team) 開(kāi)發(fā)了Transient Fault Framework給Windows Azure的開(kāi)發(fā)人員使用,而.NET Framework 4.5.1則正式將它納入ADO.NET的核心程序代碼中,能夠斷開(kāi)會(huì)話狀態(tài)并在適當(dāng)?shù)臅r(shí)候恢復(fù)會(huì)話,很多場(chǎng)景都會(huì)收益于這個(gè)功能.
創(chuàng)新互聯(lián)專注于企業(yè)營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、晉城網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為晉城等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
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],分別是:
類 | 說(shuō)明 |
DefaultExecutionStrategy | 執(zhí)行時(shí)不包含重試策略,這會(huì)自動(dòng)用于SQL Server以外的數(shù)據(jù)庫(kù)。 |
DefaultSqlExecutionStrategy | 執(zhí)行時(shí)不包含重試策略,但是它會(huì)包裝例外狀況,由使用者決定是否要啟用Connection Resiliency。 |
DbExecutionStrategy | 這個(gè)對(duì)象是所有執(zhí)行策略的基礎(chǔ)類別,它包裝了指數(shù)式重試原則 (exponential retry policy) 算法,并且由實(shí)作來(lái)決定要如何使用這個(gè)算法,以及重試的次數(shù)等。 |
SqlAzureExecutionStrategy | 專為SQL Azure Database設(shè)計(jì)的重試策略,會(huì)依照已知的可能瞬斷問(wèn)題進(jìn)行自動(dòng)的重試處理。 |
上文提到的 Transient Fault Framework 其實(shí)Enterprise Library的一個(gè)模塊。這個(gè)框架考慮到了處理所有可能的瞬態(tài)錯(cuò)誤的需求,在內(nèi)部實(shí)現(xiàn)了一個(gè)“Retry Policy”來(lái)確保只處理需要的錯(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)