求实现服务端软件的思路

jhfan001 2012-08-23 02:43:00
主要功能是同时服务多个客户端(可能上百个),服务内容为对数据库增删改查。
我个人的思路是:通过socket连接客户端--》接着为各个客户端(socket)创建一个线程--》接着通过ADO操作数据--》最终将所得数据传到客户端。
对于以上的思路有几点担心的问题:
1,socket采用什么样的工作模式模式。
2,是创建一个线程池供大家使用还是需要的时候在各自创建。
3,ADO多线程操作数据库是否安全,会不会导致内存泄露。


请教各位是如何设计这样的一个服务端软件呢,给个大概思路,能写详细点最好了。同时对我的自己的思路能否给些建议或者评价。 谢谢!七夕节快乐!
...全文
116 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Joseph-Growth 2012-08-23
  • 打赏
  • 举报
回复
select或者IOCP模型两个考虑一个。
我曾今写过为每个客户端维护一个线程,代码很好写,但是经常会有意想不到的问题。
4楼主意不错,是让你将“增删改”操作不要在数据源上操作,先在一个副本中“增删改”之后,然后统一提交到数据源上。
jhfan001 2012-08-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
1.服务器端,Select模型是不错的选择,还不用考虑多线程
2.线程池没必要,这东西存在感觉最主要是霸占资源,就是为了不让其他程序抢占你的资源,导致你程序不能用,资源充分的情况下,不用考虑。
3.ADO,你啥数据库呢?说一下。

关于增删改互斥:搞个定时提交吧,这段时间内容用户对数据库的操作弄成一个集合看看
[/Quote] 用的是 sql2005数据库 “关于增删改互斥:搞个定时提交吧,这段时间内容用户对数据库的操作弄成一个集合看看”这个不大理解是什么意思
看不见的裂痕 2012-08-23
  • 打赏
  • 举报
回复
1.服务器端,Select模型是不错的选择,还不用考虑多线程
2.线程池没必要,这东西存在感觉最主要是霸占资源,就是为了不让其他程序抢占你的资源,导致你程序不能用,资源充分的情况下,不用考虑。
3.ADO,你啥数据库呢?说一下。

关于增删改互斥:搞个定时提交吧,这段时间内容用户对数据库的操作弄成一个集合看看
  • 打赏
  • 举报
回复
增删改的互斥 别的我不了解 至少oracle 或者 mysql都有自己的锁
  • 打赏
  • 举报
回复
1.多线程 + 阻塞模式 这种方式实现最简单 效率也不错 不过就是频繁创建销毁线程比较恶心
2.对于百级的客户端 并发不是很大的情况下 WSAAsyncSelect完全可以满足 这种方式的好处是异步接收消息 而且不需要额外线程 不过性能瓶颈不在带宽 因为这个是靠界面消息
3.可以考虑用WSAEventSelect 或者 select模型 不过这种模型每次轮询的个数有限制 即使你从新定义了FD_SIZE也会有性能瓶颈
4.就剩下完成端口了 不过对于你这个级数的客户端 和 并发量 完成端口就是浪费脑细胞

另外 创不创建线程池我认为是无所谓的 操作数据库我建议你创建一个连接池 这个资料太多了 我就不说了
希望帮到你
快乐鹦鹉 2012-08-23
  • 打赏
  • 举报
回复
数量肯定是要控制的,否则你可能承受不了。我更担心的是这些增删改的互斥

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧