【问题标题】:Microsoft Azure: How to Implement ASP.NET Transient Fault Handling Without Enterprise Application BlockMicrosoft Azure:如何在没有企业应用程序块的情况下实现 ASP.NET 瞬态故障处理
【发布时间】:2015-06-04 16:52:21
【问题描述】:

当我们第一次迁移到 Azure 时,通过 Enterprise Application Block 5.0 处理瞬态故障是城里最好的游戏。我们使用它在获取 Azure SQL 连接、访问 ASP.NET 会话对象和访问 ASP.NET 应用程序对象时自动执行重试。为此,我们分别使用以下类:

  • 来自应用程序块的 ReliableSqlConnection
  • 我们自己的 ReliableApplication 类,通过在访问应用程序对象时应用应用程序块缓存 RetryPolicy 来扩展 Microsoft.ApplicationServer.Caching.DataCache
  • 我们自己的 ReliableSession 类,通过在访问 Session 对象时应用应用程序块缓存 RetryPolicy 来扩展 HttpContext.Current.Session。

现在根据 Microsoft's Transient Fault Handling Patterns and Practices 截至 2014 年 3 月:

用于 Azure 存储和 Azure 服务总线的 SDK 的最新版本本机支持重试。建议使用这些而不是瞬态故障处理应用程序块

我们应该使用哪些 Azure SDK 类来替换我们对已弃用的企业应用程序块瞬态故障处理的依赖项?

【问题讨论】:

    标签: c# asp.net azure azure-sql-database


    【解决方案1】:

    请按照以下博客文章实现重试逻辑(这些是 ADO.NET 示例,但您可以用您选择的语言复制逻辑) https://msdn.microsoft.com/library/azure/ee336243.aspx

    https://msdn.microsoft.com/en-us/library/azure/dn961167.aspx

    第一个是使用企业库实现重试逻辑,第二个向您展示如何使用自定义代码实现重试逻辑。

    回答你的问题:

    我们应该使用哪些 Azure SDK 类来替换我们对已弃用的企业应用程序块瞬态故障处理的依赖项? 您将不得不使用重试逻辑来提高连接弹性。不幸的是,目前没有可用于实现重试逻辑以连接到 Azure SQL DB 的 Azure SDK。

    让我知道这是否有意义。


    最好的,
    认识巴格杰夫
    微软项目经理

    【讨论】:

    • meet-bhagdev,我想您提供的第一个链接的变体可用于重试访问 Session 和 Application 对象。谢谢!
    • 欢迎您 user773906。让我知道这是否对您有用,并将提案标记为将来参考的答案。谢谢:)
    【解决方案2】:

    这个网站有每个服务的本地客户端支持示例

    https://github.com/mspnp/azure-guidance/blob/master/Retry-Service-Specific.md

    【讨论】:

    • 以上链接:1) 适用于我未使用的 Azure Redis 缓存 2) 对于 Azure SQL 连接重试,我参考了 [Windows Azure SQL 数据库性能和弹性指南][1] .这让我想到了[瞬态故障处理应用程序块][2]。因此,在我用实体框架替换所有 ADO.NET 代码之前,我似乎无法摆脱应用程序块。 [1]:social.technet.microsoft.com/wiki/contents/articles/… [2]:msdn.microsoft.com/en-us/library/hh680934(v=pandp.50).aspx
    • @user773906 据我了解,瞬态故障处理块并未完全弃用。对于存储和服务总线(我假设您从模式和实践引用中使用),它支持客户端重试策略。对于没有 EF 的 Sql 数据库,我相信仍然推荐使用瞬态故障处理块。就个人而言,我继续使用 TFHB,因为正如您所说,它运行良好,我不确定如果客户端重试有什么好处。当然都是个人选择。
    • 我确实按照建议将缓存移动到 Redis 服务,该服务迄今为止表现出色msdn.microsoft.com/en-us/library/azure/dn766201.aspx
    • 我从上述 cmets 推测,ADO.NET 数据库连接和我们的两个 VM 的分布式本地缓存仍然需要瞬态故障处理应用程序块。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多