ASP.NET MVC 应用程序中的单例类或具有静态方法的类[重复]

2024-01-08

可能的重复:
ASP .NET 单例 https://stackoverflow.com/questions/2134511/asp-net-singleton

我知道单例类和具有静态属性/方法的类之间的一般差异,但我想知道它如何影响 ASP.NET MVC Web 应用程序中的并发性(许多用户登录应用程序)?例如,我们将设置存储在单例(或静态属性)类中。两个用户是否有可能突然开始看到/共享相同的设置?我的意思是,如果一个用户更改他的设置(因为它们存储在应用程序运行时的内存中),它会影响其他用户吗?据我所知,IIS 为应用程序创建一个 w3wp.exe 进程,因此所有用户/访问者都将位于同一进程中,那么这会对任何事情产生影响吗?


简短的回答是,是的,用户将看到任何静态属性的相同值。它将在会议之间共享。

长答案:是的,此外,如果每个会话都尝试同时更新共享属性,则可能会导致不良行为,特别是如果共享(静态)属性是动态增长的类型(任何集合类型)。访问或修改共享属性的值时,您需要处理并发性。

拥有单例或静态类的唯一原因是专门与所有连接共享一组值/设置/配置数据。如果所有用户都需要相同的信息,它会保持较低的内存利用率。在这种情况下,您需要注意仅初始化这些值一次,或者使用锁以原子方式更新它,以确保一次只有一个线程更改信息。任意数量的线程都可以读取数据而不会互相干扰。

如果您需要为不同的用户使用不同的值,最好使用实例属性,因为您无需担心并发以及与锁定相关的性能影响。

静态方法很好。实例方法和静态方法之间唯一真正的区别是调用它们的方式。即使实例方法也仅保存在内存中的一个位置。只有实例属性才会被赋予自己的内存空间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC 应用程序中的单例类或具有静态方法的类[重复] 的相关文章

随机推荐

  • 如何使用维基百科的 Web API 检索某人的传记信息?

    我正在努力通过维基百科的 Web API 从该人的维基百科页面检索该人的一些特定生物详细信息 我需要检索一个人的生物信息框 我找到了如何检索内容框 介绍段落等 下面的 URL 用于检索 wiki 网页的第一个介绍段落 https en wi
  • 在 super.init 之前的表达式中使用初始化属性时出现 Swift 错误

    这并不重要 并且有解决方法 但它令人困惑 请参阅下面的最小示例 我指的是一个已初始化的属性 但在调用 super init 之前 为什么下面所示的语句会出现编译错误 在表达式的右手中使用属性与在左手中使用属性有什么特别之处吗 我浏览了 Sw
  • 在 Webfaction 上设置 Redis

    设置需要哪些步骤Redis http redis io 数据库上网派 http www webfaction com affiliate xeli共享托管帐户 介绍 由于 Webfaction 服务器的特殊环境限制 安装说明并不那么简单 尽
  • New 与 Malloc,当重载 New 时

    我超载了new and delete实现我自己的小对象 线程安全分配器 问题是当我超载时new 我不能使用new不破坏普遍因果关系或至少不破坏编译器 我发现的大多数例子都在哪里new超载 使用Malloc 进行实际分配 但根据我对 C 的理
  • 从所有表中删除外键关系

    我有一个包含多个表的数据库 许多表的字段具有外键约束 我想截断表 然后用新数据重新填充它们 并且我还想删除外键 因为某些关系已经改变 基本上 我想再次从头开始构建 FK 约束 如何从所有表中删除当前的 FK 约束 您可以使用 informa
  • PostgreSQL 9.2.1 中具有可序列化隔离的谓词锁定

    我已经仔细阅读了关于事务隔离的 postgres 文档 http www postgresql org docs current static transaction iso html建议在我的其他问题 https stackoverflo
  • 从 CompletableFuture 捕获未捕获的异常

    我正在尝试捕获像这样的期货中未捕获的异常CompletableFuture runAsync gt throw new RuntimeException 我的目标是当开发人员忘记处理这些异常时 让它们不再沉默 Calling get or
  • 如何从提交的 Spark 应用程序步骤中获取 AWS EMR 集群 id 和步骤 id

    设想 我正在 AWS EMR 中运行 Spark Scala 作业 现在我的工作转储该应用程序特有的一些元数据 现在 为了转储 我正在位置 s3 bucket key 写入 其中 ApplicationId 是 val APPLICATIO
  • 将 TableRowSorter 与 scala.swing.Table 一起使用

    我正在开发具有 scala swing Table 组件的简单 UI 我想使用 java swing table TableRowSorter 对表行进行排序 Table 类不提供任何使用行排序器的 API 因此我尝试直接在对等点上设置它
  • 了解会话中有关登录变量的行

    下面这行是什么意思 放置布尔变量isLogin到您的会话 以便您在用户每次访问安全站点时检查会话 我想知道如何将变量放入会话中 我知道在抽象层面上 会话是半永久性的 互动信息交换 也称为对话 两人之间的谈话或会议 或更多通信设备 或 计算机
  • 跨源子帧中表单控件的自动对焦被阻止

    使用 Chrome 当我尝试更改位于我们服务器上另一个应用程序的 IFrame 中的输入值时 我在 Chrome 中收到错误 在跨源子框架中阻止对表单控件的自动对焦 在生产中 当两个应用程序托管在同一域上时 它正在工作 但在本地主机开发中我
  • 如何发现 Spark 数据框中列格式的异常?

    正如问题所说 我想找到大型数据集中列中值格式的异常 例如 如果我在包含 5 亿行的数据集中有一个日期列 我想确保该列中所有行的日期格式为 MM DD YYYY 我想找到此格式中存在异常的计数和值 我该怎么做呢 我可以使用正则表达式吗 有人可
  • IOS Swift - 自定义相机覆盖

    你好 我想在我的应用程序中打开一个摄像头 如下所示 我想仅在该部分的中间打开相机 以便用户只能在矩形部分中拍摄快照 我正在使用的代码是这样的 import UIKit import AVFoundation class TakeProduc
  • python 中对象的 __init__() 方法做什么? [复制]

    这个问题在这里已经有答案了 在阅读 OpenStack 代码时 我遇到了这个问题 一个名为 Service 的类继承了基类 object 然后在Service的 init 方法 对象的 init 叫做 相关代码如下所示 类定义 class
  • 在 Selenium 2 中截取测试屏幕截图的最佳方式?

    我需要一种方法来截取功能测试的屏幕截图 现在我正在使用带有 C 绑定的 Selenium 2 我非常想在测试结束时截取屏幕截图 以确保显示所需的页面 你们知道有什么特定的工具可以合并到我的 C 代码中来触发屏幕截图吗 我找不到内置的 Sel
  • 检测 navigator.online 上的更改

    如何检测导航器是否将您的状态更改为在线 离线 就像是 var oldState navigator onLine window navigator onlinechange function evnt newState alert your
  • RPM 规范文件可以“包含”其他文件吗?

    RPM 规范中有一种 include 指令吗 我无法通过谷歌搜索找到答案 动机 我有一个 RPM 规范模板 构建过程会使用版本 修订版和其他特定于构建的数据对其进行修改 这是由sed现在 我认为如果规范会更干净 include特定于构建的定
  • 使用 javascript onClick 显示 Bootstrap Modal

    我需要能够使用以下命令打开 Twitter 引导模式窗口onClick 或类似的功能 只需要输入代码即可onClick 我正在尝试制作一个可点击的div打开模式 代码摘录 部门代码 div class span4 proj div 模态di
  • 如何在swift语言中使用CC_MD5方法

    在 Objective C 中 我们可以像这样对字符串进行哈希处理 const char cStr someString UTF8String unsigned char result 16 CC MD5 cStr strlen cStr
  • ASP.NET MVC 应用程序中的单例类或具有静态方法的类[重复]

    这个问题在这里已经有答案了 可能的重复 ASP NET 单例 https stackoverflow com questions 2134511 asp net singleton 我知道单例类和具有静态属性 方法的类之间的一般差异 但我想