书评:C++网络编程,卷2 by Matthew Wilson

原创 2003年04月30日 16:11:00

书评:C++网络编程,卷2 by Matthew Wilson <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

Title:    C++ Network Programming, Volume 2: Systematic Reuse with ACE and Frameworks
Authors: Douglas C. Schmidt and Stephen D. Huston
Publisher: Addison Wesley Professional, 2002
Pages: 384
Price: $39.99

 

中文版
书名:《C++网络编程:基于ACE和框架的系统化复用》
译者:马维达 http://www.flyingdonkey.com/
出版社:华中科技大学出版社
出版时间:待定(已完稿)
价格:待定

 

  由Douglas SchmidtStephen Huston撰写的C++ Network Programming, Volume 2: Systematic Reuse with ACE and Frameworks,是他们的C++ Network Programming, Volume 1: Mastering Complexity with ACE and Patterns的续篇。卷1聚焦于将低级的、特定OS的网络原语封装和抽象进ACE OS适配层和C++ wrapper facade(包装外观)中。卷2建构于这一基础之上,所处理的是框架的各种要点,以及怎样将ACE用于系统实现——这是通过增强并扩展卷1介绍的日志服务示例来完成的。

 

  第1章充当了全书、以及ACE所采用的模式/框架方法的引论。本章的进展艰难而缓慢,直到两位作者开始讨论一些细节问题;我的精神上的迷雾因此而升起来,我已经等不及要读第3章。

 

  第2章通过全面地涵盖服务、服务器,以及配置的某些细节问题,继续引介一些基础性的概念。服务被表征为持续时间短的 vs. 持续时间长的、内部的 vs. 外部的、有状态的 vs. 无状态的、分层的 vs. 整体式的。作者给予了服务器与配置以类似的深入论述。本章的进展也有一点艰难,然而却也有趣而有用。

 

  从第3章往后是本书的实际内容部分,涵盖了ACE中的各种框架。从这时起,我开始感觉到真正的兴趣。每一个框架——包括Reactor(反应器)、Service Configurator(服务配置器)、Task(任务)、Acceptor-Connector(接受器-连接器),以及Proactor(前摄器)——都得到了全面的论述,并且结合了真实世界中需要解决的问题、框架的设计,以及对可移植性和效率所带来的必要约束或短处的确认。

 

  最好的一章是最后一章:关于ACE Streams框架的第9章。通过演示怎样利用ACE_TaskACE_ModuleACE_Stream类、将重要的功能集成进系统中,本章展示了ACE的效用和力量。这是强大、几乎plug-and-play的网络技术,有助于回答我们所可能有的任何疑问,比如:是否要投入并非微不足道的精力来学习ACE

 

  在讨论各种OS时,两位作者并无偏袒,这让我觉得愉悦和新鲜(在这个问题上,对Timer类、select(),以及ACE_WFMO_Reactor类的描述特别有趣)。再联系到他们在实现ACE及对其进行描述时所采取的注重实效的方法,这样的公正具有极大的吸引力,并且表明了作者的信心:他们的确创造了一种高质量、且不依赖于平台的解决方案。

 

  总的来讲(尽管并非全部),本书的风格很好。作者大量使用了UML,这促进了本书的连贯性(尽管这也使得我多次冲向我的书架)。而在缺点方面,字体似乎太大了,特别是在图中,以及所摘录的代码中;这是我第一次读到这样一本书,它好像是从许多裂缝中爆发出来的。尽管作者(或是他们的编辑)勉力使代码不跨页,我还是希望能得到更多的东西(当然,书籍不可能像1600 * 1200的屏幕一样,但如果使用较小的字体,就可以排印出更多的代码。)

 

  在书中有相当多(61)的副栏(Sidebar),它们提供了让人愉悦的、小小的信息片段。但是,这也有一点让人分心。因为它们有那么多,并且比正文更容易阅读,它们太容易让人把思路给丢掉了。哦,你最好喜欢和reify(使……具体化)这个词呆在一起,因为我从未见过哪本书里面有这么多reify

 

  书中各章还有一个毛病,它们总是在反复地强调本书的一个基本观点,即复用是好的,ACE推动了复用。这没有必要,因为前两章已经清楚地表达了这一观点。

 

  索引很好,参考文献让人印象深刻;我的书籍“Wish List”的大小因此而翻了一番。而术语表非常的好。所有的书籍都应该有这样的术语表!

 

  很奇怪,尽管本书是由Addison-Wesley出版的,书中有一些图表的绘制很差。比如说,方框和方框间的线段刚刚能让人辨认出来。而且,还有一些制作上的错误:比如以“ACE_Service_uscoreHandler”开头的副栏标题,应该是“ACE_Service_Handler”。但愿我所拥有的只是赠阅版,而你的书不会有类似的问题。

 

  总的来说,要想不对本书留下深刻印象是不可能的(如果这不是过誉的话)。我发现自己马上有了一种强烈的愿望,想要更多地(重新)阅读关于模式的书籍资料(更不用说在参考文献中的那些宝贵财富),并且想要冲出去使用ACE开始开发一个分布式项目。我期望着能够在真实的环境中检验ACE所声称的:在生产率上获得极大的收益,而又不牺牲灵活性和(特别是)效率。引用第1章的总结中的话:持续的重新发现和发明……使得代价……太长久以来一直居高不下

 

  我想要说,对于任何想要掌握分布式网络编程的人来说,本书以及卷1都是有用的——无论他们最终是否使用ACE都是如此。(而如果ACE的声称有一半是真的,我认为ACE就应该是首选的开发库,特别是在面向多种硬件平台的情况下)。它不是一本初学者书籍,也并非特别容易阅读(与Meyers/Sutter/Dewhurst的易于消化的风格非常不同),但它信息丰富、有趣,并且没有给人以遗漏了任何重要内容的印象。但是,它好像的确依赖于大量预备知识,特别是关于模式方法的知识,所以,首先阅读Design Pattern[1]Pattern-Oriented Software Architecture[2]将会是聪明之举。

 

附注

[1] Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns (Addison-Wesley, 1995).

[2] Douglas C. Schmidt. Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects (John Wiley & Sons, 2000).

 

关于作者

Matthew Wilson holds a degree in Information Technology and a PhD in Electrical Engineering and is a software development consultant for Synesis Software. Matthew's work interests are in writting bullet-proof real-time, GUI, and software-analysis software in C, C++, and Java. He has been working with C++ for over 10 years and is currently bringing STLSoft.org and its offshoots into the public domain. Matthew can be contacted via matthew@synesis.com.au.

 

Unix网络编程 卷2:进程间通信(linux环境下源代码使用)

1. 下载源码,W. Richard Stevens的主页:http://www.kohala.com/start/ wget http://www.kohala.com/start/unpv22e...
  • yanghuazhou
  • yanghuazhou
  • 2014年04月03日 13:46
  • 831

C++网络编程 卷1 运用ACE和模式消除复杂性——笔记1

第0篇 0.3.1 面向对象中间件层 1、常见面向对象中间件体系结构: 1)主机基础设施中间件:对并发和ipc机制封装,如JavaPackage、ACE 2)分布式中间件:扩充1),使一些网络编程任务...
  • kaci_csdn
  • kaci_csdn
  • 2016年09月14日 13:45
  • 1099

UNIX网络编程卷2源码编译错误

UNIX网络编程卷2源码编译错误
  • zhangxiao93
  • zhangxiao93
  • 2016年08月02日 11:24
  • 885

《UNIX网络编程 卷2》读书笔记(二)

      如何知道进程在一个空消息队列中放入一个消息?如果阻塞在msgrcv调用中,则除了等待无法做其他事情,如果给msgrcv指定非阻塞标志(IPC_NOWAIT),尽管不阻塞了,但必须持续调...
  • phinecos
  • phinecos
  • 2008年05月27日 16:50
  • 459

Unix网络编程卷1源代码使用

几乎linux 编程0基础,花了半小时还是在我虚拟机里运行出第一个例子daytimetcpcli了: 主要步骤: 1,下载源代码,解压 2,配置这本书里面的环境(暂时不懂,不用纠结) 3,下载、启...
  • xinpo66
  • xinpo66
  • 2015年07月18日 10:51
  • 2035

UNIX网络编程 卷2 源代码环境搭建

1. 下载源码,W. Richard Stevens的主页:http://www.kohala.com/start/ wget http://www.kohala.com/start/unpv22e/...
  • wm_1991
  • wm_1991
  • 2015年10月16日 21:56
  • 1032

Unix网络编程卷一笔记

1.connect函数调用会激发TCP三路握手协议,调用失败返回以下三种情况: 1.TCP客户端没有收到SYN分节,返回ETIMEOUT错误。如果发送一个SYN分节,等待6s没有响应,再发送一个,等待...
  • damenhanter
  • damenhanter
  • 2016年07月12日 23:01
  • 1302

Unix网络编程(卷一)-第一个简单的时间获取程序

1 前言 自己一直想闹明白Unix网络编程到底是怎么一回事,所以开启这个系列文章。这个文章系列将会持续下去,直到不再Coding为止。 2 运行第一个实例 这篇博客是《Unix 网络编程卷一:套接字联...
  • shenwanjiang111
  • shenwanjiang111
  • 2016年09月06日 18:37
  • 1285

《Unix网络编程卷1-套接字联网API》第一个例子编译

第一个例子:一个简单的时间获取客户程序,利用GCC编译会出错,需要查看源码中的README文档。下载源码 unpv13e解压,可看到README文档,打开可看到:Execute the followi...
  • lidna242
  • lidna242
  • 2015年07月24日 21:32
  • 599

《Unix网络编程》卷1:套接字联网API(第3版):基本TCP编程、TCP客户端/服务器程序、I/O复用

全书共31章+附录。 计划安排:吃透这本书,一天三章+源码,并实测代码做当天笔记,CSDN见。 时间安排:计划时间1.5个月 == 6个周末 == 12天。 2017.08.05    第01-03...
  • sinat_36184075
  • sinat_36184075
  • 2017年08月06日 21:39
  • 410
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:书评:C++网络编程,卷2 by Matthew Wilson
举报原因:
原因补充:

(最多只允许输入30个字)