在asp.net中使用静态类和方法代替会话

时间:2013-10-11 09:59:29

标签: asp.net

在我的webapplication会话中使用业务层,此业务层(DLL)用于移动应用程序。我可以使用静态类和方法从业务层中删除此会话吗?

3 个答案:

答案 0 :(得分:1)

将数据存储在静态成员而不是会话中会产生非常不同的结果。 Web应用程序中的会话通过会话cookie与远程用户绑定。换句话说,每个用户(具有不同的cookie)将具有单独的会话。另一方面,类的静态成员对于Web应用程序的所有远程用户都是相同的。如果你考虑网络农场,网络花园和应用领域,它会变得更复杂,但一般原则是相同的。

如果数据对每个用户都是唯一的,则会话(或数据库之类的其他位置)是存储它的正确位置。如果所有用户的数据相同,那么您可以使用静态成员,但在两个或更多用户尝试同时更新数据时要注意问题。

答案 1 :(得分:0)

最好将会话所需的相关字段注入业务层。

答案 2 :(得分:0)

如果您使用静态,则用户将覆盖彼此的值。这就是为什么会话状态首先被创建(除了缓存等......),因为它仅针对该特定用户而被隔离。在web中使用静态是一个坏主意,特别是在处理超过1个用户时(Web应用程序上的点也是同时处理多个用户!)

你还说你在商业逻辑中使用Session吗?这对我来说听起来并不合适......业务层应该是完全独立的,不应该访问Session,因为会话只是一个Web层可访问性。好像您的架构也不正确。