为Web应用程序创建全局变量 - ASP.NET

时间:2010-12-28 14:35:32

标签: asp.net sql-server global-variables data-access-layer bll

我正在构建我的Web应用程序以连接db。 到目前为止,我已设法处理它,(虽然我没有建立BLL和DAL)。

我有一个包含“id”列的表格。我知道有一种方法可以在SQL Server中声明它自动递增。 (但我不想要它。)

我想声明一个保存值的全局应用程序变量。

我有两个问题:

  1. 我是如何申报的?

  2. 我在哪里创建并初始化它? (我有几个登录页面)。

  3. 谢谢!

    p.s

    如果有人告诉我如何使用我的存储过程构建DAL会有所帮助? 为了我需要你使用BLL我不能在DAL中做什么?

4 个答案:

答案 0 :(得分:5)

您可以使用Application对象 - 它是HttpContext的一部分,可以在任何页面上直接访问。

如果您不想使用它,您可能希望编写一个包含静态成员的Globals类(或任何您喜欢的名称)。

public class Globals
{
  public static int Counter { get; set;}
}

// accessed from other classes:
Globals.Counter++;

任何一种方法都无法使用您拥有Web场或多个Web应用程序,并且无法在重新启动后继续存在。


无论这些选项如何,正确的解决方案(即使您不想使用它 - 您能解释原因吗?),都是使用带有IDENTITY子句的ID字段。

答案 1 :(得分:1)

存储变量很容易。管理自己的ID生成以及争用和并发问题是困难的部分。祝你好运。

答案 2 :(得分:1)

ASP.NET中确实没有全局变量这样的东西。请记住,HTTP是无状态的。

您最接近的是在Application对象中存储内容:

Application["myvar" ] = x;
x = Application["myvar"];

但是即使在这里,当应用程序需要重新启动时,这个变量也会丢失,它可以不时地执行。

您所描述的更好的解决方案是数据库值。

答案 3 :(得分:0)

增加一个整数然后将增加的ID丢入数据库中充满了危险。多线程?应用程序反弹时会发生什么? dev和prod部署是否共享同一组数字?

听起来您需要一个全局唯一标识符,并且可以在数据库之外创建。这听起来像GUID的工作。当然,它占用了db中更多的空间,但它可能不是你要对数据库做的最糟糕的事情。