找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 10016|回复: 11

Proactor框架开发的服务器能否在linux下跑

[复制链接]
发表于 2008-9-10 22:57:29 | 显示全部楼层 |阅读模式
请问一下用Proactor框架开发的服务器能否在linux下跑啊?如能的话性能如何?Reactor框架的服务器在linux下性能如何?我想做一个简单视频服务器(局域网啦),最好是既能在linux下也能在windows下跑的,我应该用什么框架开发啊?奇怪的是如果不能跨平台,我要ACE干什么!
 楼主| 发表于 2008-9-10 22:57:37 | 显示全部楼层
不推荐,因为AIO的原因,Proactor在Linux下面兼容性不够好。不过有改进的非官方版本。
推荐用ACE_Dev_Poll_Reactor,使用方法和Reactor一样。

按你对跨平台的理解,你应该用java去做。
因为不同OS架构的差异,指望一套代码能完全跨平台,还能达到很高性能而且稳定可靠,这难度。。。
 楼主| 发表于 2008-9-10 22:57:45 | 显示全部楼层
我的理解就是ACE就是对不同平台api的封装罢了,觉得对最重要的几种操作系统应该有人把底层的封装做好了吧!这样我同样的代码在不同平台上编译后就应该能跑了,而不用从新再写代码。如果我在window下用ACE写的代码到linux下就不能用了,那我为什么还要花这么多时间来熟悉ACE的那些函数啊类呢?我不如直接用linux和windows下的api写两个版本算了。

再问一下ACE_Dev_Poll_Reactor在windows下能跑吗?是否同样高效?
 楼主| 发表于 2008-9-10 22:57:51 | 显示全部楼层
这个问题,其实C++网络编程的前面的部分,已经解释过了。

用API写,没问题,但恐怕没多少人写得过开发ACE系统的人吧?为何不站在巨人肩上呢?
如果非得要跨平台,那你只能用OS的交集部分,享受不到各个平台的性能优势。

ACE_Dev_Poll_Reactor无法在windows上运行,但改成能在windows上运行的代码,就2、3行而已,顶多加载一个宏定义。
 楼主| 发表于 2008-9-10 22:57:59 | 显示全部楼层
是这样的啊?我的想法很简单啊:做ACE库的人为为各个平台都写一套代码,而提供给我们的是统一的接口,在生成ACE库的时候,根据不同的平台条件编译一下就可以了啊。那么无论在哪个平台,都能做到在当前平台的最优性能。

我觉得ACE的跨平台跟java的跨平台是有本质上的差异的。服务器一般都不用java写,java效率太低了。

这样看来ACE其实对linux的支持并不太好的是吧!
 楼主| 发表于 2008-9-10 22:58:06 | 显示全部楼层
ACE对Linux的支持其实很好。做了很多的工作。
    ACE对网络编程的方方面面进行的“尽量”的接口统一和封装。绝大部分情况下,你用ACE的接口对各个平台的操作语义是一样的。比如socket的收取、发送操作等等。但是如果你选择框架的时候,肯定考虑性能的问题,这就不得不做出妥协了。其实我们看到的差异,基本都是框架在不同的OS平台上实现带来的,是必然的,但是使用ACE,保证我们做出的修改和妥协代价是最小的 - 绝对比我们自己从头做起要好!
    当然,如果有人坚持写代码一定要汇编语言,我也没办法,呵呵。
发表于 2008-9-16 09:26:06 | 显示全部楼层
ACE 5.6 已经完全支持Linux的异步IO,Linux Kernal 必须在2.6以上(2003-11月以后的版本)。但实践检验,Linux的AIO实现实在是不怎么样,而ACE对标准 *nux的实现也不健壮,于是有了非官方实现:

New Proactor implementation for POSIX



Alexander Libman



libman@terabit.com.au, alibman@optusnet.com.au
发表于 2008-10-8 21:29:16 | 显示全部楼层
建议使用Reactor框架。如果你对网络连接数要求不大的话,可以使用ACE在各平台上默认的Reactor内部实现 ,没有必要去指定ACE_Dev_Poll_Reactor等具体实现。具体可以查看《ACE程序员指南》第7章142的内容。如果你写的代码都用的标准C++代码,且不调用操作系统API(改用ACE的OS包装层,ACE_OS域名底下的函数),还有就是不要有linux下不能运行的东西。这样你的代码肯定可以在两个平台跑得呼呼滴。
发表于 2008-10-15 17:22:07 | 显示全部楼层
建议看看sail哥哥的博客,http://blog.csdn.net/fullsail。上面讲了很多在真实项目中碰到的ACE使用问题,很好很强大!l
发表于 2008-11-21 10:02:04 | 显示全部楼层
曾经有个项目的通讯模块用ACE的Reactor模式实现,局域千兆网环境下达到20-30M/s,不知这样的效率如何?
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-11-21 21:35 , Processed in 0.013504 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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