找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3034|回复: 4

虚心请教一个设计上的问题

[复制链接]
发表于 2009-7-13 13:29:38 | 显示全部楼层 |阅读模式
我现在要用ACE做一个数据转发的程序。这个程序既是服务器也是客户端。作为客户端要去连接若干个服务器去要数据(10个左右),又要作为服务器向他的客户端(10个左右)发送从服务器要来的数据,而且是选择性的发送,不是遍历每个客户端发送。选择规则由他从服务器要来的数据再经过解析后决定。如果实现此功能,这个程序的架子怎么搭,用ACE的哪种框架最好。而且还要考虑效率。
发表于 2009-7-13 13:46:28 | 显示全部楼层
楼主的需求定义说明比较笼统,
故而在逻辑设计方面不太好做评论。

至于网络实现,由于并发量不是很大,
因此用proactor与Reactor都差不多。

当然由于是异步,proactor的性能会更好些,
但是上手会比Reactor难度大些。

至于如何选择,主要看楼主目前对哪个框架熟悉了。
如果都不熟悉,那么先看书,在项目中需谨慎引入ACE。
 楼主| 发表于 2009-7-13 14:03:18 | 显示全部楼层
回modern:
1 你说的并发量是不大,但是每个连接的数据量挺大的,从服务器要数据每个连接每秒要过来的数据大概在5000,如果有多个连接,汇总在这个中转程序缓存队列中的数据就已经上万了,还要从这个队列中取出数据,然后再分析发向哪个下级,这个效率又如何保证啊。假设分析的时间很短,但是这种汇总再转发的机制效率也高不了啊。

2 你说的在项目中谨慎引入ACE。现在就是在做项目,从来没接触过ACE,但是项目要求用ACE。我现在是赶鸭子上架啊。。
发表于 2009-7-13 14:26:39 | 显示全部楼层
个人认为,如果你的服务器就做这么一件事情的话,
差别应该不大,因为很多时候所谓性能差都是差在设计上了,
我认为即便在windows下Reactor使用的好的话处理能力也可以满足日常需求,
当然这需要跟你的需求定义,通过测试数据说话。

谈性能的话,windows下proactor是首选,linux下Dev_Poll_Reactor是首选。
不过问题在于proactor上手不是很容易,使用得当的话,这可能得多花费你一段时间,
如果楼主对于网络编程不是很有经验,而且赶时间的话,
建议使用Reactor的,毕竟上手容易一些,调试也比较容易。

最后,性能的事情,最好让系统分析师架构师去考虑,
如果你不是这样的角色,那么首先考虑降低实现功能的复杂性吧。
 楼主| 发表于 2009-7-13 14:44:42 | 显示全部楼层
好的,谢谢modern,接受你的意见。我对网络编程实在是不熟,以前是做播放器的。。。。没办法,往死里看书吧。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-23 18:14 , Processed in 0.021235 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表