我正在使用一个asp.net应用程序,它将大多数数据存储在数据库中而不是会话中。我想知道每个人的利弊,哪个是更好的方式。例如,您有一个非常繁忙的站点,而不是在会话中存储用户特定的变量,有一个名为用户数据的数据库表,它可以存储可以通过查询数据库从任何页面访问的所有用户特定数据。哪个是更好的方式,会话或数据库?
答案 0 :(得分:3)
当AppDomain重置时,存储在会话状态的任何内容都将消失。
你可以通过使用一个进程外的会话状态处理程序来避免这种情况,但这并不比数据库好。
答案 1 :(得分:3)
会话(但这取决于很多会话配置):
数据库:
请注意,您可以将会话信息存储在数据库中。这就是为什么我在Session部分使用“may”这个词。 见here some session configuration and possibilities
答案 2 :(得分:2)
有趣的问题。如果它的数据在会话中不重要(例如,最后一页查看) - >会话。如果它的数据应该是持久的(例如,密码) - >数据库。有趣的案例和你可能引用的案例:应该持久但经常使用的数据(比如用户名)。从这些中,我倾向于将这些值从数据库复制到会话中,这使我能够在没有数据库访问的情况下在具有琐碎任务的页面中工作。
答案 3 :(得分:2)
在许多情况下,我使用Session
存储有关...... well ...“session”的临时数据。在ASP.NET中,会话是可配置的。您可以使用in-proc
(默认值)使用服务器的内存。您还可以将会话配置为使用数据库或会话管理工具(如果服务器内存有问题,或者您转移到群集/服务器场环境中)。
会话是暂时的。当您真正存储有关当时正在使用您的应用程序的用户的数据时,这非常有用。当用户离开应用程序并且他/她的会话到期时,内存将被释放。您不必手动清除任何内容。
Session使用服务器的内存。只要你有足够的内存并且你不在服务器集群上,这就行得很好。内存很快,因此在会话中获取和设置数据非常快,并且使用零网络带宽。
已经说过,在我的一些应用程序中,我将会话配置为使用SQL。它与直接使用数据库基本相同,但我不必处理DAL ...只需让框架适合您。