使用.net中的静态变量

时间:2011-03-05 11:22:47

标签: .net asp.net variables static

在.net和asp.net中的整体编程中确切使用静态变量......

最近我去面试时,面试官问我2个问题,我不确定同样的问题。

  1. 什么是会话对象的使用,我说会话是服务器端对象,当你想在服务器端存储用户特定数据时使用它们,然后他问我想要使用静态变量是什么同样,我是妈妈,任何人都可以告诉我,如果我将用户特定信息存储在静态变量中,asp.net将如何表现。

  2. 如果我使用的cookie是在客户端(非敏感的)存储数据的最佳选择,但如果用户在他的机器上禁用了cookie,我的应用程序会崩溃,我必须处理这样的例外......

4 个答案:

答案 0 :(得分:1)

1。)Session是一个用户特定的字典(每个用户都拥有它),静态/共享变量是appclication wide(只要应用程序运行/所有会话都不被放弃)。

通常,如果要存储属于一个用户的数据,则使用Session;如果要将数据共享给所有用户,则使用静态变量。

因此,Session的可伸缩性低于静态变量,因为它随着用户数量的增加而增加。静态变量(或ASP.Net Cache)的一个缺点是,当不同的用户自己并行访问/更改它们时,必须避免冲突。性能是静态变量/缓存的优势之一。

所以你对会议的回答是正确的。如果要对用户特定数据使用静态变量,可以使用带有User的静态Dictionary(例如MembershipUser对象或其providerkey作为键)以及要存储为值的数据。但通常你会正确地使用Session来解决这个问题。

2.)确定浏览器是否接受Cookie

客户端可以禁用cookie。检查cookie是否被禁用的一种方法是将cookie写入响应,并在下一个请求中检查cookie是否存在。如果cookie不存在,您需要假设cookie被禁用。

Here是关于cookie的一些进一步信息。

答案 1 :(得分:1)

  1. 静态变量scope与Application Domain相关联,因此静态变量值将是所有用户的SAME。您不能使用静态变量来保存用户特定的数据。静态变量很适合存储特定于应用程序的信息,但由于ASP.NET是一个多线程环境,因此您需要管理锁定/解锁。

  2. 如何验证已禁用的Cookie已定义here

答案 2 :(得分:0)

  1. 我会将session用于该用户/会话所需的数据和应用程序级变量的静态变量。
  2. What is better: Static variable V.S. Asp.NET Application Session ?似乎同意我的想法。

    1. if cookies are disabled, does asp.net store the cookie as a session cookie instead or not?作为一个类似的问题谈论明确需要cookie或使用ViewState作为替代。您应该通过查看

      中的内容来检查cookie是否存在

      Request.Cookies时

    2. 如果是空的,请做出你决定的其他选择。

答案 3 :(得分:0)

静态变量适用于应用程序的实例。在大多数情况下,表单应用程序在客户端PC上运行静态变量一直用在这些中。

Web应用程序只在服务器上运行一个实例。因此,连接到该服务器的每个客户端都将共享相同的数据。

您可以使用会话变量来创建仅与客户端相关的变量和对象。