Patterns of Enterprise Application Architecture (Hardcover)
Martin Fowler
- 出版商: Addison Wesley
- 出版日期: 2002-11-05
- 售價: $2,640
- 貴賓價: 9.5 折 $2,508
- 語言: 英文
- 頁數: 560
- 裝訂: Hardcover
- ISBN: 0321127420
- ISBN-13: 9780321127426
-
相關分類:
企業資源規劃 Erp、Design Pattern 、軟體架構
-
相關翻譯:
企業應用架構模式 (Patterns of Enterprise Application Architecture) (簡中版)
Martin Fowler 的企業級軟體架構模式:軟體重構教父傳授 51個模式,活用設計思考與架構決策 (Patterns of Enterprise Application Architecture) (繁中版)
企業應用架構模式(典藏版) (簡中版)
立即出貨 (庫存 < 4)
買這商品的人也買了...
-
$580$458 -
$680$537 -
$650$553 -
$980$774 -
$920$727 -
$880$695 -
$560$504 -
$450$351 -
$1,840$1,748 -
$1,880$1,786 -
$690$587 -
$780$741 -
$750$638 -
$650$553 -
$760$600 -
$590$466 -
$680$537 -
$690$538 -
$720$562 -
$720$569 -
$750$675 -
$560$504 -
$2,320$2,204 -
$2,720$2,584 -
$480$379
相關主題
商品描述
Table of Contents
Preface.
Acknowledgements.
Colophon.
Introduction.
Enterprise Applications.
Kinds of Enterprise Application.
Thinking About Performance.
Patterns.
Limitations of These Patterns.
I. THE NARRATIVES.
1. Layering.
The Three Principal Layers.
Choosing Where to Run Your Layers.
2. Organizing Domain Logic.
Service Layer.
3. Mapping to Relational Databases.
The Behavioral Problem.
Reading in Data
Structural Mapping Patterns.
Inheritance.
Building the Mapping.
Preface.
Acknowledgements.
Colophon.
Introduction.
Enterprise Applications.
Kinds of Enterprise Application.
Thinking About Performance.
Patterns.
Limitations of These Patterns.
I. THE NARRATIVES.
1. Layering.
The Three Principal Layers.
Choosing Where to Run Your Layers.
2. Organizing Domain Logic.
Service Layer.
3. Mapping to Relational Databases.
The Behavioral Problem.
Reading in Data
Structural Mapping Patterns.
Inheritance.
Building the Mapping.
Using Metadata.
Database Connections.
Some Miscellaneous Points.
Further Reading.
4. Web Presentation.
Input Controller Patterns.
Further Reading.
5. Concurrency (by Martin Fowler and David Rice).
Execution Contexts.
Isolation and Immutability.
Optimistic and Pessimistic Concurrency Control.
Deadlocks.
Transactions.
ACID.
Reducing Transaction Isolation for Liveness.
Business and System Transactions.
Patterns for Offline Concurrency Control.
Application Server Concurrency.
Further Reading.
6. Session State.
Session State.
Ways to Store Session State.
7. Distribution Strategies.
Remote and Local Interfaces.
Where You Have to Distribute.
Working with the Distribution Boundary.
Interfaces for Distribution.
8. Putting it all TogethR>
Using Metadata.
Database Connections.
Some Miscellaneous Points.
Further Reading.
4. Web Presentation.
Input Controller Patterns.
Further Reading.
5. Concurrency (by Martin Fowler and David Rice).
Execution Contexts.
Isolation and Immutability.
Optimistic and Pessimistic Concurrency Control.
Deadlocks.
Transactions.
ACID.
Reducing Transaction Isolation for Liveness.
Business and System Transactions.
Patterns for Offline Concurrency Control.
Application Server Concurrency.
Further Reading.
6. Session State.
Session State.
Ways to Store Session State.
7. Distribution Strategies.
Remote and Local Interfaces.
Where You Have to Distribute.
Working with the Distribution Boundary.
Interfaces for Distribution.
8. Putting it all Together.
Down to the Data Source.
Data Source Table Module (125).
Data Source for Domain Model (116).
The Presentation Layer.
Some Technology-Specific Advice.
.NET.
Stored Procedures.
Web Services.
Other.
Down to the Data Source.
Data Source Table Module (125).
Data Source for Domain Model (116).
The Presentation Layer.
Some Technology-Specific Advice.
.NET.
Stored Procedures.
Web Services.
Other Layering Schemes.
II. THE PATTERNS.
9. Domain Logic Patterns.
When to Use It.
The Revenue Recognition Problem.
Example: Revenue Recognition (Java).
Domain Model.
When to Use It.
Further Reading.
Example: Revenue Recognition (Java).
Table Module.
When to Use It.
Example: Revenue Recognition with a Table Module (C#).
Service Layer(by Randy Stafford).
When to Use It.
Further Reading.
Example: Revenue Recognition (Java).
10. Data Source Architectural Patterns.
When to Use It.
Further Reading.
Example: Person Gateway (C#).
Example: Using ADO.NET Data Sets (C#).
Row Data Gateway.
When to Use It.
Example: A Person Record (Java).
Example: A Data Holder for a Domain Object (Java).
Active Record.
9. Domain Logic Patterns.
When to Use It.
The Revenue Recognition Problem.
Example: Revenue Recognition (Java).
Domain Model.
When to Use It.
Further Reading.
Example: Revenue Recognition (Java).
Table Module.
When to Use It.
Example: Revenue Recognition with a Table Module (C#).
Service Layer(by Randy Stafford).
When to Use It.
Further Reading.
Example: Revenue Recognition (Java).
10. Data Source Architectural Patterns.
When to Use It.
Further Reading.
Example: Person Gateway (C#).
Example: Using ADO.NET Data Sets (C#).
Row Data Gateway.
When to Use It.
Example: A Person Record (Java).
Example: A Data Holder for a Domain Object (Java).
Active Record.
When to Use It.
Example: A Simple Person (Java).
Data Mapper.
When to Use It.
Example: A Simple Database Mapper (Java).
Example: Separating the Finders (Java).
Example: Creating an Empty Object (Java).
11. Object-Relational Behavioral Patterns.
When to Use It.
Example: Unit of Work with Object Registration (Java) (by David Rice).
Identity Map.
When to Use It.
Example: Methods for an Identity Map (Java).
Lazy Load.
When to Use It.
Example: Lazy Initialization (Java).
Example: Virtual Proxy (Java).
Example: Using a Value Holder (Java).
Example: Using Ghosts (C#).
12. Object-Relational Structural Patterns.
When to Use It.
Further Reading.
Example: Integral Key (C#).
Example: Using a Key Table (Java).
Example: Using a Compound Key (Java).
Foreign Key Mapping.
How It Works.
When to Use It.
Example: A Simple Person (Java).
Data Mapper.
When to Use It.
Example: A Simple Database Mapper (Java).
Example: Separating the Finders (Java).
Example: Creating an Empty Object (Java).
11. Object-Relational Behavioral Patterns.
When to Use It.
Example: Unit of Work with Object Registration (Java) (by David Rice).
Identity Map.
When to Use It.
Example: Methods for an Identity Map (Java).
Lazy Load.
When to Use It.
Example: Lazy Initialization (Java).
Example: Virtual Proxy (Java).
Example: Using a Value Holder (Java).
Example: Using Ghosts (C#).
12. Object-Relational Structural Patterns.
When to Use It.
Further Reading.
Example: Integral Key (C#).
Example: Using a Key Table (Java).
Example: Using a Compound Key (Java).
Foreign Key Mapping.
When to Use It.
Example: Single-Valued Reference (Java).
Example: Multitable Find (Java).
Example: Collection of References (C#).
Association Table Mapping.
When to Use It.
Example: Employees and Skills (C#).
Example: Using Direct SQL (Java).
Example: Using a Single Query for Multiple Employees (Java) (by Matt Foemmel and Martin Fowler).
Dependent Mapping.
When to Use It.
Example: Albums and Tracks (Java).
Embedded Value.
When to Use It.
Further Reading.
Example: Simple Value Object (Java).
Serialized LOB.
When to Use It.
Example: Serializing a Department Hierarchy in XML (Java).
Single Table Inheritance.
When to Use It.
Example: A Single Table for Players (C#).
Loading an Object from the Database.
Class Table Inheritance.
When to Use It.
Further Reading.
Example: Players and Their Kin (C#).
Concrete Table Inheritance.
When to Use It.
Example: Concrete PlayeDIV>
When to Use It.
Example: Single-Valued Reference (Java).
Example: Multitable Find (Java).
Example: Collection of References (C#).
Association Table Mapping.
When to Use It.
Example: Employees and Skills (C#).
Example: Using Direct SQL (Java).
Example: Using a Single Query for Multiple Employees (Java) (by Matt Foemmel and Martin Fowler).
Dependent Mapping.
When to Use It.
Example: Albums and Tracks (Java).
Embedded Value.
When to Use It.
Further Reading.
Example: Simple Value Object (Java).
Serialized LOB.
When to Use It.
Example: Serializing a Department Hierarchy in XML (Java).
Single Table Inheritance.
When to Use It.
Example: A Single Table for Players (C#).
Loading an Object from the Database.
Class Table Inheritance.
When to Use It.
Further Reading.
Example: Players and Their Kin (C#).
Concrete Table Inheritance.
When to Use It.
Example: Concrete Players (C#).
Inheritance Mappers.
When to Use It.
13. Object-Relational Metadata Mapping Patterns.
When to Use It.
Example: Using Metadata and Reflection (Java).
Query Object.
When to Use It.
Further Reading.
Example: A Simple Query Object (Java).
Repository (by Edward Hieatt and Rob Mee).
When to Use It.
Further Reading.
Example: Finding a Person's Dependents (Java).
Example: Swapping Repository Strategies (Java).
14. Web Presentation Patterns.
When to Use It.
Page Controller.
When to Use It.
Example: Simple Display with a Servlet Controller and a JSP View (Java).
Example: Using a JSP as a Handler (Java).
Example: Page Handler with a Code Behind (C#).
Front Controller.
When to Use It.
Further Reading.
Example: Simple Disprs (C#).
Inheritance Mappers.
When to Use It.
13. Object-Relational Metadata Mapping Patterns.
When to Use It.
Example: Using Metadata and Reflection (Java).
Query Object.
When to Use It.
Further Reading.
Example: A Simple Query Object (Java).
Repository (by Edward Hieatt and Rob Mee).
When to Use It.
Further Reading.
Example: Finding a Person's Dependents (Java).
Example: Swapping Repository Strategies (Java).
14. Web Presentation Patterns.
When to Use It.
Page Controller.
When to Use It.
Example: Simple Display with a Servlet Controller and a JSP View (Java).
Example: Using a JSP as a Handler (Java).
Example: Page Handler with a Code Behind (C#).
Front Controller.
When to Use It.
Further Reading.
Example: Simple Display (Java).
Template View.
When to Use It.
Example: Using a JSP as a View with a Separate Controller (Java).
Example: ASP.NET Server Page (C#).
Transform View.
When to Use It.
Example: Simple Transform (Java).
Two Step View.
When to Use It.
Example: Two Stage XSLT (XSLT).
Example: JSP and Custom Tags (Java).
Application Controller.
When to Use It.
Further Reading.
Example: State Model Application Controller (Java).
15. Distribution Patterns.
When to Use It.
Example: Using a Java Session Bean as a Remote Facade (Java).
Example: Web Service (C#).
Data Transfer Object.
When to Use It.
Further Reading.
Example: Transferring Information about Albums (Java).
Example: Serializing Using XML (Java).
16. Offline Concurrency Patterns.
Template View.
When to Use It.
Example: Using a JSP as a View with a Separate Controller (Java).
Example: ASP.NET Server Page (C#).
Transform View.
When to Use It.
Example: Simple Transform (Java).
Two Step View.
When to Use It.
Example: Two Stage XSLT (XSLT).
Example: JSP and Custom Tags (Java).
Application Controller.
When to Use It.
Further Reading.
Example: State Model Application Controller (Java).
15. Distribution Patterns.
When to Use It.
Example: Using a Java Session Bean as a Remote Facade (Java).
Example: Web Service (C#).
Data Transfer Object.
When to Use It.
Further Reading.
Example: Transferring Information about Albums (Java).
Example: Serializing Using XML (Java).
16. Offline Concurrency Patterns.
When to Use It.
Example: Domain Layer with Data Mappers (165) (Java).
Pessimistic Offline Lock (by David Rice).
When to Use It.
Example: Simple Lock Manager (Java).
Coarse-Grained Lock (by David Rice and Matt Foemmel).
When to Use It.
Example: Shared Optimistic Offline Lock (416) (Java).
Example: Shared Pessimistic Offline Lock (426) (Java).
Example: Root Optimistic Offline Lock (416) (Java).
Implicit Lock (by David Rice).
When to Use It.
Example: Implicit Pessimistic Offline Lock (426) (Java).
17. Session State Patterns.
When to Use It.
Server Session State.
When to Use It.
Database Session State.
When to Use It.
18. Base Patterns.
When to Use It.
Example: A Gateway to a Proprietary Messaging S It Works.
When to Use It.
Example: Domain Layer with Data Mappers (165) (Java).
Pessimistic Offline Lock (by David Rice).
When to Use It.
Example: Simple Lock Manager (Java).
Coarse-Grained Lock (by David Rice and Matt Foemmel).
When to Use It.
Example: Shared Optimistic Offline Lock (416) (Java).
Example: Shared Pessimistic Offline Lock (426) (Java).
Example: Root Optimistic Offline Lock (416) (Java).
Implicit Lock (by David Rice).
When to Use It.
Example: Implicit Pessimistic Offline Lock (426) (Java).
17. Session State Patterns.
When to Use It.
Server Session State.
When to Use It.
Database Session State.
When to Use It.
18. Base Patterns.
When to Use It.
Example: A Gateway to a Proprietary Messaging Service (Java).
Mapper.
When to Use It.
Layer Supertype.
When to Use It.
Example: Domain Object (Java).
Separated Interface.
When to Use It.
Registry.
When to Use It.
Example: A Singleton Registry (Java).
Example: Thread-Safe Registry (Java) (by Matt Foemmel and Martin Fowler).
Value Object.
When to Use It.
Money.
When to Use It.
Example: A Money Class (Java) (by Matt Foemmel and Martin Fowler).
Special Case.
When to Use It.
Further Reading.
Example: A Simple Null Object (C#).
Plugin (by David Rice and Matt Foemmel).
When to Use It.
Example: An Id Generator (Java).
Service Stub (by David Rice).
When to Use It.
Example: Sales Tax Service (Java).
Record Set.
When to Use It.
References
Mapper.
When to Use It.
Layer Supertype.
When to Use It.
Example: Domain Object (Java).
Separated Interface.
When to Use It.
Registry.
When to Use It.
Example: A Singleton Registry (Java).
Example: Thread-Safe Registry (Java) (by Matt Foemmel and Martin Fowler).
Value Object.
When to Use It.
Money.
When to Use It.
Example: A Money Class (Java) (by Matt Foemmel and Martin Fowler).
Special Case.
When to Use It.
Further Reading.
Example: A Simple Null Object (C#).
Plugin (by David Rice and Matt Foemmel).
When to Use It.
Example: An Id Generator (Java).
Service Stub (by David Rice).
When to Use It.
Example: Sales Tax Service (Java).
Record Set.
When to Use It.
References
商品描述(中文翻譯)
目錄
前言。
致謝。
版權聲明。
導論。
企業應用程式。
企業應用程式的種類。
思考效能。
模式。
這些模式的限制。
I. 敘事。
1. 分層。
三個主要分層。
選擇在哪裡運行分層。
2. 組織領域邏輯。
服務層。
3. 對關聯式資料庫進行映射。
行為問題。
讀取資料。
結構映射模式。
繼承。
建立映射。
使用元數據。
資料庫連接。
一些雜項事項。
進一步閱讀。
4. 網頁呈現。
輸入控制器模式。
進一步閱讀。
5. 並發(由Martin Fowler和David Rice撰寫)。
執行上下文。
隔離和不可變性。
樂觀和悲觀並發控制。
死鎖。
事務。
ACID。
降低活性的事務隔離。
業務和系統事務。
離線並發控制的模式。
應用伺服器並發性。
進一步閱讀。
6. 會話狀態。
會話狀態。
儲存會話狀態的方式。
7. 分佈策略。
遠程