找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 6999|回复: 4

转 ACE网络框架学习体会

[复制链接]
发表于 2010-7-27 11:57:03 | 显示全部楼层 |阅读模式
ACE网络框架比较有名,30万行左右代码,开发了10几年,数十人的核心开发团队加之数千人的测试队伍,可以说想不开发出好东西也难。



所以要说这个框架好,那好的原因实在太多,最主要的好在于两条:“跨平台(支持几十种平台),可复用”,所以今日说说我认为他不足的地方,以作为这段时间学习它的一个总结:



国内有三本和ACE框架有关的书,我都读了,整个加起来读了能有10几不到20天,读完后我分别写了一个比较简单的Reactor-Connector框架的客户端程序和一个Proactor框架的服务器程序,以作为对所学知识的运用。发觉用ACE写服务器端程序比写客户端程序顺手。顺便把服务器程序测试了一下,在本机上用client连接,服务器支持的最大连接数为16160,程序逻辑问题,没出现异常情况,基本满意。


整个觉得这个框架想流行起来有一定难度:

(1)复用类和框架是它所提倡的,表面看,这些框架简化了程序开发,让开发人员能够专注于解决问题,但真正用这些框架开发程序的时候,要想开发出稳定的程序,就不可避免的要对框架深入理解,结果就深入的学进去了,这一学,哎呀发现它还的源代码还挺复杂,结果,违背了研究它的初衷(简化开发)。

(2)封装和复用是这几年流行的开发术语,封装和复用也许是不错,是好用,但对于学习的人来讲,真的很难学,这么多个类结合到一起来,让人一时半刻不好掌握。

(3)要想学好ACE的开发需要很好的网络开发基础,如果你没有网络开发基础,想通过学习这个框架来使自己能够省更多力气就可以开发网络程序,我想恐怕您会失望。
(4)ACE框架不够灵活,有时候想改一些东西,但涉及到改动ACE源代码不免挠头,我觉得他的代码还是挺难看的,我们每个人的生命有限,时间有限,有多少时间坐那里读几十万行代码。

(5)ACE框架把各平台的应用又统一封装了一下,和专有平台代码比,我认为效率还是要低一些,尽管目前计算机运算速度飞快。



原来我是计划用 ACE框架作为以后开发网络应用的框架,后来想了想,还不如用传统的开发直观,可控性强,因为我的开发基本不跨平台,好了,就总结这些先。
http://blog.sina.com.cn/s/blog_4dde9da10100g91q.html
发表于 2010-7-27 13:47:15 | 显示全部楼层
根据实际情况抉择,各有利弊。没有包打天下的东西的。
发表于 2010-7-27 22:45:04 | 显示全部楼层
本帖最后由 dwh0403 于 2010-7-27 22:47 编辑

转 ACE网络框架学习体会


ACE网络框架比较有名,30万行左右代码,开发了10几年,数十人的核心开发团队加之数千人的测试队伍,可以说想不开发出好东西也难。

ACE的确是个好东西,多分享代码你会受益匪浅。

所以要说这个框架好,那好的原因实在太多,最主要的好在于两条:“跨平台(支持几十种平台),可复用”,所以今日说说我认为他不足的地方,以作为这段时间学习它的一个总结:



国内有三本和ACE框架有关的书,我都读了,整个加起来读了能有10几不到20天,读完后我分别写了一个比较简单的Reactor-Connector框架的客户端程序和一个Proactor框架的服务器程序,以作为对所学知识的运用。发觉用ACE写服务器端程序比写客户端程序顺手。顺便把服务器程序测试了一下,在本机上用client连接,服务器支持的最大连接数为16160,程序逻辑问题,没出现异常情况,基本满意。

这三本书我一直在看,应该至少不下两遍,而且时间也拉得更长,目前已经1年多了,不断实践你会发现对书中的诸多细节你真的没有理解。


整个觉得这个框架想流行起来有一定难度:

(1)复用类和框架是它所提倡的,表面看,这些框架简化了程序开发,让开发人员能够专注于解决问题,但真正用这些框架开发程序的时候,要想开发出稳定的程序,就不可避免的要对框架深入理解,结果就深入的学进去了,这一学,哎呀发现它还的源代码还挺复杂,结果,违背了研究它的初衷(简化开发)。

复用和框架不仅仅是ACE所提倡,ACE提供了很多好的框架,看你是否需要,有很多东西是不需要一定去阅读源代码,有些时候仅仅看看函数的注释基本上就能明白了,如果你想深入研究并学习自己实现,那么阅读源代码是必须的,由于跨平台的原因读取代码来有些时候是很痛苦的。

(2)封装和复用是这几年流行的开发术语,封装和复用也许是不错,是好用,但对于学习的人来讲,真的很难学,这么多个类结合到一起来,让人一时半刻不好掌握。

封装的好处就不多讲了,如果代码不能封装很多时候你就不能复用,代码开发越多你体会就会越深。

(3)要想学好ACE的开发需要很好的网络开发基础,如果你没有网络开发基础,想通过学习这个框架来使自己能够省更多力气就可以开发网络程序,我想恐怕您会失望。

想开发高效的网络程序,你不能懂得基本的网络知识,那么就如你去建房子而不去打地基一样,网络对于一个编程的人员来讲应该值得去学习的,我见过N多人对网络丝毫不懂而又不愿意花几天时间去学习的人,反复出错和调试的时间甚至远远大于了去学习的时间。

(4)ACE框架不够灵活,有时候想改一些东西,但涉及到改动ACE源代码不免挠头,我觉得他的代码还是挺难看的,我们每个人的生命有限,时间有限,有多少时间坐那里读几十万行代码。

由于跨平台的确有些难以阅读,宏定义到处飞,一般来讲你不需要大规模修改ACE源代码,里面的很多类的函数重载一下基本上就可以了。

(5)ACE框架把各平台的应用又统一封装了一下,和专有平台代码比,我认为效率还是要低一些,尽管目前计算机运算速度飞快。

ACE的封装对性能的损耗不是太大,而且在不同平台上也尽量使用了各自平台的特色,如果你愿意牺牲跨平台,你一样可以使用ACE达到你需要的专有平台的效率。

原来我是计划用 ACE框架作为以后开发网络应用的框架,后来想了想,还不如用传统的开发直观,可控性强,因为我的开发基本不跨平台,好了,就总结这些先。



如果你使用原始的传统API开发,而没有使用ACE或者使用其他的开源类库,甚至你自己进行了封装,只能说明你开发的程序代码的大多数时间消耗在了重复的发明上,而且也把自己诸多可以用来休息的实际消耗在了调试错误上。
发表于 2010-8-1 03:22:26 | 显示全部楼层
说的有些道理, 我的个人感觉是, ACE学起来很吃力, 用起来也很吃力. 看那么多代码也不太现实.
还是asio简单易用.
发表于 2011-2-16 09:38:07 | 显示全部楼层
学起来的却不轻松啊,但还是基本理解了
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-3-29 07:52 , Processed in 0.018804 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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