企业应用架构模式(英文版)

企业应用架构模式(英文版)
作 者: 福勒
出版社: 人民邮电出版社
丛编项: 图灵程序设计丛书
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: 管理信息系统
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Martin Fowler:享誉世界的软件开发大师。现为著名软件开发咨询公司ThoughtWorks的首席科学家。他在面向对象分析与设计、UML、设计模式、软件开发方法学、XP、重构等方面都有重要贡献。他更全球最具影响力的技术作家之一,除本书外,他的《分析模式》、《UML精粹》和《重构》等著作都已经成为经典。

内容简介

面向对象大师Martin Fowler及其专家级合作者将40多种常用解决方案转化成模式,为我们提供了这本能够应用于任何一种企业应用平台的、关于解决方案的参考书。《企业应用架构模式(英文版)》叙述深入浅出,采用大量UML图进一步阐明有关概念。前面介绍企业应用的背景知识,如分层架构、Web表现、业务逻辑、数据库映射、并发、会话、分布策略等。在此基础上,随后的各章分别对与这些背景知识相关的设计模式进行了详细的介绍,并配以详细的Java代码或C#代码示例。《企业应用架构模式(英文版)》适合设计和构建企业应用的软件架构师、设计人员和编程人员阅读,同时也可作为高等院校计算机专业及软件学院相关课程的参考教材。

图书目录

Preface xvii

Who This Book Is For xx

A cknowledgments xxi

Colophon xxiii

Introduction 1

Architecture 1

EnterpriseApplications 2

Kinds of EnterpriseApplication 5

ThinkingAbout 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 EnterpriseApplications 18

The Three Principal Layers 19

Choosing Where to Run Your Layers 22

Chapter 2: Organizing Domain Logic 25

MakingA Choice 29

Service Layer 30

Chapter 3: Mapping to Relational Databases 33

Architectural Patterns 33

The Behavioral Problem 38

Reading in Data 40

Structural Mapping Patterns 41

Mapping Relationships 41

Inheritance 45

Building the Mapping 47

Double Mapping 48

Using Metadata 49

Database Connections 50

Some Miscellaneous Points 52

Further Reading 53

Chapter 4: Web Presentation 55

View Patterns 58

Input Controller Patterns 61

Further Reading 61

Chapter 5: Concurrency (by Martin FowlerAnd David Rice) 63

Concurrency Problems 64

Execution Contexts 65

IsolationAnd Immutability 66

OptimisticAnd Pessimistic Concurrency Control 67

Preventing Inconsistent Reads 68

Deadlocks 70

Transactions 71

ACID 71

Transactional Resources 72

Reducing Transaction Isolation for Liveness 73

BusinessAnd System Transactions 74

Patterns for Offline Concurrency Control 76

Application Server Concurrency 78

Further Reading 80

Chapter 6: Session State 81

The Value of Statelessness 81

Session State 83

Ways to Store Session State 84

Chapter 7: Distribution Strategies 87

TheAllure of Distributed Objects 87

RemoteAnd Local Interfaces 88

Where You Have to Distribute 90

Working with the Distribution Boundary 91

Interfaces for Distribution 92

Chapter 8: Putting ItAll Together 95

Starting with the Domain Layer 96

Down to the Data Source Layer 97

Data Source for Transaction Script (11 O) 97

Data Source for Table Module (125) 98

Data Source for Domain Model (116) 98

The Presentation Layer 99

Some Technology-SpecificAdvice 100

JavaAnd J2EE 100

NET 101

Stored Procedures 102

Web Services 103

Other Layering Schemes 103

PART 2: The Patterns 107

Chapter 9: Domain Logic Patterns 109

Transaction Script 110

How It Works 110

When to Use It 111

The Revenue Recognition Problem 112

Example: Revenue Recognition (Java) 113

Domain Model 116

How It Works 116

When to Use It 119

Further Reading 119

Example: Revenue Recognition (Java) 120

Table Module 125

How It Works 126

When to Use It 128

Example: Revenue Recognition withA Table Module (C#) 129

Service Layer (by Randy Stafford) 133

How It Works 134

When to Use It 137

Further Reading 13 7

Example: Revenue Recognition (Java) 138

Chapter 10: Data SourceArchitectural Patterns 143

Table Data Gateway 144

How It Works 144

When to Use It 145

Further Reading 146

Example: Person Gateway (C#) 146

Example: UsingADO NET Data Sets (C#) 148

Row Data Gateway 152

How It Works 152

When to Use It 153

Example:A Person Record (Java) 155

Example:A Data Holder forA Domain Object (Java) 158

Active Record 160

How It Works 160

When to Use It 161

Example:A Simple Person (Java) 162

Data Mapper 165

How It Works 165

When to Use It 170

Example:A Simple Database Mapper (Java) 171

Example: Separating the Finders (Java) 176

Example: CreatingAn Empty Object (Java) 179

Chapter 11: Object-Relational Behavioral Patterns 183

Unit of Work 184

How It Works 184

When to Use It 189

Example: Unit of Work with Object Registration (Java)

(by David Rice) 190

Identity Map 195

How It Works 195

When to Use It 198

Example: Methods forAn Identity Map (Java) 198

Lazy Load 200

How It Works 200

When to Use It 203

Example: Lazy Initialization (Java) 203

Example: Virtual Proxy (Java) 203

Example: UsingA Value Holder (Java) 205

Example: Using Ghosts (C#) 206

3hapter 12: Object-Relational Structural Patterns 215

Identity Field 216

How It Works 216

When to Use It 220

Further Reading 221

Example: Integral Key (C#) 221

Example: UsingA Key Table (Java) 222

Example: UsingA Compound Key (Java) 224

Foreign Key Mapping 236

How It Works 236

When to Use It 239

Example: Single-Valued Reference (Java) 240

Example: Multitable Find (Java) 243

Example: Collection of References (C#) 244

Association Table Mapping 248

How It Works 248

When to Use It 249

Example: EmployeesAnd Skills (C#) 250

Example: Using Direct SQL (Java) 253

Example: UsingA Single Query for Multiple Employees (Java)

(by Matt FoemmelAnd Martin Fowler) 256

Dependent Mapping 262

How It Works 262

When to Use It 263

Example:AlbumsAnd Tracks (Java) .. 264

Embedded Value 268

How It Works 268

When to Use It 268

Further Reading 270

Example: Simple Value Object (Java) 270

Serialized LOB 272

How It Works 272

When to Use It 274

Example: SerializingA Department Hierarchy in

XML (Java) 274

Single Table Inheritance 278

How It Works 278

When to Use It 279

Example:A Single Table for Players (C#) 280

LoadingAn Object from the Database 281

Class Table Inheritance 285

How It Works 285

When to Use It 286

Further Reading 287

Example: PlayersAnd Their Kin (C#) 287

Concrete Table Inheritance 293

How It Works 293

When to Use It 295

Example: Concrete Players (C#) 296

Inheritance Mappers 302

How It Works 303

When to Use It 304

Chapter 13: Object-Relational Metadata Mapping Patterns 305

Chapter 14: Web Presentation Patterns 329

Chapter 15: Distribution Patterns 387

Chapter 16: Offline Concurrency Patterns 415

Chapter 17: Session State Patterns 455

Chapter 18: Base Patterns 465

Index 517