【问题标题】:Static classes in web applications [closed]Web 应用程序中的静态类 [关闭]
【发布时间】:2013-10-14 15:11:31
【问题描述】:

在 Web 应用程序中使用静态类是一个糟糕的选择吗?

假设用户在角色 x 中,则使用静态类进行角色验证。我认为当有很多用户时它可能会排队使用该课程。

有什么建议吗?

【问题讨论】:

  • 什么会排队?据我所知,多个线程可以同时访问一个静态类或方法,并意识到在 CPU 上实际上没有同时发生任何事情。您是否尝试过实例化和静态方法?你想解决什么问题?也许最重要的是,为什么不直接使用或扩展内置角色提供程序?

标签: c# asp.net-mvc static


【解决方案1】:

静态类在 Web 应用程序中很好用。请记住,所有线程都能够同时访问该类,因此您需要考虑操作的线程安全性。在您的示例中,角色验证是非常合理的,因为您可以在应用程序启动时加载角色并在执行期间从中读取。这将使您的类线程安全。

我使用静态类来缓存基于 MVC 应用程序中用户名的用户 ID 等信息。现在,在处理缓存时,您需要担心线程安全,因为您有时既要阅读又要写作。但你明白了。 Web 应用程序中的静态信息是 100% 可以的。

【讨论】:

  • +1 表示线程安全,我认为这是使用静态与非静态类和方法可能出现的唯一实际问题。
【解决方案2】:

除非在该静态类或其他东西中存在共享资源,并且已实施锁定以使其成为线程安全的 - 在从多个用户/请求/线程同时访问它时,您不会遇到任何排队问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2010-09-12
    • 2012-12-24
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    相关资源
    最近更新 更多