028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

ADO.NET的弹性连接控制[ADO.NETidleconnectionresiliency]

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的核心程序代码中,能够断开会话状态并在适当的时候恢复会话,很多场景都会收益于这个功能.

创新互联专注于企业营销型网站建设、网站重做改版、晋城网站定制设计、自适应品牌网站建设、HTML5建站商城网站建设、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为晋城等各大城市提供网站开发制作服务。

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实现


新闻名称:ADO.NET的弹性连接控制[ADO.NETidleconnectionresiliency]
本文链接:http://www.tsicrk.com/article/jedsod.html

其他资讯

让你的专属顾问为你服务

2.3495s