ACE 过于复杂,甚至比它试图封装的对象更复杂。
(这里的代码行数均为 wc 命令的粗略估计。)
ACE 5.7 自身(不含 TAO 和 CIAO)有 30 万行 C++ 代码(Douglas 自己给出的数据是 25 万行,可能指的是略早的版本),这是一个什么概念呢?我们来看 TCP/IP 协议栈本身的实现有多少行:(均不含 IPv6)
TCPv2 列出的 BSD4.4-Lite 完整 TCP/IP 协议栈代码有 15,000 行,其中 4,500 行 TCP 协议,800 行 UDP 协议,2,500 行 IP 协议
Linux 1.2.13 完整的 TCP/IP 协议栈有 2 万多行 (net/inet)
Linux 2.6.32.9 的 TCP/IP 协议栈有 6 万多行 (net/ipv4)
FreeBSD 8.0 的 TCP/IP 协议栈有 5 万多行 (sys/netinet, 不含 sctp)
换句话说,ACE 用 30 万行 C++ 代码“封装”了不到 10 万行 C 代码(且不论 C++ 代码的信息密度比 C 大),这是不是头重脚轻呢?我理解的“封装”是把复杂的东西变简单,但 ACE 好像走向了另一个方向,把不那么复杂的东西变复杂了
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Solstice/archive/2010/03/10/5364096.aspx