作  者:david++
发布时间:2012/06/08 09:02
文章地址:http://game-lab.org/?p=320

近两个月都在学习ACE,一个超级强大,也超级复杂的网络框架库。对ACE的大名早有听说,同时也听说过它的复杂性,所以一直不敢去碰它。ACE对程序员的要求是比较高的了,需要对C++、设计模式、POSA、网络、并发等有一定的了解后,才能去碰它。不然真的是一头扎进茫茫大海,越看越复杂,直到消磨完所有对ACE的热情。

经过两个月的摸索,查找各种资料,最后也总算是知道了该如何去学习这个Ace(王牌)基本的ACE,以后有所心得,也会即时在博客上予以分享。下面推荐几本学习ACE必备的工具书。

《C++网络编程:运用ACE和模式消除复杂性 卷1》(简称:C++NPv1)

这应该是你需要了解的第一本关于ACE的书,本书中提出了ACE作者对于网络问题的研究,分为四个设计空间:网络、并发、服务、配置。本书核心讲述网络和并发应用程序的开发,及其ACE与之对应的Wrapper Facade Class,并以一个日志服务器实例作为演示,使用多种方式实现该日志服务器(实例代码参见,ACE_Wrapper/examples/C++NPv1)。(关于Wrapper Facade 模式可以参考《POSA 卷2》,具体优缺点不在此赘述了)。

《C++网络编程:基于ACE和框架的系统化复用 卷2》(简称:C++NPv2)

本书核心内容主要讲述《C++NPv1》中分出的四个设计空间中的:服务器设计空间和配置设计空间,及ACE基于Wrapper Facade的框架实现。如:Connector-Acceptor、Reactor、Proactor、Stream、Service Configurator等。对应于ACE的框架层。

《ACE程序员指南:网络与系统编程的使用设计模式》(简称:APG)

阅读APG,可以对ACE有一个整体的了解,Wrapper层、框架层都有涉及。但本书只对用法做了描述,所以很多地方不如《C++NPv1》和《C++NPv2》深刻,可以将本书作为入门第一本。

《面向模式的软件架构:网络与并发模式 卷2》(简称:POSAv2)

POSA系列的第二本,由ACE作者Douglas C. Schmidt和三位网络开发界几位大牛执笔,根据自身开发网络应用的经验,总结出网络和并发相关模式。许多模式读来,醍醐灌顶。把网络应用开发中的各个难点都提出了相应模式解决方案。因为ACE中运用了很多网络、并发架构模式,都可以在本书中找到相应的描述和讲解。作为一个做服务器端开发的人(在此,指的是做底层框架而非仅仅是应用逻辑开发的),这本书是必须要读的,并且要深刻理解里面提到的模式。

ACE相关论文集(网上的资料,未见相应出版物)

下面这些资料,都是网上一些热爱ACE的人整理的。因为ACE对于网络程序开发有非常大的影响,Douglas C. Schmidt及其ACE热爱者关于ACE也写了不少论文,同时使用ACE实作了很多的应用实例。(多数实例都可以在ACE的源码目录下example、app目录下找到)

  1. 上篇-ACE技术论文集
  2. 中篇-ACE程序员教程
  3. 下篇-ACE应用实例

小结和建议

鉴于ACE的强大和复杂,许多人对此都会望而却步。但作为一个强大而深刻网络开发工具包,很有必要好好研习一番,就算以后不会用到它去直接做开发,但其中的设计思想和设计、架构模式对我们以后做服务器架构和开发有着巨大的帮助。我也会在此信念下,不断地学习ACE,并从中学习关于网络服务器开发的知识,有所心得,会及时分享。也是刚找到一条学习ACE的路线,希望会坚持下去,写下该篇算是第一步。

对于ACE,只看书肯定是不行的,一定要阅读ACE的代码,刚开始学习,最好的开始就是ACE_Wrapper/examples。

坚持、坚持、再坚持!ACE,一定要搞定!希望本篇推荐的关于ACE的书,会对网络开发程序员有所帮助!

每周一荐:学习ACE一定要看的书的更多相关文章

  1. 学习C++所需看的书和顺序

    初学: <C++ 编程思想> <C++ Primer><The C++ Programming Language> 提高: <C++ 的发展与演化> & ...

  2. Elasticsearch学习,请先看这一篇!

    原文:Elasticsearch学习,请先看这一篇! 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...

  3. 推荐一些关于学习Html Css和Js的书吗?

    前端易学易懂,随着移动互联网的日益兴起,it行业对于前端的需求也在不断的提高,那么从前端小白修炼成为前端大神的这个过程之中,一些必备的枕边书也是必不可少的. 第一本,入门<Head first ...

  4. 学习MVC和jQuery相关的书

    Insus.NET还是较喜欢看纸质书.学习ASP.NET MVC和jQuery编程,Insus.NET为了加强功力,决定再购买几本相关的书:   十月份时,还买了一本: 前两本快递刚送到手,后一本已经 ...

  5. C 游戏所要看的书

    C 游戏所要看的书 1.C++primer中文版第4版     经典啊2.C++标准程序库自修教程与参考手册 3.Windows程序设计第5版 4.MFC windows程序设计第2版中文版 5.VC ...

  6. 自由是有代价的:聊聊这几年尝试的道路 要想生活好,别看哲学书和思想书。简单看看可以,看多了问题就大了。还是要去研究研究些具体的问题。别jb坐在屋子里,嘴里念着海子的诗,脑袋里想康德想的事情,兜里屁都没有,幻想自己是大国总理,去想影帝是怎么炼成的。

    自由是有代价的:聊聊这几年尝试的道路 现在不愿意写过多的技术文章了,一点是现在做的技术比较偏,写出来看的人也不多,二来是家庭事务比较繁多,没以前那么有时间写了.最近,园子里多了一些写经历的文章,我也将 ...

  7. PHP程序员要看的书单

    想提升自己,还得多看书!多看书!多看书! 下面是我收集到的一些PHP程序员应该看得书单及在线教程,自己也没有全部看完.共勉吧! Github地址:https://github.com/52fhy/ph ...

  8. Directx11学习笔记【八】 龙书D3DApp的实现

    原文:Directx11学习笔记[八] 龙书D3DApp的实现 directx11龙书中的初始化程序D3DApp跟我们上次写的初始化程序大体一致,只是包含了计时器的内容,而且使用了深度模板缓冲. D3 ...

  9. [深度学习大讲堂]从NNVM看2016年深度学习框架发展趋势

    本文为微信公众号[深度学习大讲堂]特约稿,转载请注明出处 虚拟框架杀入 从发现问题到解决问题 半年前的这时候,暑假,我在SIAT MMLAB实习. 看着同事一会儿跑Torch,一会儿跑MXNet,一会 ...

随机推荐

  1. LUA实现单词替换功能

    背景描述 编程或者文档处理过程, 经常遇到需要将一个单词修改为另外一个单词的情况, 例如 命名为 shall 修改 为 should. 使用工具实现, 则比较方便,不容易出错, 解放双手. 需求规格 ...

  2. NSFileManager 遍历目录

    NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *documentPath = [NSHomeDirecto ...

  3. IntelliJ IDEA Community Edition 14.1.4下使用 Apache-Subversion搭建代码管理环境

    当前我的idea 版本是14.1.4. 1,)SVN Server下载与安装(https://www.visualsvn.com/server/): 因为我开发机是x64的,所以我优先下载 x64的 ...

  4. Java位运算符

    & 两个二进制数的相同位比较,都为1,结果为1,否则结果为0. | 两个二进制数的相同位比较,只要有一个为1,结果就为1,否则为0. ~ 对一个二进制数的每一位取反,原值为1,取反为0,原值为 ...

  5. MyBatis Generator自动生成的配置及使用

    注意:文件名不能有中文字符,不然不能自动生成 找到MyBatis Generator.rar\MyBatis Generator\eclipse里的features和plugins文件,把这两个文件复 ...

  6. 助手系列之python的FTP服务器

    电脑的OS是Win7,Python版本是2.7.9,安装了pip 因为python没有内置可用的FTP SERVER,所以先选一个第三方的组件安装上,这里我选的是pyftpdlib pip insta ...

  7. 思维导图软件MindManager for Windows中如何修改思维导图布局

    MindManager for Windows是 Mindjet公司旗下应用于Windows桌面系统的一款思维导图软件,目前已经更新到了v14版本.对于很多刚开始使用MindManager for W ...

  8. C#随学随记

    1.Microsoft.NET是基于Windows平台的一种技术(简称.NET),它包含了能在.NET Framework平台运行的所有语言..NET Framework是微软为开发应用程序创建的一个 ...

  9. 详解 Array.prototype.slice.call(arguments)

    首先,slice有两个用法,一个是String.slice,一个是Array.slice,第一个返回的是字符串,第二个返回的是数组 在这里我们看第二个方法 1.在JS里Array是一个类 slice是 ...

  10. s3c2440 移值u-boot-2016.03 第1篇 新建单板

    目前除RC版外,最新的就是 u-boot-2016.03.tar.bz2 ,大概看了几个年份的u-boot 发现,现在 更像是 linux kernel .有 menuconfig . 对比2012年 ...