【讨论】intraweb7中,数据连接控件应该放在哪儿!!!(100分)

  • 主题发起人 主题发起人 blave
  • 开始时间 开始时间
B

blave

Unregistered / Unconfirmed
GUEST, unregistred user!
偶用intraweb做了一个单位的办公管理系统,由于和原来的asp系统融合,数据库设计并
不合理完善,所以在月初的考评中,许多人同时操纵数据的时候,由于数据并发的问题,
使应用程序经常崩溃,究其原因,是因为偶把数据连接控件adoquery放置在的datamodel
中了,正因为如此造成了程序的崩溃。
现在偶想是不是应该把adoconnection控件放置在DM中,而把adoquery控件放置在
iwusersession中,在调用的时候采用usersession.adoquery.close....来操纵数据库,
这样是不是就可以避免大容量过滤数据库不置于产生数据并发错误了,请高手进行讨论,
小弟不胜感激感激.
这两天就要改写代码,请做过的朋友给点提示,原来为了出来并发的问题,偶连动态为
每个用户创建adoquery的方法都试了,不敢想象,300个adoquery在一个页面上会出现什
么情况。
另外,对于intraweb中,多用户时性能到底如何,有没有朋友进行过相关测试,我的系统
中最大并发用户大约有100人,感到intraweb的处理速度明显减慢,当然这也可能是由于
编程中的硬伤造成的,未必是intraweb的问题。
 
你的程序服务器如何设置,如用户模式和线程?
 
调用asp中的session,来确认登录用户
 
你应该为每一个Session带一个DM,且DM中关键是ADOConnect,
ADOQuery可在相应页面里放置即可,
也可动态创建,
但我从事没有碰到过要同时创建300个adoquery的情况,
一个原则,用完即放,
比起占用数据库连接这样的内存大户来说,
动态创建控件的内存消耗要小多了!
 
在创建时选用带Session及DM的项目创建方法,然后将ADOConnect等放在Session下
 
你的DM肯定用得不对。

IW自己的DEMO里用DM也用得不对。它没有释放。如果你按照IW的DEMO照抄,就会在访问的人或次数一多,建立了巨多的DM而没释放,造成程序消耗的内存持续增长。

但如果程序写得正常,消耗内存持续增长也不会崩溃啊。除非你真的把系统资源消耗完了。

曾经我写的程序消耗了200M内存,还是照样运行的。当然我发现内存消耗持续增长后,就开始找原因,最终发现是我抄它的DEMO里,没有释放DM造成的。

每个DM是由SESSION来生成的,每个SESSION释放的时候,要释放掉DM才行。

而每个SESSION是在你设置的ServerController里的TimeOut的时候自动释放的。
 
是放在USERSESSION 调用的时候调先用SERVERCONTROL单元,然后用USERSESSION.ADOQUERY
 
后退
顶部