none
关于三层开发 RRS feed

  • 问题

  • 我用三层开发结构开发一个办公系统,其中数据访问层和业务逻辑层全为静态类,在首页面使用ajax无刷新每隔10秒显示用户的新消息数量,一个人登录系统没有问题,可一旦多人登录后就会提示数据库连接错误,系统马上会崩溃,想知道是否是因为‘数据访问层和业务逻辑层全为静态类’的原因还是其它什么原因?

    2010年4月2日 14:57

答案

  • Hi,LZ你好!

    我用三层的时候也和你一样!据访问层和业务逻辑层全为静态类,我认为全部用静态类不会影响到数据库连接错误,使用静态类第一次加载应该比较慢,全部加载到内存中,后面访问就要快些!耗内存可能引起内存溢出

    后来有人建议全部用对象的实例来调用方法!可以及时释放内存! 其实用不用 静态和实例 ,哪种好我现在也不分不清楚! 我之前也发帖问了究竟何时使用静态类,何时使用实例! 但没有得到满意的答案!

    不过你的问题我想不是“‘数据访问层和业务逻辑层全为静态类’”的问题,应该是你数据访问层访问数据库那里的问题! 如 connection没有及时关闭,sqldatareader没有及时关闭,他会报 “数据库连接超时”或者"数据库连接数超过最多连接数"

    以上为个人意见!希望对你有帮助!

     

     

     

     


    Anything Is Possible !
    2010年4月3日 10:52
  • up

    我也遇过类似问题,都是由于静态变量惹的货

     

    2010年4月3日 15:34
  • 多谢各位, 我改了,确定是静态类的问题!

    2010年4月5日 15:06

全部回复

  • 我想你的问题可能是由于静态变量的问题。

    需要注意静态数据是全局静态的,这个全局共享不仅是指你的应用程序全局静态,而且在你的所有访客也是静态的。也就是说,你对某一静态变量所做的更改会被体现到所有用户会话的数据中。

    如,你用一个静态变量存储已登陆的用户名:public static string UserNameLogedin;   当A访客登陆时,它的值将是A,这可能符合你的意愿;但当访客 B 登陆时,这个值会被改 B ,而且注意此时,在A的会话里,此值也已经被改成了 B。

    针对此情况,用静态变量来存储网站的访客是可以的,但用它来保存一个与某一实例类的数据时就不可以了。


    Extension of New Channels 积淀孕育创新,智慧创造价值
    2010年4月3日 10:41
  • Hi,LZ你好!

    我用三层的时候也和你一样!据访问层和业务逻辑层全为静态类,我认为全部用静态类不会影响到数据库连接错误,使用静态类第一次加载应该比较慢,全部加载到内存中,后面访问就要快些!耗内存可能引起内存溢出

    后来有人建议全部用对象的实例来调用方法!可以及时释放内存! 其实用不用 静态和实例 ,哪种好我现在也不分不清楚! 我之前也发帖问了究竟何时使用静态类,何时使用实例! 但没有得到满意的答案!

    不过你的问题我想不是“‘数据访问层和业务逻辑层全为静态类’”的问题,应该是你数据访问层访问数据库那里的问题! 如 connection没有及时关闭,sqldatareader没有及时关闭,他会报 “数据库连接超时”或者"数据库连接数超过最多连接数"

    以上为个人意见!希望对你有帮助!

     

     

     

     


    Anything Is Possible !
    2010年4月3日 10:52
  • up

    我也遇过类似问题,都是由于静态变量惹的货

     

    2010年4月3日 15:34
  • 多谢各位, 我改了,确定是静态类的问题!

    2010年4月5日 15:06