Web应用程序中的静态变量

时间:2009-09-23 11:19:15

标签: variables static

众所周知,静态变量不能用于 Web应用程序因为它在整个应用程序中保持静态。但是,有没有可以在Web应用程序中使用静态变量来实现功能的场景?

由于

4 个答案:

答案 0 :(得分:1)

您可以将静态信息存储在多个位置......

  • 在数据库中
  • 在Cookie中
  • 在应用程序或会话变量中
  • 在查询字符串(甚至是表单变量)中

(或者我误解了这个问题?)

答案 1 :(得分:1)

我不确定我是否理解这个问题,但有些情况下,如果了解其含义,在Web应用程序中使用静态变量是完全正常的。例如,使用NHibernate和“每请求会话”模型的.NET Web应用程序中的常见用法是保持ISessionFactory的静态实例以创建新的NHibernate会话。这很有用,因为会话工厂是非常繁重的对象,并且通常需要大量资源才能创建。

答案 2 :(得分:1)

配置数据,数据库连接字符串,从数据库源检索的应用程序的常量数据。

任何在初始化后都不需要改变的东西。

例如,我可以在页面上获取配置设置,并一次又一次地使用。在此示例中,一旦myUrl初始化,它将永远不必再次访问web.config文件,直到重新启动Web应用程序。

static public string myUrl = string.Empty

public void SomeRoutine()
{
    if ( string.IsNullOrEmpty( myUrl ) )
        myUrl = ConfigurationManager.AppSettings[ "myUrl" ].ToString();

    ...

    Response.Redirect( myUrl );
}

答案 3 :(得分:0)

您没有提到您正在使用的Web框架,但如果您使用的是ASP.Net,则可以将对象分配给Application对象或Session对象,该对象将在请求之间跨应用程序保存信息,并在所有对象之间保存信息。分别来自个人用户的请求。

如果您以一般方式询问,并且我怀疑您是因为这是标记的主观+讨论,那么您可以尝试使用cookie来保存变量以满足用户的所有请求。

至于为所有用户保留一些价值,您应该看一下您正在使用的Web框架。您可以选择将某些内容存储在每个请求都可访问的文件中,以及将某些内容存储在ASP.Net的Application对象中。

如果我在这里过于务实,我很抱歉,但是我住的地方已经很晚了。)。