Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 考虑到性能,会话变量优于静态变量?如果没有,解决办法是什么?_C#_Asp.net Mvc_Static_Session Variables - Fatal编程技术网

C# 考虑到性能,会话变量优于静态变量?如果没有,解决办法是什么?

C# 考虑到性能,会话变量优于静态变量?如果没有,解决办法是什么?,c#,asp.net-mvc,static,session-variables,C#,Asp.net Mvc,Static,Session Variables,我在一些屏幕上使用了静态变量。看到这一点,我的上级建议我不要使用它们,因为它们会影响性能。仅供参考,我正在开发MVC应用程序 我得到的另一个选择是使用Session变量。但是我不确定用它来代替,我想听听你的建议。会话变量是否是正确的选择?如果没有,什么是更好的选择。 请提出建议。我对如何使用这个变量知之甚少,我想说远离静态变量不是因为性能,而是主要因为并发性。使用会话变量将保证每个用户的隔离,除非您确实希望在用户之间共享值 性能方面的静态变量将更快,因为不需要将它们序列化到会话中或从会话中序列化

我在一些屏幕上使用了静态变量。看到这一点,我的上级建议我不要使用它们,因为它们会影响性能。仅供参考,我正在开发MVC应用程序

我得到的另一个选择是使用Session变量。但是我不确定用它来代替,我想听听你的建议。会话变量是否是正确的选择?如果没有,什么是更好的选择。

请提出建议。

我对如何使用这个变量知之甚少,我想说远离静态变量不是因为性能,而是主要因为并发性。使用会话变量将保证每个用户的隔离,除非您确实希望在用户之间共享值


性能方面的静态变量将更快,因为不需要将它们序列化到会话中或从会话中序列化(如果使用进程会话管理,则不需要太多)。

变量中存储的是什么,是每个用户还是每个应用程序存储的数据?存储的数据是整数。它的作用域在控制器内。@Nitish:如果它的作用域在控制器内,那么为什么要将其存储在静态中?因为在循环中有各种操作。例如搜索、删除,然后重新加载页面。会话内容实际上已经是静态的(如果不是实际的)。这两种方法都是有效的全局状态,只有当您实际存储需要全局的信息时,才应该使用这两种方法,而不是您不想在本地进行范围界定的信息。我没有意识到这一点。谢谢。同步机制就是一个很好的例子,说明你可能真的想把它存储为静态变量。如果您需要同步对…的访问,您可能需要一个静态
对象
锁定
。这将是一个适当使用
static
的例子(尽管如果可能的话,您仍然希望避免)。@Servy-他将其用于int值,因此不适合锁定。@OtávioDécio正确,我只举了一个例子(这里显然不适用)在其中,您可能更喜欢静态变量而不是会话内容。在OP的情况下,他可能不想要任何一个;我们没有办法知道。这是真的,问题中的信息很少。我只是觉得很难证明仅为性能而使用static是合理的,我看不出对于单个整数变量来说这会是一个问题。