本帖最后由 VisualEleven 于 2011-11-15 10:07:55 编辑

解决方案 »

  1.   

    1:可以采用线程池实现。
    2:异常处理好
    3:没有见过。
    4:c++吧,
    5:tcp socket封包,解包,查询,返回,封包,解包,结果
      

  2.   

    原先的系统是来一个客户端就和数据库服务器创建一个新的连接,这种动态创建必然让服务器资源消耗很大。
    但是,我有点纳闷,60个客户端,怎么会产生近百个进程?原先的客户端不会傻到一个数据库操作就开一个连接吧?而不是一个客户端一个链接,所有这个客户端的操作都只用一个链接?如果你要加个Server,多线程的话,必然同时需要一个数据库连接池,否则的话,仍然无法改变动态创建数据库链接的毛病,也可如1楼的,线程池,用了线程池之后,每个线程中预先创建好一个链接,这个时候就不需要额外的连接池,只是不够灵活,连接池的数量等不受控制。
      

  3.   

    连接数多的话可以用IOCP,不用那么多线程
    IOCP可以看看http://blog.csdn.net/piggyxp/article/details/6922277
      

  4.   

    IOCP不是哪里都用的,在这里绝对是牛刀小用,而且复杂性估计会搞死别人,lz的主机最多300多台,而且常用的只是50-60台,这样的规模,用IOCP,好吧,大家都用导弹打鸟吧。
    60台左右的规模,多线程解决方案是最简单的,当然,你也可以用像select之类的异步,只是建议而已。
    但是,线程池+连接池,效率应该会不错了的
      

  5.   

    相当有道理,除非你想一边工作一边学习,不然还是哪个简单用哪个吧...
    在这里多线程加异步SOCKET就可以。
      

  6.   

    Linux已经完整支持多线程了.这种产生新进程的开发模式,已经太老旧了.
      

  7.   

    可以把数据库访问这块单独做成模块,dll或lib的,向外提供接口,外界通过这个模块直接得到某个表的以一条记录,或多行记录,通过这个模块编辑删除等等。
    协议内容,可以先用结构体把表或视图的内容定义出来。这样的话,解析单行记录得到一个结构体,多行记录的用链表。
    定数据结构,然后算法,你的东西就出来了。
      

  8.   

    CSDN上有很多类似的问题,lz可以搜一下。还有,你要实现什么样的功能要具体说一下
      

  9.   

    1.如果这么多客户端同时访问Server,S为每一个客户端创建一个进程并发实现还是S端只用一个进程来异步实现?
    一般是进程数或者线程数要少于客户端数,否则你的设计不是scallable.
    多进程多线程的设计都有,比如postgres就是多进程的。2.这样子做的话,S端会不会因为程序架构的不严谨会崩溃掉,还有这个S能用大内存吗?
    当然会。
    Server端可以设计为64位程序部署在64位系统上。3.有没有类似的框架,就像B/S下的IIS和Tomcat那样,拿来直接能用?
    ACE TAO, gSOAP4.如果可以,考虑到软件的安全性,如不能被反编译,C#和C++哪个实现起来更好点?
    用你自己熟悉的技术5.如果用上边语言实现,那么C和S端用那种协议或技术来实现通讯简单又安全?
    一般会采用中间件技术,比如CORBA (ACE TAO) 或者 webservice (gsoap)
      

  10.   

    还是用B/S吧,asp.net功能足够强大,关键是框架已经在那里了,只需集中精力开发具体功能。如果为了学习提高,当然用c/s更你有帮助。
      

  11.   

    现在就是纯粹为了学习,所以要用C/S,B/S的客户端功能太弱...
      

  12.   

    这个性能瓶颈在频繁的操作数据库上,服务端为每一个客户端开一个线程处理那不还是一样频繁的创建/断开数据库,主要优化应该集中在 线程池 和 缓存 上了,上面有提到的webservice的话公司内部150用用差不多没问题,简单到是简单,安全貌似还真安全不到哪里去,反正纯粹为了学习,为了性能的话C/S结构直接自己写http服务器或者那个大家都吹捧的IOCP
      

  13.   

    3.有没有类似的框架,就像B/S下的IIS和Tomcat那样,拿来直接能用?你可以选择用DELPHI的MIDAS架构来开发. 使用很简单, 但你必须懂得用. 效率上, 200人左右是可以支持得了的.