Dcom三层结构的多用户冲突问题?(45分)

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

biggo

Unregistered / Unconfirmed
GUEST, unregistred user!
Dcom应用服务器程序,采用MultiInstance/Apartment线程方式。问题是这样的:
应用服务器定义了接口A,接口A根据传递来的参数,对数据模块中间的某个公用DataSet有增加、删除和修改操作。
实际运行情况如下:
有两个用户甲和乙,他们刚好同时使用接口A修改数据库数据。
甲根据传递的参数,修改了DataSet的某些数据,刚好在提交数据保存之前,乙也修改了DataSet的某些数据,
那么甲在提交保存数据的时候是提交的甲的数据还是乙的数据?
结果估计有三种:
1,产生多用户冲突,甲提交的数据是乙修改的内容。
2,应用服务器本身能自动调节这种冲突,在甲没有使用完DataSet的时候,乙用户排队等待甲使用完毕,才会使用该DataSet,所以冲突没有发生。
3,在甲乙同时调用接口A的时候,应用服务器实际上在两个线程中间产生DataSet的一个副本,甲乙双方在使用的时候互不冲突,是最理想的情况。
现在请教下大家,在实际使用中间,到底结果是哪种呢??
如果不是第2种或者是第3种,怎么解决冲突问题,难道在接口A中不能使用共用的DataSet,而要把DataSet直接定义在接口A的内部?
 
Delphi 有 Session 这东东,不过我在开发三层的时候都没有使用
好像没什么区别
对于你的问题
我在实际应用上没有深入研究,不过开发人员都认为是第 3 种情况,
就是每个登录用户都拥有自己的线程,互不冲突。不过,在程序的公共变量
的使用上反映的刚好相反,
我认为你最好在程序中加判断,防止出错
 
后退
顶部