WCF连接数据库方式的疑问

我现在要实现一个以WPF作为客户端,WCF作为服务端连接数据库并查询得到DataSet返回客户端的功能。
但是由于数据库有访问数量的限制,如果访问人数过多可能会出现连接失败的情况,所以不能直接用请求-响应模式来做。
本来我是打算把所有的数据库查询语句放在MSMQ里面,然后服务端读取进行查询然后返回,但是netMsmqBinding只支持单程传输不能双工,所以现在不知道该怎么把结果反馈回来。
请各位前辈提提意见,是否我们的设计思路有误不需要用消息队列?还是有什么其他的解决方案?

4个回答

你使用了WCF来通讯又怎么使用消息队列呢?首先要明确一个问题,你所说的“访问人数过多”到底有多多?数百个还是上万级别还是更高的级别?如果只是数百个级别的你只要在服务端使用一个队列来缓存并发的请求,简单的.net框架自带的Queue以及线程安全的Concurrent这两个数据结构就能够满足你的需求。如果你所谓的所是上万级别或者更多的你可以使用消息队列来通讯,那就根本用不到WCF了,如果消息队列只支持单工通讯模式那么你可以给每个报文做标记,只要保证你发送的一次请求能找到对应的返回就可以了

qq_33299814
qq_33299814 直接访问数据库肯定是不行的,因为这样的话数据库安全性、完整性得不到保证,你说的这个用队列缓存并发的请求可能是能符合我的需求,我用你这个思路试一试
大约 2 年之前 回复

另外如果你的服务端只是简单的进行查询然后返回数据,没有任何的业务逻辑处理,那么你为什么还要这个“服务端”呢?你的客户端直接去访问数据库不是更加方便直接吗?

为什么直接访问数据库的话数据库的安全性完整性得不到保证?如果你这个客户端的功能主要是为了展示数据,那最简单的处理方法是你这个客户端也不要了,直接做成web项目,一个浏览器就搞定了,比你这个客户端+服务端还要考虑通讯的方式方便快捷的多

qq_33299814
qq_33299814 目前初步的功能是做显示数据,但是后期肯定要继续发展的嘛。至于安全性方面,就像https://blog.csdn.net/chelen_jak/article/details/8521701个帖子里面说的,将访问数据库的操作用服务的方式发布,可以避免一些违法操作。
大约 2 年之前 回复

netTcpBinding

qq_33299814
qq_33299814 如果用netTcpBinding的话就应该用不了MSMQ了是吧?
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐