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

5星(超过95%的资源)
所需积分/C币:10 2014-08-17 20:10:59 28.15MB PDF
21
收藏 收藏
举报

ACE开发者编写的ACE手册分两卷,本卷介绍ACE wrapper facades,即类库。
深入C++丛书 Bjarne Stroustrup,编者 我把这封信写得比平时要长,因为我没有时间去把它写得更短。” BLAISE PASCAL 对C++程序员来说, ISOJANSI C+标准的问世标志着一个新纪元的开始。C+标准为程 序设计提供了很多新的便利和可能,但要想在如此众多射信息中挖掘到其中的精髓,作为现 实世界中的程序员,我们缺少足够的时间。“深入C++”丛书就是针对一定的主题,为程序员 提供了简明扼要的指导,从而将学习时间和疑惑减至最少。 在这套丛书中,每一本书都呈现一个独立的主题,每本书的技术难度也和相应的主题相 适应。本丛书所提供的有效途径,有助于每一位专业人员将自己的程序设计水平提升到更高 的层次。这些专著由业内专家撰写,篇幅短小但内容深入。在阅读和参考这些专著时,我们 不会被无关的内容所打搅。作为一个系列,这些书相互之间交叉引用;此外,它们也都引用 了 Bjame Stroustrup的著作《TheC++ Programming Language》 在提高C艹程序设计能力的过程中,日益重要的一点是将重要的知识同华而不实的东西 分离开来,然后找出更深入、更全面的内容,从而获得进一步的提高。“深入C++”丛书所展 示的C++程序设计的工具、概念、技巧和新的方法,将为你提供一个重要的开端。 丛书书目 Accelerated C++: Practical Programming by Example, Andrew Koenig and Barbara E Moo The Boost Graph Library: User Guide and Reference Manual, Jeremy G Siek, Lie-Quan Lee, and Andrew lumsdaine C++ In-Depth Box Ser, Bjame Stroustrup, Andrei Alexandrescu, Andrew Koenig, Barbara E. Moo, Stanley B Lippman, and Herb Sutter C++ Network Programming Volume: Mastering Complexity Using ACE and PatternS, Douglas C Schmidt and stephen D. huston Essential C++, Stanley lippman Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions, Herb Sutter Modern c++ Design: Generic Progranming and Design Pattens Applied, Andrei Alexandrescu More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions, Herb Sutter 欲获取更多信息,请访问“深入C+”丛书网站五tp:/waw. com/seng/series/indepth C+网络编程 卷1 运用ACE和模式消除复杂性 C++ Network Programming Volume 1 Douglas C Schmidt Stephen D. Huston 3 於春景译 马维达审校 华中科技大学出版社 中国·武汉 序 为本书作序之时,我正在欧洲畅游。这多亏了欧洲完善的公共交通设施。作为 个美国人,我不禁被这里的基础设施所倾倒。无论在什么地方,只要我一下飞机,就 可以方便地找到火车或巴士,享受快速、整洁、安全、准时的服务—或许,更重要 的是:将我直接送到目的地。此外,离站和到站的通告用多种语言表示,各种标志和 指示也易于理解,即使是我这样一个不懂当地语言的人,也没有感到丝毫不便。 我生活、工作在 Boston。和大多数美国人一样,我几乎完全靠自己的汽车辗转于 各个场所。除了偶尔光顾一下 Boston的地铁系统之外,我总是自己开车外出;因为公 共交通设施有太多的限制,它很难将我送到目的地。数百万 Boston居民以及其他地方 的人们也都处于同样的困境。可见,我们的公路系统已经过时,远不能承受今天的交 通量。我知道,如果仔细算一算自己一生中因为塞车而浪费的时间,一定会吓一跳。 有趣的是,网络计算系统( networked computing system)和交通系统之间有某些 相似之处,其中最显著的一点是:二者的成功都离不开“可伸缩( scalable)的基础设 施。所谓可伸缩的交通系统,不只包括那些显而易见的设施,如火车和铁轨、飞机和 杌场,还需要有调度、路线选择、维修、检票、监控,而这一切还要能够随着物理上 的交通系统的变化而伸缩、变化。类似地,网络计算不仅需要主机和网络——物理上 的计算和通信基础设施——还需要软件上的调度、路由选择、分发、配置、转译、验 证、授权和监控——只有这样,网络系统才能根据需要调节、变化。 C++ Network Programming vol. X11 序 说到基础设施,有这样一个具有讽刺意味的事实:建设好基础设施,这本身已经 非常之难;但更难的是,只有让用户越感觉不到它的存在,人们才会认为它越成功。 举个例子:瑞士境内的阿尔卑斯山脉地势崎岖,但是,为数不多的设计师、工程人员 和建筑工人却凭借他们的技能,为无数的瑞士居民提供了有效的交通系统,从而给他 们的日常生活带来了便利。事实上,这套系统如此可靠易用,以至于你很快将它的存 在当成是理所当然之事。它因此变得对你透明了。譬如,当你踏上瑞士的铁路之旅时, 你的心思只会放在该从哪一个地方到达另一个地方上,而不会关心是什么样的交通工 具将你载到那儿。除非你是个游客,否则,你大概不会注意到你正在穿越一个历经数 年设计、修建的隧道,也不会注意到火车正攀行在如此陡峭的斜坡上,更不会注意到 铁路上还安装了齿轨,以帮助列车爬行。铁轨设施完美地承担了它的职能,所以,你 甚至没有注意到它的存在 本书针对网络计算系统,探讨了一种基础设施软件( infrastructure software),通常 称为中同件( middleware)之所以称之为“中间件”,是因为它就像是“沙漏的腰( waist in the hourglass9y",位于操作系统和网络之上、应用程序之下。中间件具有多种形态 shapes)、规模( SIzes)和能力( capabilities):从J2EE应用服务器、异步消息处理 系统、 CORBA ORB,到小型嵌入式系统中的 Socket监控软件。中间件必须支持日益 繁多的应用程序、操作系统、网络协议、编程语言和数据格式。如果没有中间件,要 想应对网络计算系统中日益增长的多样性( diversity)和异种性( heterogeneity),将十 分麻烦,而且容易出错且代价昂贵。 中间件种类繁多,要解决的问题也各式各样,但在解决各种复杂难题时,不同类 型的中间件往往用相同的模式( patterns)和共同的抽象( abstractions)。例如,如果 去窥探一个具有可伸缩性和灵活性的应用程序服务器、消息系统或 CORBA ORB的内 部,就会发现,它们采用了类似的技术来完成诸如连接管理、并发、同步、事件多路 分离、事件处理程序分发、错误记录、监控等任务。如同瑞士铁路系统的用户数量远 远大于设计和建造铁路的工程人员的数量那样,一套成功的中间件的用户数量也远远 大于设计和构造中间件的开发人员的数量。如果要设计、构造或使用中间件,那么, 只有熟悉、理解和运用这些常见模式和抽象,才会获得成功。 C++ Netuork Programming VolI 序 XI 虽然很多人都知道,中间件必须具有可伸缩性和灵活性,但很少有人能够高效地 提供这种中间件。然而, Doug Schmidt和 Steve huston在本书介绍的 ADAPTIVE通信 环境(ACE)中却做到了这一点。ACE是一套应用广泛的C艹工具包,它汇集了很多 常用的模式和抽象,这些模式和抽象在各种极为成功的中间件和网络程序中都有广泛 的应用。ACE已经成为许多网络计算系统的基础:从实时的航空电子应用到 CORBA ORB,以及对主机“端对端(per-to-per)”通信的支持。 和其他所有优秀的中间件一样,ACE也将异种环境下各式各样的复杂性隐藏在底 层:和其他众多基础设施中间件不同的是:ACE能够在程序需要的任何地方提供最大 的灵活性,但不会损及系统的性能或可伸缩性。作为一名长期从事中间件开发工作的 设计师,我清楚地知道,要想在同一个软件包中兼顾性能和灵活性,难度该有多大! 但从某种意义上说,ACE在灵活性和性能上的优越表现没有出乎我的意料。和 Doug的长期合作让我清楚地知道,他无愧于这个领域的先锋。当今各种具有可伸缩性、 高性能和灵活性的中间件,都明显地留下了他的痕迹,并深受他的影响。 Steve是一位 天才的C++开发者和作家,他的工作使ACE多年来取得了长足进步。Doug和Seve 联手,为所有设计、构造、甚至使用中间件的人奉献了一部“必读”之作。万维网( World Wide Web)和互连嵌入式系统( (interconnected embedded systems)的日益普及,意味 着网络计算系统的数量、规模和重要性将持续增长。只要理解了Doug和 Steve在书中 讲述的重要模式、技术、 class(类)和经验教训,我们就有希望创建出完全透明、高 效、可靠的中间件基础设施。 Steve vinoski 总设计师兼副总裁, Platform Technologies IONA Technologies 2001年9月 C++ Network Programming Vol 1 译序 计算机网络的普及,给软件开发者带来更大的挑战。硬件设备、软件环境的多样 性( vanety)和异种性( heterogeneity),使得网络程序设计的复杂性( complexity)大 大提高。应用程序作为软件功能的最终实现者,不应当(有时甚至不可能)去直接应 对这所有的复杂性。因此,一套专门处理“多平台”差异和编程复杂性的中间件 middleware),对网络程序开发具有重要意义。ACE就是这样一套优秀的中间件。 本书是ACE的缔造者撰写的一部网络中间件专著。它以ACE的设计为核心,深 入探讨了网络中间件开发中面临的各种挑战,以及设计上的各种选择,并为你展示了 ACE针对这些问题的解决之道 本书适合ACE的使用者或者(潜在的)ACE的开发者阅读。本书对ACE的能力、 ACE要解决的问题,以及如何通过ACE提高网络程序的可伸缩性和可移植性等议题作 了详尽的论述。对ACE使用者来说,本书是迄今为止最为权威、详尽、系统的ACE 专著。 但是,本书并不只针对ACE的使用者,任何一位网络程序开发者—无论应用程 序开发者或中间件开发者—都能从本书受益。作者在书中就网络编程领域存在的复 杂性作了全面、细致的阐述,对各种设计方案的利弊作了深入的剖析,并给出了ACE 的解决之道。这些内容,是ACE的开发者十多年来经验的积累,任何一位网络开发者 都能从中汲取养分,增添功力 对C++程序员和模式爱好者来说,本书也不容错过。ACE运用了C++面向对象设 计技术,也使用了模板、 traits(特征类)等高级语言特性和其他C++技术;此外,还 运用了大量的设计模式。长期以来,高级C++特性和技术在实际软件开发中的运用、 C++Network pros a8 vol 1 XY1 译序 设计模式的实践性等问题,给不少编程爱好者带来很多困惑和疑问。本书通过现实世 界的产品级代码,就这一问题作出了清晰而明确的回答 虽然本书并不是一本网络编程、C++或设计模式方面的教程,但在阅读本书之前, 必须对这三方面的知识有所了解。此外,本书具有很强的实践性,它是作者十多年ACE 实践经验的总结。就我看来,这也是“深入C++”丛书中最具实践性的专著之 最后要说明的是,《C++网络编程》共两卷,本书是第一卷。这使得我在翻译过程 中能有机会同第二卷的译者马维达先生进行多次深入的探讨。我十分高兴能和他共同 交流学习。我也期望我们的工作能给各位读者带来帮助。 於春景,2003/0422 深圳蛇口,海上世界 C++ Network Programming Vol1 关于本书 过去10年,并发式“面向对象”网络编程( concurrent object-oriented network programining)已经成为一种有效的应用软件开发范式( paradigm)。在这些应用程序中, 相互协作的对象可以: 1.在一个进程或计算机中相互关联; 2.分布在一组通过网络(如嵌入式互连系统、局域网(LAN)、企业内部网、互 联网)相连的计算机中。 如果对象是分布( distributed)存在的,那么,组成这些对象的各种实体( entity) 之间就要能够有效地通信和协调。而且,当应用程序在其生命周期内发生变化时,也 必须始终这样。对象的布局、现有网络设施、平台并发机制的选择都允许有一定程度 的自由,这种自由带来了强大的功能,同时也带来了挑战 如果设计合理的话,并发式“面向对象”网络编程将提供强大的功能,从而大大 提高应用程序的灵活性。例如,根据项目的需求和现有资源,可以使用: 实时(real-ime)、嵌入式( embedded)或于持( handheld)式系统; 个人或膝上型电脑 各式各样、不同规模的UNX或 Linux系统; “大型”主机甚至超级计算机。 然而,当你在多个操作系统(OS)平台上开发和移植网络应用程序时,将面临错 综复杂的挑战。这些复杂性的表现形式各异:网络协议不兼容,在不同软、硬件平台 上具有不同AP和语义的组件库,由于OS本身的( native)进程间通信(IPC)机制 C++ Network Programming vol.

...展开详情
试读 127P C++网络编程 卷1 运用ACE和模式消除复杂性
立即下载 身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
星舰 挺清晰,学习ACE必备
2018-11-19
回复
lkb007lkb 用来入门,很高,讲的很详细
2017-09-08
回复
邪恶的笨笨 ACE太多的宏定义导致很难看懂,但是慢慢看还是有很多值得学习的东西
2017-02-16
回复
mashang123456789 ACE入门,看了有点难
2016-12-22
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
C++网络编程 卷1 运用ACE和模式消除复杂性 10积分/C币 立即下载
1/127
C++网络编程 卷1 运用ACE和模式消除复杂性第1页
C++网络编程 卷1 运用ACE和模式消除复杂性第2页
C++网络编程 卷1 运用ACE和模式消除复杂性第3页
C++网络编程 卷1 运用ACE和模式消除复杂性第4页
C++网络编程 卷1 运用ACE和模式消除复杂性第5页
C++网络编程 卷1 运用ACE和模式消除复杂性第6页
C++网络编程 卷1 运用ACE和模式消除复杂性第7页
C++网络编程 卷1 运用ACE和模式消除复杂性第8页
C++网络编程 卷1 运用ACE和模式消除复杂性第9页
C++网络编程 卷1 运用ACE和模式消除复杂性第10页
C++网络编程 卷1 运用ACE和模式消除复杂性第11页
C++网络编程 卷1 运用ACE和模式消除复杂性第12页
C++网络编程 卷1 运用ACE和模式消除复杂性第13页
C++网络编程 卷1 运用ACE和模式消除复杂性第14页
C++网络编程 卷1 运用ACE和模式消除复杂性第15页
C++网络编程 卷1 运用ACE和模式消除复杂性第16页
C++网络编程 卷1 运用ACE和模式消除复杂性第17页
C++网络编程 卷1 运用ACE和模式消除复杂性第18页
C++网络编程 卷1 运用ACE和模式消除复杂性第19页
C++网络编程 卷1 运用ACE和模式消除复杂性第20页

试读结束, 可继续阅读

10积分/C币 立即下载