1. 否定WebConfig的解决方案...因为User对象要根据登录者的不同产生各自的User对象。2. 为什么要把User对象放到Session中: 验证通过以后,通过public static User User.Find(string account)返回一个User对象,这个 User对象,只具有read-only的属性,比如说: public class User { ... private string userName;
public string UserName { return this.userName; } } 这样,避免在登录后还可以修改User对象的属性. 把User对象放入Session中: User user = User.Find("xport"); Session["User"] = user; 以后就可以直接转型来访问好了,不用再访问数据库了: User user= (User)Session["USER"]; string userName = user.UserName; 请大家继续帮忙...
当然forms验证也可以
为什么要把整个User对象放到Session中呢?
把UserID,UserName,UserType等常用信息存放到Session 中就可以了,不常用的在用的时候到数据库中找就好了!
User对象,只具有read-only的属性,比如说:
public class User {
...
private string userName;
public string UserName {
return this.userName;
}
}
这样,避免在登录后还可以修改User对象的属性.
把User对象放入Session中:
User user = User.Find("xport");
Session["User"] = user;
以后就可以直接转型来访问好了,不用再访问数据库了:
User user= (User)Session["USER"];
string userName = user.UserName; 请大家继续帮忙...
我们的目标是写质量高,效率高的代码,但是有些问题我认为是可以增加硬件的配置来解决的。再说session并不是效率差的不能用.
楼主可以用测试软件 模拟3000个用户并发, 看看资源有多少?
那最好是用session
但是楼猪是把整个user都放入session中, 那就没有必要了,USER信息不是在每个步骤都要用的 所以建议还是只存储 主键 user_id
需要用的时候 利用这个user_id 实例化一个对象即可。。
Session也可以用数据库来实现的,但如果Session不是由数据库实现,那么是不会存在序列化的性能开销的。因为在系统就是利用一个Dictionary保存SessionID、Session值对的。