企业应用架构模式(英文影印版)(企业应用开发圣经)(书评积分兑换赠品)
基本信息
- 作者: (美)Martin Fowler [作译者介绍]
- 丛书名: 图灵程序设计丛书 软件工程系列
- 出版社:人民邮电出版社
- ISBN:9787115204226
- 上架时间:2010-7-20
- 出版日期:2009 年4月
- 开本:16开
- 页码:533
- 版次:1-1
- 所属分类:
赠品
编辑推荐
企业应用开发圣经
软件开发大师代表作,兼顾各种主流开发平台
传授高手之间口口相传的“内功心法”
内容简介回到顶部↑
面向对象大师martin fowler及其专家级合作者将40多种常用解决方案转化成模式,为我们提供了这本能够应用于任何一种企业应用平台的、关于解决方案的参考书。本书叙述深入浅出,采用大量uml 图进一步阐明有关概念。前面介绍企业应用的背景知识,如分层架构、web表现、业务逻辑、数据库映射、并发、会话、分布策略等。在此基础上,随后的各章分别对与这些背景知识相关的设计模式进行了详细的介绍,并配以详细的java代码或c#代码示例。.
本书适合设计和构建企业应用的软件架构师、设计人员和编程人员阅读,同时也可作为高等院校计算机专业及软件学院相关课程的参考教材。..
随着信息技术的广泛应用,系统需要处理的数据量越来越大,企业级软件开发已经渐成主流,而开发人员面临的困难与挑战也是显而易见的。更糟糕的是,这一领域的资料一直非常缺乏。
本书是软件开发大师martin fowler的代表作,采用模式的形式系统总结了业界多年积累的经验,被称为“企业级应用开发领域的圣经”,出版以来一直畅销不衰,至今仍然无可替代。作者在精彩地阐述了企业应用开发和设计中的核心原则基础上,详细、生动地讲述了51个模式并给出主流平台(java和.net)中的应用实例,更分析了许多相似模式之间的差异,提供了具体运用和选择这些模式的大量经验之谈,使你不仅知其然,更知其所以然。
这是一部软件开发领域不朽的经典,任何一位真正的软件开发人员都不可错过。...
本书适合设计和构建企业应用的软件架构师、设计人员和编程人员阅读,同时也可作为高等院校计算机专业及软件学院相关课程的参考教材。..
随着信息技术的广泛应用,系统需要处理的数据量越来越大,企业级软件开发已经渐成主流,而开发人员面临的困难与挑战也是显而易见的。更糟糕的是,这一领域的资料一直非常缺乏。
本书是软件开发大师martin fowler的代表作,采用模式的形式系统总结了业界多年积累的经验,被称为“企业级应用开发领域的圣经”,出版以来一直畅销不衰,至今仍然无可替代。作者在精彩地阐述了企业应用开发和设计中的核心原则基础上,详细、生动地讲述了51个模式并给出主流平台(java和.net)中的应用实例,更分析了许多相似模式之间的差异,提供了具体运用和选择这些模式的大量经验之谈,使你不仅知其然,更知其所以然。
这是一部软件开发领域不朽的经典,任何一位真正的软件开发人员都不可错过。...
作译者回到顶部↑
本书提供作译者介绍
Martin Fowler 享誉世界的软件开发大师,现为著名软件开发咨询公司ThoughtWorks的首席科学家。他在面向对象分析与设计、UML、设计模式、软件开发方法学、 XP、重构等方面都有重要贡献。他更是全球最具影响力的技术作家之一,除本书外,他的《分析模式》、《UML精粹》、《重构》等著作都已经成为经典。
.. << 查看详细
.. << 查看详细
目录回到顶部↑
preface . xvii
who this book is for xx
acknowledgments xxi
colophon xxiii
introduction 1
architecture 1
enterprise applications 2
kinds of enterprise application 5
thinking about performance 6
patterns 9
the structure of the patterns 11
limitations of these patterns 13
part 1: the narratives 15
chapter 1: layering 17
the evolution of layers in enterprise applications 18
the three principal layers 19
choosing where to run your layers 22
chapter 2: organizing domain logic 25
making a choice 29
service layer 30
who this book is for xx
acknowledgments xxi
colophon xxiii
introduction 1
architecture 1
enterprise applications 2
kinds of enterprise application 5
thinking about performance 6
patterns 9
the structure of the patterns 11
limitations of these patterns 13
part 1: the narratives 15
chapter 1: layering 17
the evolution of layers in enterprise applications 18
the three principal layers 19
choosing where to run your layers 22
chapter 2: organizing domain logic 25
making a choice 29
service layer 30
前言回到顶部↑
1999年春天,我飞抵芝加哥为ThoughtWorks公司正在开发的一个项目担任顾问。ThoughtWorks是一个规模虽小但正在快速成长的应用开发公司。这个项目属于那种雄心勃勃的企业级应用——一个后端租赁系统。简单说,它处理的是租户签字认可后所有与租赁有关的事务,包括发送账单、处理某些人对所租房产的改造、追踪那些未按时付款的租户、处理提前退租的情况等。这听起来好像并不太难实现,但是你大概没有意识到,租赁合同极度复杂并且总在不断变化。它的业务“逻辑”几乎不能套用任何已有的逻辑模式,因为那些“逻辑”归根到底是商人们为了抢生意而制定的,一些奇怪的小改动都可能对赢得某笔生意起关键作用。而每次这样的成功就意味着系统复杂性的增加。.
我感兴趣的正是这类问题:如何捕获这些复杂情况,并设计一个面向对象的系统使问题更容易解决。事实上,我认为面向对象的最大优点就在于它能够使复杂逻辑易于处理。为复杂业务问题开发一个好的领域模型(Domain Model,116)很困难,但结果往往非常令人满意。
但问题还没有完。我们的领域模型必须持久存储到数据库中,与许多项目一样,我们使用的也是关系数据库。我们还必须将该模型与用户界面连接起来,还要支持远程应用程序使用本软件,并将软件与第三方的软件包集成。所有这些工作都基于一种称作J2EE的新技术,当时世界上没有人在这方面具备真正的实战经验。
虽然J2EE当时还很新,但我们可以受助于以往的经验。我曾经使用C++、Smalltalk和CORBA开发类似系统已经多年。ThoughtWorks公司中许多人在Forte 方面有丰富经验。我们已经有了关键架构的思路,剩下的只是弄清如何用J2EE实现。三年后再来回顾,虽然设计并不完美,但却很好地经受住了时间的考验。
本书正是为这样的情形而撰写的。多年来,我见证了许多企业级应用项目。这些项目通常都包含相似的设计思路,事实证明这些设计思路可以有效地处理企业应用中不可避免的复杂性。本书就是将这些设计思路以模式形式表述的一个起点。
本书分为两个部分,第一部分是一些叙述性的章节,讨论企业级应用程序设计中的一些重要主题。这些章节介绍了企业级应用程序架构的各种问题及其解决方案,但解决方案的细节没有深入讨论。解决方案的细节是在本书的第二部分中以模式的方式组织起来的。这些模式都是参考,我并不希望读者逐页阅读。我的意图是,读者从头到尾将第一部分的叙述性章节读完,然后再根据兴趣和需求浏览第二部分的模式章节。因此,本书实际上是一本简短的叙述图书和详尽的参考书的二合一。
本书讨论的是企业级应用程序的设计。企业级应用程序涉及大量复杂数据的显示、操作和存储以及对这些数据进行处理的业务流程的自动化。典型的例子有预订系统、财务系统、供应链系统以及许多其他支持现代商业运作的系统。企业级应用和嵌入式系统、控制系统、电信系统或者桌面应用软件不同,它们有自己特有的难度和解决方案。因此,如果你从事的是上述那些非企业领域的工作,那么本书不适合你(除非想体会一下企业级应用程序是怎么一回事)。如果需要一本关于软件架构的通用书,我推荐[POSA]。
在构建企业级应用时有许多架构方面的问题。本书恐怕无法面面俱到。在软件开发方面,我一直坚信迭代开发方法。迭代开发的核心在于只要软件具备了用户可用的功能,就应当交付,即使软件并未完成。虽然著书与编写软件之间存在很多差异,但在这一点上我认为是相通的。也就是说,虽然本书尚不全面,但(我相信)可以为读者提供有关企业级应用程序架构方面的有益建议。本书讨论的主题包括:
企业级应用程序的分层;
构建领域(业务)逻辑;
构建Web用户界面;
将内存中的模块(特别是对象)与关系数据库关联起来;..
处理在无状态环境下的会话状态;
分布的原则。
本书尚未涉及的主题更多。我很想撰写关于验证的组织、消息和异步通信的加入、安全、错误处理、集群、应用集成、架构重构、构建富客户用户界面等方面的书籍或文章。但是,由于时间和篇幅的限制以及想法尚不成熟,本书没有涉及上述内容。我希望在不久的将来能看到这方面的模式。也许我会撰写另一本书讨论这些内容,或者会有其他人来弥补这一缺憾。
其中基于消息的通信是相当重要的问题。从事多应用程序集成的开发者正越来越多地用到异步的、基于消息的通信方法。在应用程序内部的应用也有很多内容需要探讨。
本书并不针对特定的软件平台。从20世纪80年代末到90年代初,我开始在Smalltalk、C++和CORBA项目中使用这些模式。而20世纪90年代后期我开始在Java方面做大量的工作,我发现这些模式可以很好地应用于较早的Java/CORBA系统和其后基于J2EE的开发。最近,我开始探索微软的.NET平台,发现这些模式同样有效。ThoughtWorks公司的同事也介绍了他们的经验,尤其是Forte方面。我不敢说这些模式能够适用于所有已经和即将用于企业级应用的开发平台,但到目前为止,它们显示出足够的适用性。
本书为大多数模式提供了代码示例。选择程序设计语言时主要考虑大多数读者都能够阅读和理解。Java就是一个很好的选择。任何人只要能阅读C或C++代码就可以读懂Java代码,Java比C++简单得多。大多数C++程序员都能够理解Java,但反过来却并非如此。我偏爱面向对象,当然倾向于使用面向对象语言。因此,大多数代码示例使用的是Java语言。写作本书时,微软的.NET环境逐渐稳定,它的C#语言与Java有许多相同之处。所以某些代码示例也使用了C#语言,虽然这样做会多少有一些风险,因为大多数开发者没有太多.NET经验,所以所用的惯用法并不成熟。这两种语言都基于C,因此只要能阅读其中一种,就算对另一种语言或平台没有深入研究,也能阅读。我的目的是使用一种能够让最多的软件开发者阅读的语言,虽然这并非他们主要使用或爱用的语言。(谨向那些喜欢Smalltalk、Delphi、Visual Basic、Perl、Python、Ruby、COBOL或其他语言的读者致歉。我知道你们认为有比Java或C#更好的语言,我只能说我也认为如此!)
示例是用来阐述和解释模式思想的。它们并非可以直接使用的解决方案,任何情况下还需要做不少工作才能应用它们。模式只是有益的起点,不是终点。
本书面向的读者
我感兴趣的正是这类问题:如何捕获这些复杂情况,并设计一个面向对象的系统使问题更容易解决。事实上,我认为面向对象的最大优点就在于它能够使复杂逻辑易于处理。为复杂业务问题开发一个好的领域模型(Domain Model,116)很困难,但结果往往非常令人满意。
但问题还没有完。我们的领域模型必须持久存储到数据库中,与许多项目一样,我们使用的也是关系数据库。我们还必须将该模型与用户界面连接起来,还要支持远程应用程序使用本软件,并将软件与第三方的软件包集成。所有这些工作都基于一种称作J2EE的新技术,当时世界上没有人在这方面具备真正的实战经验。
虽然J2EE当时还很新,但我们可以受助于以往的经验。我曾经使用C++、Smalltalk和CORBA开发类似系统已经多年。ThoughtWorks公司中许多人在Forte 方面有丰富经验。我们已经有了关键架构的思路,剩下的只是弄清如何用J2EE实现。三年后再来回顾,虽然设计并不完美,但却很好地经受住了时间的考验。
本书正是为这样的情形而撰写的。多年来,我见证了许多企业级应用项目。这些项目通常都包含相似的设计思路,事实证明这些设计思路可以有效地处理企业应用中不可避免的复杂性。本书就是将这些设计思路以模式形式表述的一个起点。
本书分为两个部分,第一部分是一些叙述性的章节,讨论企业级应用程序设计中的一些重要主题。这些章节介绍了企业级应用程序架构的各种问题及其解决方案,但解决方案的细节没有深入讨论。解决方案的细节是在本书的第二部分中以模式的方式组织起来的。这些模式都是参考,我并不希望读者逐页阅读。我的意图是,读者从头到尾将第一部分的叙述性章节读完,然后再根据兴趣和需求浏览第二部分的模式章节。因此,本书实际上是一本简短的叙述图书和详尽的参考书的二合一。
本书讨论的是企业级应用程序的设计。企业级应用程序涉及大量复杂数据的显示、操作和存储以及对这些数据进行处理的业务流程的自动化。典型的例子有预订系统、财务系统、供应链系统以及许多其他支持现代商业运作的系统。企业级应用和嵌入式系统、控制系统、电信系统或者桌面应用软件不同,它们有自己特有的难度和解决方案。因此,如果你从事的是上述那些非企业领域的工作,那么本书不适合你(除非想体会一下企业级应用程序是怎么一回事)。如果需要一本关于软件架构的通用书,我推荐[POSA]。
在构建企业级应用时有许多架构方面的问题。本书恐怕无法面面俱到。在软件开发方面,我一直坚信迭代开发方法。迭代开发的核心在于只要软件具备了用户可用的功能,就应当交付,即使软件并未完成。虽然著书与编写软件之间存在很多差异,但在这一点上我认为是相通的。也就是说,虽然本书尚不全面,但(我相信)可以为读者提供有关企业级应用程序架构方面的有益建议。本书讨论的主题包括:
企业级应用程序的分层;
构建领域(业务)逻辑;
构建Web用户界面;
将内存中的模块(特别是对象)与关系数据库关联起来;..
处理在无状态环境下的会话状态;
分布的原则。
本书尚未涉及的主题更多。我很想撰写关于验证的组织、消息和异步通信的加入、安全、错误处理、集群、应用集成、架构重构、构建富客户用户界面等方面的书籍或文章。但是,由于时间和篇幅的限制以及想法尚不成熟,本书没有涉及上述内容。我希望在不久的将来能看到这方面的模式。也许我会撰写另一本书讨论这些内容,或者会有其他人来弥补这一缺憾。
其中基于消息的通信是相当重要的问题。从事多应用程序集成的开发者正越来越多地用到异步的、基于消息的通信方法。在应用程序内部的应用也有很多内容需要探讨。
本书并不针对特定的软件平台。从20世纪80年代末到90年代初,我开始在Smalltalk、C++和CORBA项目中使用这些模式。而20世纪90年代后期我开始在Java方面做大量的工作,我发现这些模式可以很好地应用于较早的Java/CORBA系统和其后基于J2EE的开发。最近,我开始探索微软的.NET平台,发现这些模式同样有效。ThoughtWorks公司的同事也介绍了他们的经验,尤其是Forte方面。我不敢说这些模式能够适用于所有已经和即将用于企业级应用的开发平台,但到目前为止,它们显示出足够的适用性。
本书为大多数模式提供了代码示例。选择程序设计语言时主要考虑大多数读者都能够阅读和理解。Java就是一个很好的选择。任何人只要能阅读C或C++代码就可以读懂Java代码,Java比C++简单得多。大多数C++程序员都能够理解Java,但反过来却并非如此。我偏爱面向对象,当然倾向于使用面向对象语言。因此,大多数代码示例使用的是Java语言。写作本书时,微软的.NET环境逐渐稳定,它的C#语言与Java有许多相同之处。所以某些代码示例也使用了C#语言,虽然这样做会多少有一些风险,因为大多数开发者没有太多.NET经验,所以所用的惯用法并不成熟。这两种语言都基于C,因此只要能阅读其中一种,就算对另一种语言或平台没有深入研究,也能阅读。我的目的是使用一种能够让最多的软件开发者阅读的语言,虽然这并非他们主要使用或爱用的语言。(谨向那些喜欢Smalltalk、Delphi、Visual Basic、Perl、Python、Ruby、COBOL或其他语言的读者致歉。我知道你们认为有比Java或C#更好的语言,我只能说我也认为如此!)
示例是用来阐述和解释模式思想的。它们并非可以直接使用的解决方案,任何情况下还需要做不少工作才能应用它们。模式只是有益的起点,不是终点。
本书面向的读者
媒体评论回到顶部↑
“本书是企业级应用设计与开发领域的杰作,处处闪烁着思想的光芒,发人深省。”
——Jolt奖颁奖词
——Jolt奖颁奖词


点击看大图





加载中...
