什么更好:静态变量V.S.Asp.NET应用程序会话?
假设您希望在ASP.NET web应用程序中的所有线程/会话之间共享某些资源,如类或变量。什么更好 1) 对静态变量具有线程安全访问器的静态变量什么更好:静态变量V.S.Asp.NET应用程序会话?,asp.net,global-variables,static-members,Asp.net,Global Variables,Static Members,假设您希望在ASP.NET web应用程序中的所有线程/会话之间共享某些资源,如类或变量。什么更好 1) 对静态变量具有线程安全访问器的静态变量 2) 还是ASP.NET应用程序会话变量?如果只有其中一个变量,则差别不大 如果有多个变量,则应使用静态变量,而不是Application变量。Application.Lock方法将锁定所有Application变量,同时您可以为静态变量使用单独的同步标识符,以便每个锁只影响访问该特定变量的代码。这是一种常见的场景,您需要浏览多个页面并收集数据。我将在
2) 还是ASP.NET应用程序会话变量?如果只有其中一个变量,则差别不大
如果有多个变量,则应使用静态变量,而不是
Application
变量。Application.Lock
方法将锁定所有Application
变量,同时您可以为静态变量使用单独的同步标识符,以便每个锁只影响访问该特定变量的代码。这是一种常见的场景,您需要浏览多个页面并收集数据。我将在这个场景中使用会话对象。当整个应用程序需要相同的对象时,应该使用静态变量
如果要保留的值取决于用户,则使用会话 这是真的,只有当您要存储整个会话的值时,才应使用会话变量,但是,如果您希望初始化变量并在表单之间使用,并且如果在表单之间更改,则同一对象的整个应用程序都应使用静态变量。静态成员将提供更好的性能,但缺点是它们不是线程安全的: 建议将数据存储在应用程序类的静态成员中,而不是存储在应用程序对象中。这会提高性能,因为访问静态变量的速度比访问应用程序字典中的项快 发件人: 以及:
这是一个重复的啊好吧。。。我没看到。。。那么,我应该做什么来结束这个问题呢?那么,如果该站点位于web场中,该怎么办呢?你有这样一个例子吗?@Choco:那么,当你在服务器之间发送数据时,你实际上不能共享同一个对象。这里有一篇文章概述了这些选项: