Preface.
Who This Book Is For.
Acknowledgements.
Colophon.
Introduction. Architecture.
Enterprise Applications.
Kinds of Enterprise Application.
Thinking About Performance.
Patterns.
The Structure of the Patterns.
Limitations of These Patterns.
I. THE NARRATIVES.
1. Layering. The Evolution of Layers in Enterprise Applications.
The Three Principal Layers.
Choosing Where to Run Your Layers.
2. Organizing Domain Logic. Making a Choice.
Service Layer.
3. Mapping to Relational Databases. Architectural Patterns.
The Behavioral Problem.
Reading in Data
Structural Mapping Patterns.
Mapping Relationships.
Inheritance.
Building the Mapping.
Double Mapping.
Using Metadata.
Database Connections.
Some Miscellaneous Points.
Further Reading.
4. Web Presentation. View Patterns.
Input Controller Patterns.
Further Reading.
5. Concurrency (by Martin Fowler and David Rice). Concurrency Problems.
Execution Contexts.
Isolation and Immutability.
Optimistic and Pessimistic Concurrency Control.
Preventing Inconsistent Reads.
Deadlocks.
Transactions.
ACID.
Transactional Resources.
Reducing Transaction Isolation for Liveness.
Business and System Transactions.
Patterns for Offline Concurrency Control.
Application Server Concurrency.
Further Reading.
6. Session State. The Value of Statelessness.
Session State.
Ways to Store Session State.
7. Distribution Strategies. The Allure of Distributed Objects.
Remote and Local Interfaces.
Where You Have to Distribute.
Working with the Distribution Boundary.
Interfaces for Distribution.
8. Putting it all Together. Starting With the Domain Layer.
Down to the Data Source.
Data Source for
Transaction Script. Data Source
Table Module (125). Data Source for
Domain Model (116). The Presentation Layer.
Some Technology-Specific Advice.
Java and J2EE.
.NET.
Stored Procedures.
Web Services.
Other Layering Schemes.
II. THE PATTERNS.
9. Domain Logic Patterns. Transaction Script.
How It Works.
When to Use It.