目前存在外部服务A、B、C、D、E、F,多个客户端会请求外部服务。
目前想在客户端和外部服务中间挂接一个代理服务,
将客户端的所有请求统一由代理服务与外部服务来进行通讯交互,最后将结果返回给客户端。我目前的想法是:
1、将客户端得各种请求都规范为统一的协议包,回报结果也规范为统一的协议包。
2、中间代理服务在线程中实现与外部服务的通讯。(工作线程池化)
3、中间代理服务中维护A、B、C、D、E、F服务请求队列,当客户端请求发上来后按照服务放置到对应的
队列中,同时在线程池中获取一个工作线程,将此队列指定给线程,由工作线程遍历队列处理直至队列中无请求。
4、结果返回给客户端由单独的线程进行打包回送。注:准备用 clientsocket/serversocket实现。请大家针对这个实现给些建议和指点,本人对网络通讯服务不是很熟悉。

解决方案 »

  1.   

    1.在你的传输协议上,有你自定义的协议包,定义好结构体就搞定.
    2.在clientsocket/serversocket 采用飞阻断方式,基本上没有太大的问题.
       如果采用TCP传输方式,需要注意的是有可能一个客户端的多个请求会在一个TCP帧中出现.要做好多条数据协议的解析.
    3.线程方面注意好同步.
      

  2.   

    协议的话,确实按照你的需求,自定义结构进行传输是最好的,另外就是多线程的线程同步,不过第二点,个人觉得增加请求队列和线程池改ISAPI .DLL可能会好点,不过你说了clientsocket/serversocket,那也就没什么可说的了
      

  3.   

    谢谢,又可以参考楼上兄弟们建议。
    socket非阻塞方式的话是不是容易出现粘包现象。
    再看看其他人的建议
      

  4.   

    人气好少,都没看到僵哥,liuyang大牛给指点,可惜CSDN没办法对发出去的帖子向专家请教。
    也欢迎未提到名的大牛给指点哈。