面向模式的软件架构 卷4:分布式计算的模式语言

当前位置:首页 > 计算机网络 > 软件工程/开发项目管理 > 面向模式的软件架构 卷4:分布式计算的模式语言

出版社:人民邮电出版社
出版日期:201006
ISBN:9787115227737
作者:Frank Buschmann,Douglas C.Schmidt,Keclin Henney
页数:348页

章节摘录

  这一章,我们抛开仓库管理流程控制系统的细节,再来回顾一下这个例子的全景,看看它是如何指导我们做出设计的。我们将讨论这个例子是如何支持模式语言中的各种属性,以及本书第三部分的分布式计算模式语言是如何支持和指导我们在这个例子选择什么样的模式序列。  回顾一下我们为仓库管理流程控制系统做架构设计的过程,你会发觉对模式的选择和应用是非常自然的,好像本来就应该设计成这个样子,甚至可能会认为是预先设计好的。这个故事自然流畅,我们很容易跟上它的节奏。所以,让人觉得这个架构设计的过程非常直观。  然而,这种感觉实际上是一种过于单纯的错觉,说明你没有意识到存在某种微妙的东西使得设计行为不像转门把手那么简单。对模式序列的分析告诉我们,这是经过深思熟虑的选择,而不是随便拿一个就可以用的。最明显的是,每个单独的模式满足了仓库管理流程控制系统的某个特定需求——这当然是创建一个良好的软件架构的必备条件。然而,仅仅选择了正确的模式还不能保证就能设计出一个高效的、健壮的架构。这些模式必须按照合适的顺序集成在一起,互为补充而不能互相打架。仅仅靠一套各自独立的模式完不成这个任务,因为它们主要关注于解决自己针对的那个问题。  随着设计慢慢地推进,每次引入一个模式,该系统架构的模式序列逐渐创建并显现出来,它不仅是完整的,而且不同的部分互为补充——不仅从功能角度上看是这样,对于成功至关重要的运营和开发方面亦是如此,比如吞吐量、可伸缩性、灵活性和可移植性。  在基线架构以及通信中间件和仓库拓扑的基础结构这个层次,模式序列中的这些模式用于解决系统级别战略性的问题并定义架构主干。像算法上的变化和控制流程这样的局部的战术上的问题则放到了模式序列的后面,等到各自稳定的战略性设计中枢确定下来之后再做处理。我们在序列中每次增加一个模式,增加的时候我们先把它整合到已有的设计中,而不过早地关心起实现细节。换句话说,就是每增加一个新的模式都是将原来的设计进行增强和扩展,从而产生一个新的设计。  所有的这些模式基于其各自的角色集成在一起,它们之间的平衡保证各自能够解决各自的问题,同时又能互相支持从而进一步地表现出各自的能力。例如,我们的基于CCM的ORB中的很多组件分别参与了几个模式的实现。

前言

  模式运动已经进行了十多年,从追捧到棒杀再到慢慢接受,模式已经经历了这个常见的轮回。Frank、Doug和Kevlin一直参与其中,受到过赞美,也遭遇过嘲讽,重要的是他们从中收集了大量好的想法,并将其描绘出来。POSA系列图书被认为是模式相关文献中最为坚实的基础性著作之一,它的每一卷都在我的书架上占有一席之地。  POSA的前几卷属于传统的模式书籍,描绘了某些特定领域中使用的模式,其中大部分以前均未有书面记录。本书则不同。分布式计算是一个相当宽泛的主题,一卷图书哪怕只是容纳已知的模式也是远远不够的。实际上这些模式分布在很多书里面,包括POSA系列和一些别的书。本书的目的是要把它们聚在一起。所以,这里列出的模式可能比你平时看到的要多,当然其描述也要简洁得多。有些模式可能并不是主要关于分布式的,但是多少都会和分布式系统有些关系。因此,本书是以分布式系统为背景来介绍这些模式的用法,并加以总结。  本书并不是仅仅介绍每个独立的模式的——同时也介绍它们之间的关系。在任何一个系统中都会同时使用多个模式,然而,就拿我的体会来说,讲述其中的关系要比介绍单独的模式难得多。本书没有回避这个问题,书中给出了很多关于在分布式场合下联合使用多种模式的建议。  分布式往往是一个棘手的难题。事实上,经常有人引用我的所谓分布式对象设计第一定律的“名言”:“不要使用分布式对象。”我这样说是有原因的——分布式使得软件设计更困难,所以我一直建议尽可能地避免采用分布式设计。然而无论我如何强烈地质疑分布式设计的范围,分布式毕竟是很多软件系统重要的组成部分。

媒体关注与评论

  “作者很明智,在书中融入了实际案例。有了它,模式就不再是空中楼阁,模式语言的具体应用一目了然。”  ——《计算机评论》  “关于架构和设计模式的书我有很多,不过一旦遇到问题,我首先求助的永远都是这一本。”  ——Dennis L. Hughes,Windows架构师  “这是用于分布式计算的模式圣经!值得每一位软件架构师珍藏!”  ——Amazon.com

内容概要

Frank Buschmann,是德国慕尼黑西门子公司总部技术部门的高级工程师。他的研究兴趣包括对象技术、软件体系结构、框架和模式。他在这些领域发表了很多文章,这些文章可以在他与人合著的POSA第1卷中找到。Frank于1992~1996年期间是ANSI C++标准化委员会X3J16的成员。Frank发起并组织了在欧洲举办的第一次关于模式的会议——EuroOLop 1996,他也是PLoPD丛书第三卷的主编之一。Frank参与了一些大规模工业软件项目的设计与实现,这些项目包括商务信息、工业自动化以及电信系统。  
   工作之余,Frank的大部分时间和妻子Martina一起享受生活,在慕尼黑的啤酒园消磨时光、玩自行车物技、滑雪、骑马,爱看支持的多特蒙德足球队比赛,一听歌剧就犯困,临睡前品苏格兰麦芽酒放松自己。

书籍目录

第一部分 概念
第1章 模式与模式语言 2
1.1 模式 2
1.2 模式内幕 3
1.2.1 问题的环境 3
1.2.2 驱动因素:所有模式的核心 4
1.2.3 解决方案与结果 4
1.2.4 模式命名 4
1.2.5 模式表现形式概述 5
1.3 模式的关系 5
1.3.1 模式的互补 5
1.3.2 模式的组合 6
1.3.3 模式故事 6
1.3.4 模式序列 7
1.4 模式语言 7
1.4.1 从模式序列到模式语言 7
1.4.2 展现和使用模式语言 7
1.5 模式的连接 8
第2章 分布式系统 9
2.1 分布式的优点 9
2.2 分布式的挑战 11
2.3 用以支持分布式的技术 12
2.3.1 分布式对象计算中间件 13
2.3.2 组件中间件 14
2.3.3 发布/订阅中间件和面向消息的中间件 15
2.3.4 面向服务架构和Web服务 16
2.4 中间件技术的局限性 17
第3章 模式语言 18
3.1 意图、范畴和对象 18
3.2 起源 18
3.3 结构和内容 19
3.4 模式的表现 24
3.5 实际应用 26
第二部分 模式故事
第4章 仓库管理流程控制 33
4.1 系统范畴 33
4.2 仓库管理流程控制 34
第5章 基线架构 37
5.1 架构环境 37
5.2 划分大泥球 38
5.3 层次分解 38
5.4 访问领域对象功能 40
5.5 网络桥接 41
5.6 分离用户界面 43
5.7 功能分布 45
5.8 支持并发的领域对象访问 47
5.9 获得可扩展的并发性 48
5.10 将面向对象与关系型数据库连接起来 49
5.11 领域对象的运行时配置 50
5.12 基线架构总结 51
第6章 通信中间件 54
6.1 分布式系统的中间件架构 54
6.2 对中间件的内部设计进行结构化 57
6.3 封装底层系统机制 58
6.4 分离ORB核心事件 59
6.5 ORB连接管理 61
6.6 提高ORB的可伸缩性 63
6.7 实现同步请求队列 65
6.8 可互换的内部ORB机制 66
6.9 管理ORB策略 68
6.10 ORB动态配置 69
6.11 通信中间件总结 71
第7章 仓库拓扑 74
7.1 仓库拓扑基线 74
7.2 表现层次化的存储结构 74
7.3 存储结构导航 77
7.4 存储属性建模 78
7.5 不同的存储单元行为 79
7.6 实现全局功能 81
7.7 遍历仓库拓扑 81
7.8 支持控制流扩展 83
7.9 连接数据库 84
7.10 维护内存中的存储单元数据 85
7.11 配置仓库拓扑 86
7.12 细述显式接口 88
7.13 仓库拓扑总结 89
第8章 模式故事背后的故事 91
第三部分 模式语言
第9章 从混沌到结构 97
9.1 Domain Model** 106
9.2 Layers** 108
9.3 Model-View-Controller** 109
9.4 Presentation-Abstraction-Control 111
9.5 Microkernel** 113
9.6 Reflection* 114
9.7 Pipes and Filters** 116
9.8 Shared Repository** 117
9.9 Blackboard 119
9.10 Domain Object** 121
第10章 分布式基础设施 123
10.1 Messaging** 129
10.2 Message Channel** 130
10.3 Message Endpoint** 132
10.4 Message Translator** 133
10.5 Message Router** 134
10.6 Publisher-Subscriber** 135
10.7 Broker** 137
10.8 Client Proxy** 139
10.9 Requestor** 140
10.10 Invoker** 142
10.11 Client Request Handler** 143
10.12 Server Request Handler** 144
第11章 事件分离和分发 147
11.1 Reactor** 150
11.2 Proactor* 152
11.3 Acceptor-Connector** 154
11.4 Asynchronous Completion Token** 155
第12章 接口划分 157
12.1 Explicit Interface** 163
12.2 Extension Interface** 165
12.3 Introspective Interface** 166
12.4 Dynamic Invocation Interface* 167
12.5 Proxy** 169
12.6 Business Delegate** 170
12.7 Facade** 171
12.8 Combined Method** 172
12.9 Iterator** 173
12.10 Enumeration Methond** 174
12.11 Batch Method** 175
第13章 组件划分 177
13.1 Encapsulated Implementation** 181
13.2 Whole-Part** 183
13.3 Composite** 185
13.4 Master-Slave** 186
13.5 Half-Object plus Protocol** 188
13.6 Replicated Component Group** 189
第14章 应用控制 191
14.1 Page Controller** 196
14.2 Front Controller** 197
14.3 Application Controller** 198
14.4 Command Processor** 199
14.5 Template View** 200
14.6 Transform View** 201
14.7 Firewall Proxy** 202
14.8 Authorization** 204
第15章 并发 206
15.1 Half-Sync/Half-Async** 209
15.2 Leader/Followers** 211
15.3 Active Object** 212
15.4 Monitor Object** 214
第16章 同步 216
16.1 Guarded Suspension** 221
16.2 Future** 223
16.3 Thread-Safe Interface* 224
16.4 Double-Checked Locking 225
16.5 Strategized Locking** 226
16.6 Scoped Locking** 227
16.7 Thread-Specific Storage 228
16.8 Copied Value** 230
16.9 Immutable Value** 231
第17章 对象间的交互 233
17.1 Observer** 237
17.2 Double Dispatch ** 238
17.3 Mediator* 239
17.4 Command** 240
17.5 Memento** 242
17.6 Context Object** 243
17.7 Data Transfer Object** 244
17.8 Message** 245
第18章 适配与扩展 247
18.1 Bridge** 255
18.2 Object Adapter** 256
18.3 Chain of Responsibility* 257
18.4 Interpreter 258
18.5 Interceptor** 260
18.6 Visitor** 261
18.7 Decorator 262
18.8 Execute-Around Object** 264
18.9 Template Method* 265
18.10 Strategy** 266
18.11 Null Object** 267
18.12 Wrapper Facade** 269
18.13 Declarative Component Configuration* 270
第19章 模态行为 272
19.1 Objects for States* 274
19.2 Methods for States* 275
19.3 Collections for States* 276
第20章 资源管理 278
20.1 Container* 288
20.2 Component Configurator* 289
20.3 Object Manager** 291
20.4 Lookup** 292
20.5 Virtual Proxy** 294
20.6 Lifecycle Callback** 295
20.7 Task Coordinator* 296
20.8 Resource Pool** 298
20.9 Resource Cache** 299
20.10 Lazy Acquisition** 300
20.11 Eager Acquisition** 301
20.12 Partial Acquisition* 303
20.13 Activator** 304
20.14 Evictor** 305
20.15 Leasing** 306
20.16 Automated Garbage Collection** 307
20.17 Counting Handles** 309
20.18 Abstract Factory** 311
20.19 Builder* 312
20.20 Factory Method** 313
20.21 Disposal Method** 314
第21章 数据库访问 316
21.1 Database Access Layer** 318
21.2 Data Mapper** 320
21.3 Row Data Gateway** 321
21.4 Table Data Gateway ** 323
21.5 Active Record 324
第22章 最后的思考 326
术语表 327
参考书目 340

编辑推荐

  迄今为止,人们提出的软件开发模式有不少是关于分布式计算的,但人们始终无法以完整的视角了解分布式计算中各种模式是如何协同工作、取长补短的。构建复杂的分布式系统似乎成为了永远也无法精通的一门手艺。《面向模式的软件架构:分布式计算的模式语言(卷4)》的出版改变了这一切。  《面向模式的软件架构:分布式计算的模式语言(卷4)》是经典的POSA系列的第4卷。介绍了一种模式设计语言。将分布式系统开发中的114个模式联系起来。书中首先介绍了一些分布式系统和模式语言的概念。然后通过一个仓库管理流程控制系统的例子,介绍如何使用模式语言设计分布式系统,最后介绍模式语言本身。  使用这一模式语言,人们可以有效地解决许多与分布式系统开发相关的技术问题。如  ·对象交互  ·接口与组件划分  ·应用控制  ·资源管理  ·并发与同步  《面向模式的软件架构:分布式计算的模式语言(卷4)》从实用角度展示了如何从现有的主要模式中整合出一门全面的模式语言,用于开发分布式计算中间件及应用程序。作为该领域在市场上唯一统揽全局的书,它将给读者带来醍醐灌顶的感觉!

作者简介

迄今为止,人们提出的软件开发模式有不少是关于分布式计算的,但人们始终无法以完整的视角了解分布式计算中各种模式是如何协同工作、取长补短的。构建复杂的分布式系统似乎成为了永远也无法精通的一门手艺。本书的出版改变了这一切。
本书是经典的POSA系列的第4卷,介绍了一种模式设计语言,将分布式系统开发中的114个模式联系起来。书中首先介绍了一些分布式系统和模式语言的概念,然后通过一个仓库管理流程控制系统的例子,介绍如何使用模式语言设计分布式系统,最后介绍模式语言本身。
使用这一模式语言,人们可以有效地解决许多与分布式系统开发相关的技术问题,如
★ 对象交互
★ 接口与组件划分
★ 应用控制
★ 资源管理
★ 并发与同步
本书从实用角度展示了如何从现有的主要模式中整合出一门全面的模式语言,用于开发分布式计算中间件及应用程序。作为该领域在市场上唯一统揽全局的书,它将给读者带来醍醐灌顶的感觉!

图书封面


 面向模式的软件架构 卷4:分布式计算的模式语言下载 更多精彩书评



发布书评

 
 


精彩书评 (总计3条)

  •     这本书整理、分类了大型分布式系统的设计和实现过程中使用的常见模式。这种整理分类的工作非常好,把散见于各个文献和项目中的知识进行了梳理,变成了系统化的可以学习的东西。可惜限于篇幅,每个模式只是点到为止,薄薄348页,讲了100多个模式,而且前96页要用来讲一些一般话题,真正留给每个模式的篇幅很少。读完以后收获是不少,但是离理想中的标准还有一些差距。虽然这本书主要是想做一个索引工作,需要读者继续延伸阅读其他文献,但是本书实再是太简略了,有些影响到基本的理解了。还有一个缺点,就是有些模式的示意图是画得非常的——嗯怎么说呢——抽象,看了以后觉得不能够充分体现这个模式的精髓。相比之下,GoF的设计模式里的配图就好太多了,让人看完以后都不用再看文字就能知道是什么意思。举个例子,本书里的抽象工厂和GoF里的抽象工厂的图一比,就会发现,本书里的抽象工厂的图完全没有说明问题。抽象工厂用来创建成套的对象,所以画图的话,怎么也得有个create_x, create_y, create_z之类的吧,结果图里只有一个简单的create,这就在说明问题的效果上大打折扣了。综上所述,评个3星。
  •     个人对纯粹程序员的能力层次分三种,编码能力、设计能力、架构能力。这本书站的高度很高,视野很大,站在软件架构的高度上来谈不同层次的设计,习惯用法、设计模式、架构模式,很多思路都能让我茅塞顿开,引用当时写的一个微博:但凡名字中包含模式和架构的书,读起来都莫测高深,恨不得让读者膜拜得四肢着地,翻过之后却束之高阁。敲的代码多了,忙着完成业务功能,虽然也能熟能生巧和累积经验,可回头看看这些大部头的书,偶尔茅塞顿开,偶尔细细思索,反而收获良多。。写代码犹如赶路,匆匆忙忙之中,别忘了沿途的风景。。书比较抽象,代码示例不多。
  •     看完前六章了 启发很大甚至再回想EJB 都会有不同的看法但是需要有设计模式基础才行 缺点是缩写和没有翻译的英文专有名词很多 不好记可能和我记性差 英语水平不高 看得慢 也有关系

精彩短评 (总计25条)

  •     读了前几章 启发很大 关注 问题WHY WHEN HOW 3个方面 很好 对程序设计模式的理解拓宽到了分布式系统的设计上
  •     模式盛宴啊!
  •     GOF设计模式的扩展阅读
  •     很不错的书,对学习软件的有帮助,呵呵
  •     主要还是模式罗列,以后可以作为手册查询。挺受启发。
  •     内容丰富,信息量很大,可以说是对前三本内容的一个梳理总结。
  •     设计模式领域经典书籍
  •     不同于GOF设计模式的模式,很抽象,很有收获。。
  •     经验和实践结合,感悟才会多些
  •     如饮甘露,第二遍
  •     多种设计模式的高度概括,我现在的基础没法完全理解,只是在分析HDFS源码的时候翻翻,找一些相关的内容
  •     刚收到, 没有细看, 应该不错
  •     找时间再细读
  •     这卷有点类似前三卷的总结集合.
  •     总结了常用的分布式场景使用的设计模式,对于构建分布式基础应用的开发人员,嘟嘟这本书的话可以少走很多弯路。
  •     篇幅太短,点到为止
  •     分布式软件架构模式的导论,比较论文化
  •     经典,需要经常看看
  •     有些部分还没有读懂,不懂奥妙在何处
  •     感觉此书毫无帮助,连个片头语都写不好,怎么能够相信内容总结到位呢?写模式的书,是吧,没看到代码,图像画得也粗糙。建议大家不要浪费时间看。
  •     不错,正版实惠
  •     终于读完本书。感觉本书像是一本模式词典,几乎涵盖了软件设计的主要模式。可以从这本书入手,查阅模式,然后再通过查阅《面向模式的软件架构》第1卷、第2卷和第3卷,以及《企业集成模式》与《企业应用架构模式》等书,做进一步的了解与深入分析。这样才能完全掌握。本书对模式的介绍非常清晰,突出了模式的要点。缺陷是范例不足。但本书第二部分给出的综合案例非常有价值。总之,是不可多得的好书。翻译明白晓畅,很好地表达了原作者的意图。
  •     装X图书。没看过都不好意思跟别人说自己也搞架构设计,看过了没发觉有啥新鲜的。
  •     集前POSA1和2的大成,实在没时间看前面三本,就看这本吧。名字是讨论分布式,其实涉及到的模式都在讲
  •     看不懂,慢慢研究中
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024