【问题标题】:How to synchronize static variables in a web farm in asp.net如何在 asp.net 中同步网络场中的静态变量
【发布时间】:2013-04-22 13:33:45
【问题描述】:

在 asp.net 中,我们可以存储应用程序范围变量(静态、应用程序)。 但是如何在不使用分布式缓存和数据库的情况下,将一个节点的静态变量与另一个节点的静态变量同步呢?

【问题讨论】:

    标签: asp.net static load-balancing


    【解决方案1】:

    如果没有公共数据库或公共文件存储中的值,您将无法同步静态变量。

    所以你想做什么,是做不到的。您需要使用公共数据库、公共文件或也使用公共数据库的分布式缓存 - 将您的值保存在一个位置、公共文件或公共数据库中。

    一些注意事项。静态变量不仅在网络农场不同,在网络花园也不同。这意味着即使在同一个池中的每个应用程序线程也具有不同的静态值。

    一些相关的答案: Static variable Behaviour in Asp.Net
    Lifetime of ASP.NET Static Variable
    Using static variables instead of Application state in ASP.NET

    【讨论】:

    • 感谢您的回答,但正如我所写的,我已经知道它可以通过分布式缓存或数据库来实现。但我想知道是否可以开发应用程序替代方案。例如,向每个服务器调用 Web 服务来设置静态变量的新值。如果你不能使用缓存或数据库哪个是最佳实践?
    • @user2236886 即使您调用网络服务,您也需要再次使用公共数据库访问这些值。现在,在这种情况下没有最佳实践,只有一种方法 - 一个通用文件,或者一个 xml,或者一个文件数据库,或者一个完整的数据库,但是一个通用文件。
    • 我已经这样做了,但我不知道它是否不好:节点 1 上的管理员更新了一个变量,例如。贝宝电子邮件。 asp.net 将此配置写入 db,以确保数据随时间的一致性。然后 asp.net 调用一个 Web 服务,为 Web 场中的每个节点提供一个。此 Web 服务使用新值更新静态变量的值。当用户转到 node2 时,值已更新并且不需要访问数据库。这很酷吗?这样可以还是有一些缺点?
    • @user2236886 听起来不错。这个东西的问题是制作一个程序来理解 WHEN 必须再次读取该值。数据何时更新以及是否更新是您需要解决的问题。
    猜你喜欢
    • 2019-08-11
    • 2010-12-23
    • 2010-10-25
    • 2012-01-20
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多