软件架构模式不是孤立的,它们通过背景相互联系在一起。每个模式都有初始背景和终止背景,而一个模式的终止背景是另一个模式的初始背景,因此,描述模式时通常会引用其他几个模式。可以认为,这些被引用的模式与当前描述的模式紧密相关,它们一起用于解决特定问题。从另一个角度看,可将一系列模式归并为模式系统[POSA1],它描述了软件开发中的特定问题域。 一般而言,模式并非仅适用于一个行业(如电信行业)或领域(如嵌入式系统),而是适用于众多领域,这些领域具有相同的核心背景——模式的背景。 以Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides(四人组)编写的Design Patterns: Elements of Reusable Object-Oriented Software [GoF95]一书为契机,软件设计人员和开发人员开始对模式产生了浓厚的兴趣。该书阐述了使用面向对象技术和框架开发灵活的软件时应遵守的最佳实践。一年后,Pattern-Oriented Software Architecture: A System of Patterns [POSA1]横空出世,这是POSA系列丛书的第一本,介绍了一些基本架构模式,并提出了一些设计和创建软件框架和应用程序方面的建议。GoF95和POSA1都以软件架构模式为重心,并未涉及资源管理领域。 随着模式工作的日益深入,Hillside Group[Hill04]组织的PLoP和EuroPLoP等会议提供了活跃的论坛,让模式界能够分享新模式。Pattern Language of Program Design(PLoPD)系列丛书[PLoPD1]、[PLoPD2]、[PLoPD3]、[PLoPD4]汇集了这些会议上发布的材料。要了解截至2000年发表的所有模式,请参阅Linda Rising编写的The Pattern Almanac [Risi00]。 专注于特定问题域的现有模式文献对资源管理都是一笔带过。下面是一些与资源管理联系最紧密的著作。要了解每个相关的模式,请参阅本书每个模式的“参见”部分。 并发和联网对象 Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects [POSA2]收录了面向并发和网络的应用程序和中间件采用的模式。其中的并发模式(如Active Object、Monitor Object、Half-Sync/Half-Async、Leader/Followers和Thread-Specific Storage)描述了如何有效地处理对资源(如对象和事件源)的并发访问。鉴于POSA2详细阐述了并发模式,本书不再讨论资源管理方面的并发问题。另一部介绍并发模式的优秀著作是Concurrent Programming in Java: Design Principles and Pattern [Lea99],该书由Doug Lea编写,针对的是Java。要了解专门用于实时系统的模式,推荐你参阅Bruce P. Douglass编写的Real-Time Design Patterns [Doug02]。 远程通信 Remoting Patterns: Patterns for Enterprise, Realtime and Internet Middleware [VKZ04]阐述了如何创建分布式对象基础设施,描述了一种建立在POSA2基础之上的模式语言。该书介绍了CORBA[OMG04a]、Web Services[W3C04]和.NET Remoting[Ramm02]等常见中间件技术的组成部分,这些分布式对象基础设施管理的远程对象也是资源,因此该模式语言包含本书介绍的一些模式,如Lookup、Lazy Acquisition、Pooling和Leasing,但针对的是远程对象。 组件基础设施 Server Component Patterns [VSW02]包含一种模式语言,适用于当今的组件基础设施,如EJB [Sun04b]和COM+ [Ewal01]。该书介绍的模式建立在POSA2和Remoting Patterns [VKZ04]介绍的模式的基础之上。组件是组件基础设施管理的资源,因此Server Component Patterns: Component Infrastructures Illustrated with EJB包含Naming和Instance Pooling模式,它们是本书介绍的Lookup和Pooling模式的具体化。另外,Managed Resource模式是本书介绍的Resource Lifecycle Manager模式的具体应用。 容错 容错有助于确保系统的一致性和稳定性,因此与资源管理模式紧密相关。在当今的高可靠性系统中,普遍采用了[Lapr85]和[ALR01]介绍的容错技术。Titos Saridakis[Sari02]介绍了如何利用模式实现这些技术,这些模式分3类——错误检测、恢复和屏蔽。通过结合使用这3类模式,可打造出特定的容错解决方案。容错技术检测出现了故障的资源,并提供一种错误恢复或屏蔽机制,这有助于确保系统的稳定性。 内存有限的小型系统 在Small Memory Software: Patterns for Systems with Limited Memory [NoWe00]一书中,Charles Weir和James Noble介绍了一些在小型/嵌入式系统中高效管理内存的模式。内存是资源管理范畴中的一种典型资源,因此有多个类似的模式。例如,[NoWe00]介绍的Paging模式是Caching模式的具体化,而Variable Allocation、Fixed Allocation和Pooled Allocation模式分别是Lazy Acquisition、Eager Acquisition和Pooling模式的具体化,Garbage Collector模式[JoLi96]与Evictor模式相关。虽然有所重叠,但并非重复,因为[NoWe00]提供了将这些概念用于内存的详细指南,而本书提供的是更为一般性的指南。 企业系统 Martin Fowler撰写的Patterns of Enterprise Application Architecture [Fowl02]介 绍了当今企业系统中最常用的模式。对企业系统来说,性能和可扩展性也很重要,因此除众多其他模式外,该书还介绍了两个有助于消解这些作用力的模式——Lazy Load和Data Transfer Object,它们分别与Lazy Acquisition和Caching模式相关。 Enterprise Integration Patterns [HoWo03]介绍的模式描述了如何在企业应用程序中设计、创建和部署消息收发解决方案,很好地补充了Fowler的著作。 Enterprise Solution Patterns Using Microsoft .NET [TMQH+03]收录了使用.NET技术[Rich02]打造企业系统的最佳实践,其中的Page Cache模式与Caching模式直接相关。 另一部探讨企业解决方案的杰作是Paul Dyson和Andrew Longshaw编写的Architecting Enterprise Solutions: Patterns for High-Capability Internet-based Systems [DyLo04]。该书就如何打造大型企业解决方案提供了实用的架构指南,尤其珍贵的是满足非功能性需求的模式,其中的Resource Pooling和Local Cache与本书介绍的模式直接相关。 描述模式时,不应以特定应用领域为背景,否则将把模式的适用性限定在该领域。在很多情况下,不同领域可彼此借鉴,例如,实时和嵌入式领域的软件开发项目越来越广泛地使用了企业领域的最佳实践和技术。事实证明这种借鉴是成功的,因为随着CPU性能不断提高,可以有更多的抽象层次,这让实时领域受益良多。过去几年,在诸如OOPSLA(Object-Oriented Programming Systems, Languages, and Applications,面向对象的编程系统、语言和应用程序)等会议上,就分布式实时和嵌入式系统模式的各种座谈和讨论证明了这一点。
面向模式的软件架构,卷3——1.5 相关成果
书名: 面向模式的软件架构,卷3
作者: [德] Michael Kircher
出版社: 人民邮电出版社
原作名: Pattern-Oriented Software Architecture Volume 3: Patterns for Resource Management
副标题: 资源管理模式
译者: 袁国忠
出版年: 2013-6
页数: 180
定价: 49.00元
装帧: 平装
ISBN: 9787115313430