使用WCF开发的分布式系统(Winform),可以很轻松地将程序分成服务器端程序及客户端程序。客户端程序通过向服务端程序请求,服务器端程序向数据库请求,从而实现了客户端与数据库的隔离。
但这样的情况下导致多个客户端使用同一数据库连接,产生的问题是,不同的客户端在数据库中产生的事务发生了相互影响,如客户A的操作在数据库产生的了Begin tran,客户B的操作在数据库触发了Rollback tran。这样客户B就把客户A的事务回滚掉了。
请问大神们对这样的情况下是怎样处理的?
我没有让客户端连接数据库,我的意思是,不同的客户端连接相同的服务器程序,而服务器端程序运行的时候就只创建一个数据库连接的。这样间接来说就是不同的客户端使用了相同的数据库连接了。不知我这样的理解对不对。
WCF程序 多个客户端使用同一数据库连接产生的问题
答案:2 悬赏:80 手机版
解决时间 2021-02-21 02:10
- 提问者网友:椧運幽默
- 2021-02-20 15:15
最佳答案
- 五星知识达人网友:不甚了了
- 2021-02-20 16:45
既然你用WCF,为什么还让客户端连接数据库呢?
重新设计一下!
客户端只知道服务器的存在,数据库对客户端应该是透明的;
客户端只是想服务器发出请求,至于该请求的处理是对于数据库还是内存或者其他,客户端不需要知道,只要得到服务器的处理结果就可以。
另外,无论客户端还是服务器,用一个数据库连接是不应该的,遇上多线程就麻烦了:不做同步处理会产生错误,做同步处理效率又不行……
------------
你数据库连接使用不对,如果只用一个连接,别说事务,就是并发的普通处理都可能异常;应该每个请求都创建连接、打开、关闭、释放。
重新设计一下!
客户端只知道服务器的存在,数据库对客户端应该是透明的;
客户端只是想服务器发出请求,至于该请求的处理是对于数据库还是内存或者其他,客户端不需要知道,只要得到服务器的处理结果就可以。
另外,无论客户端还是服务器,用一个数据库连接是不应该的,遇上多线程就麻烦了:不做同步处理会产生错误,做同步处理效率又不行……
------------
你数据库连接使用不对,如果只用一个连接,别说事务,就是并发的普通处理都可能异常;应该每个请求都创建连接、打开、关闭、释放。
全部回答
- 1楼网友:傲气稳了全场
- 2021-02-20 17:03
期待看到有用的回答!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯