首页>参考读物>计算机科学与技术>计算机组织与体系结构

面向模式的软件体系结构 卷2:用于并发和网络化对象的模式
作者 : Douglas Schmidt,Michaes Stal,Hans Rohnert,Frank Buschmann
译者 : 张志祥 任雄伟 肖斌
出版日期 : 2003-08-01
ISBN : 7-111-11686-0
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 402
开本 : 16开
原书名 : Pattern-Oriented Software Architecture, Volume 2 Patterns for Concurrent and Networked Objects
原出版社: John Wiley & Sons
属性分类: 店面
包含CD :
绝版 : 已绝版
图书简介

对于软件开发人员来说,设计运行并发和网络化环境中的应用程序和中间件是很大的挑战。本书中 所列出的模式构成了处理有关并发和网络化问题的模式语言的基础。

  书中提出了17种相互关联的模式,它们包含用于构建并发和网络化系统的核心组件:服 务访问和配置、事件处理、同步和并发。在多种程序设计语言(如C++、Java和C)中,这些
模式有大量的例子和已知应用。
  本书可用于解决特定的软件开发问题,读者也可以从头至尾地阅读,学习构建并发和网络化应用以及中间件的最佳方法。

  本书讲述用于创建并发和网络化系统的模式,共涉及17种模式与惯用法。这些模式构成了用于解决有关分布式、并发和网络化问题的模式语言的基础。本书的模式是创建并发和网络化系统的核心元素,包括服务访问、事件处理、并发控制、连接管理和初始化、事务、安全性等。
  本书强调实际的解决方案,读者可以使用本书的方法解决特定的软件开发问题,获得对构造分布式及并发应用和中间件最佳实践的基本理解。书中含有用多种语言(C、C++和Java)编写的大量例子和已知使用,适于专业软件开发人员及计算机专业高校师生使用。

图书特色

关于作者:
  本书由负责《面向模式的软件体系结构卷1:模式系统》的三位获奖作者和加利福尼亚大学欧文分校(UCI)的Douglas Schmidt共同撰写。
张志祥  男,1967年10月生,湖北省天门市人。现任海军工程大学副教授。 1988年和1991年在海军工程大学计算机系分别获工学学士、工学硕士学位。1991年3月至今在海军工程大学计算机系任教。2000年9月起在华中科技大学计算机学院攻读博士学位。主要研究方向:语义Web、程序设计方法。 先后参与多项军内科研项目的研制,多项成果获军队科技进步奖。在《计算机研究与发展》等刊物发表论文多篇。译著包括《净室软件工程—技术与过程》(电子工业出版社,2001年6月),《Oracle 9i宝典》(电子工业出版社,2002)等。 任雄伟  男,1970年1月生,湖北省武汉市人。现任海军工程大学讲师。 1992年在解放军通信工程学院无线通信工程专业获工学学士学位,1997年在海军电子工程学院通信与电子系统专业获工学硕士学位。1998年3月至今在海军工程大学计算机系任教。2000年9月起在华中科技大学电信系攻读博士学位。主要研究方向:多媒体通信、计算机网络。 先后参与“编队电子战训练模拟器”和“舰载电子战作战效能评估”等项目的研制。在《电视技术》、《计算机应用》等刊物发表论文多篇。 贲可荣  男,1963年8月生,江苏省海安县人。现任海军工程大学教授。 1983年在苏州大学数学系获理学学士学位,1986年在南京大学数学系获理学硕士学位。1986年8月至1990年3月在海军工程大学计算机系任教。1994年6月在国防科技大学获工学博士学位。博士期间,由国防科技大学计算机学院陈火旺院士指导,主修计算机软件。1994年12月任海军工程大学计算机系副教授。1995年起担任计算机应用技术专业硕士生导师、海军工程大学学位评定委员会委员。经教育部批准,2000年3月至2001年3月任武汉大学软件工程国家重点实验室访问学者;2000年被教育部确定为海军首批十名骨干教师之一。2000年12月晋升为教授。 主要译著有《净室软件工程—技术与过程》(电子工业出版社,2001年6月),《能力成熟度模型(CMM):软件过程改进指南》(电子工业出版社,2001年7月),《基于项目的软件工程—面向对象研究方法》(机械工业出版社,2002年6月),《面向模式的软件体系结构卷1:模式系统》(机械工业出版社,2003年1月),审校《实用软件测试指南》(电子工业出版社,2003年1月),参加《计算机科学技术百科全书》(清华大学出版社,1998)的编写。先后承担国家自然科学基金项目、国家863项目和军队科研等五个项目。在“中国科学”、“软件学报”、“计算机科学”等刊物和会议发表论文50余篇。成果获军队科技进步奖。主要研究方向:软件可靠性、软件质量保证技术、形式化方法等。兼任中国计算机学会计算机理论专业委员会委员、中国造船工程学会电子技术学术委员会委员,《海军工程大学学报》、《舰船电子工程》等刊物编委。 Douglas C.Schmidt Douglas Schmidt博士是加利福尼亚大学欧文分校电子与计算机工程系的副教授。他还是国家高级研究计划局(DARPA)信息技术办公室(ITO)的项目经理,在美国的中间件研究中处于领先地位。在此之前,他是密苏里州华盛顿大学圣路易斯分校计算机科学系的分布式对象计算中心的副教授和主任。他的研究方向集中在模式和模式语言、最优化原理以及面向对象技术的经验分析技术,后者用于开发能运行于高速网络和嵌入式互连系统中的高性能和实时分布式对象计算中间件。 Douglas是一位在分布对象计算模式、中间件框架、实时CORBA和开放源码开发方面的国际知名的专家。他在顶级技术杂志、会议上发表了许多文章,出版了多本专著。他曾担任《C++报告》(C++Report)杂志的主编多年,与人合著了几本在模式[PLoPD1]和框架[FJS99a][FJS99b]方面的知名书籍。除了学术研究之外,Douglas领导了ACE和TAO的开发,二者是广泛使用的开放源码的中间件框架,其中包含了很多可重用组件,这些组件是用本书中介绍的模式实现的。 在“闲暇”时间,他喜欢和妻子Sonja跳交谊舞,他还喜欢举重、弹吉他、读世界历史、开雪弗莱车。 Michael Stal Michael Stal于1991年加入德国慕尼黑的西门子的总公司技术部。早期他在开发编译器软件和计算机图形软件方面积累了丰富的经验。他研究C++运行时类型信息,并曾经服务于C++标准化组X3J16。从1992年开始,Michael的工作集中在使用Sockets、CORBA、COM和Java开发并发和分布式的面向对象系统。Michael是西门子公司与OMG在CORBA方面的主要联系人,也是西门子总公司技术部的分布式对象计算组的负责人。他是POSA第1卷《模式系统》的作者之一。 Michael的主要兴趣是研究用于有效地开发分布式系统的方法和用于描述中间件平台体系结构的模式。他在许多杂志上发表了多篇这些方面的文章,并多次在会议上做报告。另外,他还是《Java Spektrum》的总编以及《Objektspektrum》的专栏作家和顾问委员会成员。前者是德国在Java平台方面的主要杂志,而后者是德国在对象技术方面的主要杂志。 在业余时间,Michae1参加足球比赛,支持他喜爱的拜仁慕尼黑足球队,去慕尼黑周围的啤酒园观光,看管小猫别在家搞破坏,看电影,读物理、哲学和幽默方面的书。他是Douglas Adams、Scott Adams以及Terry Pratchett的影迷。 Hans Rohnert Hans Rohnert博士是德国慕尼黑的西门子通信设备事务部的高级软件工程师。他的主要研究方向是寻找有前途的软件技术并引入到新产品(如下一代移动电话)中。他的专业兴趣是软件体系结构、设计模式、现实世界程序设计等。他在动态图形算法、嵌入式Java虚拟机等方面做过无数次讲演。 目前Hans是一个专家组成员,该专家组的目标是定义用于小型设备的小型化KVM(键盘、视频和鼠标控制器)Java虚拟机以及类库。他从事的项目包括用于嵌入式服务器的服务端模块、C++中的工作流、对ATM交换的基本支持、CORBA客户端的Java GUI前端以及HTTP客户机。他是POSA第1卷《模式系统》的作者之一,PLoPD丛书的第四卷[PLoPD4]的主编之一。还是一名研究生的时候,他研究过组合算法。在职业生涯的早年,他在这个方面出版了一些著作、发表过一些讲演。 Hans是一个雄心勃勃的网球运动员,但输多赢少。他也喜欢爬附近的山,攀岩,去邻国滑雪。不过他最大的“爱好”是家庭,特别是在本书写作的最后冲刺阶段,家中诞生了一个婴儿。 Frank Buschmann Frank Buschmann是德国慕尼黑西门子公司总部技术部门的高级工程师。他的研究兴趣包括对象技术、软件体系结构、框架和模式。他在这些领域发表了很多文章,这些文章可以在他与人合著的POSA第1卷中找到。Frank于1992~1996年期间是ANSI C++标准化委员会X3J16的成员。Frank发起并组织了在欧洲举办的第一次关于模式的会议—EuroPLoP l996,他也是PLoPD丛书第三卷[PLoPD3]的主编之一。Frank参与了一些大规模工业软件项目的设计与实现,这些项目包括商务信息、工业自动化以及电信系统。 工作之余,Frank的大部分时间和妻子Martina一起享受生活,在慕尼黑的啤酒园消磨时光、玩自行车特技、滑雪、骑马,爱看支持的多特蒙德足球队比赛,一听歌剧就犯困,临睡前品苏格兰麦芽酒放松自己。

图书前言

中间件是一组服务、协议和支撑工具,提供了构建现代分布式系统和应用程序的“管道”,而这些系统和应用是支持Web服务、分布式对象、协作应用程序、电子商务系统以及其他重要平台的基础设施。以前,很少听到中间件这个词,从事中间件开发的人更少。但是在过去的十年间,这个名词、有关它的研究和实践以及它的影响无处不在。但是,到目前为止,还没有一本书介绍如何构建网络化和并发的面向对象(OO)中间件,所以中间件设计还仍然像魔法一样神秘。本书阐明中间件的构建,希望能像专家一样,对于一般的设计问题、强制条件、成功的解决方案以及结论,为你提供合理的和带有经验指导的说明。
和大多数概念一样,确定中间件的范畴是很困难的。通常,中间件由构建系统和应用程序所需要的软件组成,但它并不是操作系统内核的固有部分。不过,中间件不太容易一眼就识别出来,它可能出现在库和框架、操作系统及其附件、Java虚拟机以及其他运行时系统中,也可能出现在大粒度软件组件中和像Web服务这样的部分终端产品中。
本书不是一本笼统介绍中间件,或者描述哪类应用程序和分布式系统体系结构可用中间件构造的教科书。相反,本书提出了一种模式语言,这种语言记录了构建大多数中间件具有的面向对象通信支持所用到的设计步骤。本书介绍的很多模式对于不是直接基于中间件的各层的系统和应用程序也是有用的。
本书强调实际的解决方案,而不是形式化理论。这里介绍的很多模式背后的基本思想对有经验的系统开发人员来说是熟知的—例如分配、多路分解、回调和配置,有时候是更一般的面向对象模式的变体—例如代理、适配器和外观。本书的主要贡献是基于这些思想的彻底的工程化解决方案。中间件开发人员必须解决范围很广的强制条件,包括吞吐量、响应能力、依赖性、互操作性、可移植性、可扩展性以及对遗留软件的适应等等。这些强制条件的多样性和重要性说明了中间件模式的复杂性,这一点和在较小规模的面向对象应用程序和并发程序设计中看到的不一样。
这些强制条件的多样性,以及多年的工程实践,通常产生了很多设计考虑和工程化的权衡方案,它们将思想和思想在中间件框架中的表示分开。本书所使用的模式描述格式将解决方案表示成一组具体的设计步骤,从而简化这一分开的过程。很多步骤依次调用了其他的模式。将这些综合在一起,就形成一种模式语言,开发人员在设计服务和应用程序时可以从模式转到模式。
正如作者所提到的,本书所讨论的一些思想和技术是对W. Richard Stevens那些关于网络编程的开拓性著作(如[Ste98])所阐述思想的补充。二者主要差别在于,本书更加关注更高层次的设计问题。例如,在讨论UNIX select()调用的输入和输出时,本书解释如何基于select()和其他操作系统调用,构建可组合的和灵活的框架,如反应器。
本书的一个隐含的主题是,如何应用由当前流行的平台所提供的处理I/O、线程、同步和事件多路分解的功能作为基础,构建更高层框架和组件。强调在UNIX和微软操作系统中使用C/C++不会减弱这一主题。而在如下情况下,Java程序员会发现一些小小的不连贯:一是Java已经直接实现了一些本书中讨论的模式(如定界加锁),或者Java已经提供了按照某些模式的特殊实现而构造的框架(如对可配置组件的JavaBeans框架支持),以及一些Java不能访问底层系统机制(如同步事件多路分解)。
但是,熟悉Java、Smalltalk以及其他面向对象程序设计语言的读者将会受惠于模式所表达的中心思想,能更好地理解如何以及为什么有一些模式已经在语言功能和库中直接得到了支持,并可能基于其他模式建立有用的组件。例如,Java一直不提供对异步I/O有用的系统结构的访问,直到有了java.nio。不过在引用了本书中对主动器模式的一段描述后,我整理了一个Java版本,它用简单的spin-loop线程在多个通道上检测I/O的可用性,来模拟多路分解步骤。这样做效率不高,但对于它的使用语境已经足够了。
近几年来,本书中介绍的一些模式,如反应器模式,已经从设计发明的描述进化为设计模式的描述。每个正在实现可移植的面向对象中间件的人,都已经写了或者使用了至少一个包装器外观。本书对以往其他几种模式的讨论还涉及其设计的一些新作用。起初不能肯定是否应该将这些描述看成是模式,模式应该是被时间证明的、独立(重新)发现的解决方案。不过,随着时间的推移,本书作者和面向对象中间件业界越来越坚信本书中介绍的模式确实抓住了关键强制条件和设计问题的本质,并已经看到所介绍的解决方案在很多不同的使用语境中被反复用到。
我建议你分享这一现象。通过阅读—特别是使用—本书中的内容,你将会明白为什么像反应器和主动器这样的模式名称在面向对象中间件开发人员之间很普及,就像装饰器和观察者在面向对象GUI开发者中很普遍一样。


Doug Lea
纽约州立大学Oswego分校

作者简介

Douglas Schmidt,Michaes Stal,Hans Rohnert,Frank Buschmann:暂无简介

译者简介

张志祥 任雄伟 肖斌:暂无简介

译者序

模式系统包括很多通用的模式,而本书集中深入地讨论用于并发和网络化的通用的、与应用领域无关的模式。这些模式是对《面向模式的软件体系结构 卷1:模式系统》一书中介绍的通用模式在两个软件开发日益重要的领域上的补充。
除了关注用于并发和网络化的与领域无关的通用模式之外,本书对已有的关于并发网络程序设计和面向对象设计的资料做了如下扩充:(1) 关于并发的网络程序设计的资料通常关注操作系统API的语法和语义。相反,本书介绍了如何在设计和实现高质量的并发和网络化的系统时有效地使用这些API。(2) 本书讨论了并发和网络应用程序的开发过程。(3) 本书中的模式并不仅仅构成一个模式分类或系统,它们相互补充,形成了用于并发和网络化软件的模式语言。本书描述了如何使用这些模式语言来构建成熟的并发和网络化软件系统和应用程序、Web服务和分布式对象计算中间件,以及底层的操作系统网络协议和机制。
本书中介绍的很多模式还可用于并发和网络化的语境之外。
本书对软件开发的初学者和专家都有帮助。它可以帮助初学者不需要积累多年的经验,就可在适当规模的项目上像专家一样工作,它可以帮助专家在大型复杂的软件设计上利用已定义属性,也可以促使他们学习其他专家的经验。
本书力图做到既是教材又是参考手册,帮助软件开发人员以一种新的方式思考软件体系结构,并提供一些技术来解决特定的不断再现的设计问题。把本书用做软件工程课程的指南,可以给学生提供大型软件设计的完整的新观点。把本书用做参考手册,可以方便查找全面的技术并随时可以使用。本书包含了涉及模式实际应用的许多指导原则和强制限制。
本书第1章、第2章由任雄伟翻译,第5~8章由肖斌翻译,其余章节由张志祥翻译。全书由贲可荣审校。孙宁、王淑雪、朱继梅等参与了本书的部分工作,在此表示感谢。
由于各种原因,译稿难免存在错误和疏漏,欢迎读者批评指正。
本书可作为计算机专业高年级本科生、计算机专业研究生的软件工程教材或参考书,亦可作为软件开发人员的参考手册。


译  者
2003年3月

图书目录

译者序
译者简介
前言
内容简介
作者简介
读者指南
第1章  并发和网络化对象 1
1.1  动机 1
1.2  并发和网络化软件的难题 3
1.2.1  难题1:服务访问和配置 5
1.2.2  难题2:事件处理 8
1.2.3  难题3:并发 10
1.2.4  难题4:同步 12
1.2.5  网络化软件的其他难题 13
1.3  案例分析:设计一个并发的Web
服务器 14
1.3.1  JAWS框架概述 15
1.3.2  在JAWS中应用模式解决JAWS中
常见的设计难题 16
1.3.3  封装低层操作系统API 17
1.3.4  从协议处理中分离事件多路分解和
连接管理 18
1.3.5  通过多线程提高服务器性能 19
1.3.6  实现一个同步化的请求队列 20
1.3.7  最小化服务器线程的开销 21
1.3.8  有效地利用异步I/O 23
1.3.9  增强服务器的可配置性 24
1.3.10  用于实现JAWS的其他模式 25
1.4  小结 26
第2章  服务访问和配置模式 27
2.1  包装器外观 28
2.2  组件配置器 46
2.3  截取器 66
2.4  扩展接口 85
第3章  事件处理模式 107
3.1  反应器 108
3.2  主动器 130
3.3  异步完成标记 158
3.4  接受器-连接器 173
第4章  同步模式 199
4.1  定界加锁 199
4.2  策略化加锁 205
4.3  线程安全接口 212
4.4  双检查加锁优化 217
第5章  并发模式 225
5.1  主动对象 226
5.2  监视器对象 245
5.3  半同步/半异步 261
5.4  领导者/追随者 273
5.5  线程特定的存储器 289
第6章  将模式组织在一起 309
6.1  从独立模式到模式语言 309
6.1.1  没有模式是孤立的 309
6.1.2  走向模式语言 310
6.2  用于中间件和应用程序的模式语言 311
6.2.1  模式语言细节 312
6.2.2  对模式语言的讨论 317
6.3  并发和网络化之外 318
6.3.1  图形用户界面 318
6.3.2  组件 319
6.3.3  常规编程 319
6.4  模式语言与模式系统 319
第7章  模式的过去、现在和未来 323
7.1  在过去的4年中发生了什么 323
7.1.1  模式 323
7.1.2  模式系统和模式语言 324
7.1.3  方法和工具 324
7.1.4  算法与数据结构 325
7.1.5  形式化模式 325
7.2  模式现状 325
7.3  模式向何处去 326
7.3.1  模式 326
7.3.2  模式语言 328
7.3.3  经验报告、方法和工具 328
7.3.4  模式文档 329
7.3.5  形式化模式和模式语言 329
7.3.6  软件开发过程和组织 329
7.3.7  教育 330
7.3.8  长远预测 330
7.4  对预测未来的临别思考 330
第8章  结束语 333
附录A  词汇表 335
附录B  符号 347
附录C  参考文献 351
索引 373

教学资源推荐
作者: 袁春风,朱光辉,余子濠
作者: [美]尼克罗斯?法拉菲(Nikrouz Faroughi)著
作者: (美)David Money Harris 哈维玛德学院 Sarah L. Harris哈维玛德学院 著
作者: (美)Wayne Wolf
参考读物推荐
作者: 吴飞青,丁晓,李林功,练斌
作者: Mark Artiges等
作者: NVIDIA 技术服务(北京)有限公司 著