Table Of Content[[ TTeeaamm LLiiBB ]]
•• TTaabbllee ooff CCoonntteennttss
PPaatttteerrnnss ooff EEnntteerrpprriissee AApppplliiccaattiioonn AArrcchhiitteeccttuurree
BByy MMaarrttiinn FFoowwlleerr,, DDaavviidd RRiiccee,, MMaatttthheeww FFooeemmmmeell,, EEddwwaarrdd HHiieeaatttt,, RRoobbeerrtt MMeeee,,
RRaannddyy SSttaaffffoorrdd
PPuubblliisshheerr :: AAddddiissoonn WWeesslleeyy
PPuubb DDaattee :: NNoovveemmbbeerr 0055,, 22000022
IISSBBNN :: 00--332211--1122774422--00
PPaaggeess :: 556600
TThhee pprraaccttiiccee ooff eenntteerrpprriissee aapppplliiccaattiioonn ddeevveellooppmmeenntt hhaass bbeenneeffiitteedd ffrroomm tthhee eemmeerrggeennccee ooff mmaannyy nneeww eennaabblliinngg
tteecchhnnoollooggiieess.. MMuullttii--ttiieerreedd oobbjjeecctt--oorriieenntteedd ppllaattffoorrmmss,, ssuucchh aass JJaavvaa aanndd ..NNEETT,, hhaavvee bbeeccoommee ccoommmmoonnppllaaccee..
TThheessee nneeww ttoooollss aanndd tteecchhnnoollooggiieess aarree ccaappaabbllee ooff bbuuiillddiinngg ppoowweerrffuull aapppplliiccaattiioonnss,, bbuutt tthheeyy aarree nnoott eeaassiillyy
iimmpplleemmeenntteedd.. CCoommmmoonn ffaaiilluurreess iinn eenntteerrpprriissee aapppplliiccaattiioonnss oofftteenn ooccccuurr bbeeccaauussee tthheeiirr ddeevveellooppeerrss ddoo nnoott
uunnddeerrssttaanndd tthhee aarrcchhiitteeccttuurraall lleessssoonnss tthhaatt eexxppeerriieenncceedd oobbjjeecctt ddeevveellooppeerrss hhaavvee lleeaarrnneedd..
PPaatttteerrnnss ooff EEnntteerrpprriissee AApppplliiccaattiioonn AArrcchhiitteeccttuurree iiss wwrriitttteenn iinn ddiirreecctt rreessppoonnssee ttoo tthhee ssttiiffff cchhaalllleennggeess tthhaatt ffaaccee
eenntteerrpprriissee aapppplliiccaattiioonn ddeevveellooppeerrss.. TThhee aauutthhoorr,, nnootteedd oobbjjeecctt--oorriieenntteedd ddeessiiggnneerr MMaarrttiinn FFoowwlleerr,, nnoottiicceedd tthhaatt
ddeessppiittee cchhaannggeess iinn tteecchhnnoollooggyy----ffrroomm SSmmaallllttaallkk ttoo CCOORRBBAA ttoo JJaavvaa ttoo ..NNEETT----tthhee ssaammee bbaassiicc ddeessiiggnn iiddeeaass ccaann
bbee aaddaapptteedd aanndd aapppplliieedd ttoo ssoollvvee ccoommmmoonn pprroobblleemmss.. WWiitthh tthhee hheellpp ooff aann eexxppeerrtt ggrroouupp ooff ccoonnttrriibbuuttoorrss,, MMaarrttiinn
ddiissttiillllss oovveerr ffoorrttyy rreeccuurrrriinngg ssoolluuttiioonnss iinnttoo ppaatttteerrnnss.. TThhee rreessuulltt iiss aann iinnddiissppeennssaabbllee hhaannddbbooookk ooff ssoolluuttiioonnss tthhaatt
aarree aapppplliiccaabbllee ttoo aannyy eenntteerrpprriissee aapppplliiccaattiioonn ppllaattffoorrmm..
TThhiiss bbooookk iiss aaccttuuaallllyy ttwwoo bbooookkss iinn oonnee.. TThhee ffiirrsstt sseeccttiioonn iiss aa sshhoorrtt ttuuttoorriiaall oonn ddeevveellooppiinngg eenntteerrpprriissee
aapppplliiccaattiioonnss,, wwhhiicchh yyoouu ccaann rreeaadd ffrroomm ssttaarrtt ttoo ffiinniisshh ttoo uunnddeerrssttaanndd tthhee ssccooppee ooff tthhee bbooookk''ss lleessssoonnss.. TThhee nneexxtt
sseeccttiioonn,, tthhee bbuullkk ooff tthhee bbooookk,, iiss aa ddeettaaiilleedd rreeffeerreennccee ttoo tthhee ppaatttteerrnnss tthheemmsseellvveess.. EEaacchh ppaatttteerrnn pprroovviiddeess
uussaaggee aanndd iimmpplleemmeennttaattiioonn iinnffoorrmmaattiioonn,, aass wweellll aass ddeettaaiilleedd ccooddee eexxaammpplleess iinn JJaavvaa oorr CC##.. TThhee eennttiirree bbooookk iiss
aallssoo rriicchhllyy iilllluussttrraatteedd wwiitthh UUMMLL ddiiaaggrraammss ttoo ffuurrtthheerr eexxppllaaiinn tthhee ccoonncceeppttss..
AArrmmeedd wwiitthh tthhiiss bbooookk,, yyoouu wwiillll hhaavvee tthhee kknnoowwlleeddggee nneecceessssaarryy ttoo mmaakkee iimmppoorrttaanntt aarrcchhiitteeccttuurraall ddeecciissiioonnss
aabboouutt bbuuiillddiinngg aann eenntteerrpprriissee aapppplliiccaattiioonn aanndd tthhee pprroovveenn ppaatttteerrnnss ffoorr uussee wwhheenn bbuuiillddiinngg tthheemm..
TThhee ttooppiiccss ccoovveerreedd iinncclluuddee::
Dividing an enterprise application into layers
The major approaches to organizing business logic
An in-depth treatment of mapping between objects and relational databases
Using Model-View-Controller to organize a Web presentation
Handling concurrency for data that spans multiple transactions
Designing distributed object interfaces
[ Team LiB ]
[ Team LiB ]
• Table of Contents
Patterns of Enterprise Application Architecture
By Martin Fowler, David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee,
Randy Stafford
Publisher : Addison Wesley
Pub Date : November 05, 2002
ISBN : 0-321-12742-0
Pages : 560
Copyright
The Addison-Wesley Signature Series
Preface
Who This Book Is For
Acknowledgments
Colophon
Introduction
Architecture
Enterprise Applications
Kinds of Enterprise Application
Thinking About Performance
Patterns
Part 1. The Narratives
Chapter 1. Layering
The Evolution of Layers in Enterprise Applications
The Three Principal Layers
Choosing Where to Run Your Layers
Chapter 2. Organizing Domain Logic
Making a Choice
Service Layer
Chapter 3. Mapping to Relational Databases
Architectural Patterns
The Behavioral Problem
Reading in Data
Structural Mapping Patterns
Building the Mapping
Using Metadata
Database Connections
Some Miscellaneous Points
Further Reading
Chapter 4. Web Presentation
View Patterns
Input Controller Patterns
Further Reading
Chapter 5. Concurrency
Concurrency Problems
Execution Contexts
Isolation and Immutability
Optimistic and Pessimistic Concurrency Control
Transactions
Patterns for Offline Concurrency Control
Application Server Concurrency
Further Reading
Chapter 6. Session State
The Value of Statelessness
Session State
Chapter 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
Chapter 8. Putting It All Together
Starting with the Domain Layer
Down to the Data Source Layer
Some Technology-Specific Advice
Other Layering Schemes
Part 2. The Patterns
Chapter 9. Domain Logic Patterns
Transaction Script
Domain Model
Table Module
Service Layer
Chapter 10. Data Source Architectural Patterns
Table Data Gateway
Row Data Gateway
Active Record
Data Mapper
Chapter 11. Object-Relational Behavioral Patterns
Unit of Work
Identity Map
Lazy Load
Chapter 12. Object-Relational Structural Patterns
Identity Field
Foreign Key Mapping
Association Table Mapping
Dependent Mapping
Embedded Value
Serialized LOB
Single Table Inheritance
Class Table Inheritance
Concrete Table Inheritance
Inheritance Mappers
Chapter 13. Object-Relational Metadata Mapping Patterns
Metadata Mapping
Query Object
Repository
Chapter 14. Web Presentation Patterns
Model View Controller
Page Controller
Front Controller
Template View
Transform View
Two Step View
Application Controller
Chapter 15. Distribution Patterns
Remote Facade
Data Transfer Object
Chapter 16. Offline Concurrency Patterns
Optimistic Offline Lock
Pessimistic Offline Lock
Coarse-Grained Lock
Implicit Lock
Chapter 17. Session State Patterns
Client Session State
Server Session State
Database Session State
Chapter 18. Base Patterns
Gateway
Mapper
Layer Supertype
Separated Interface
Registry
Value Object
Money
Special Case
Plugin
Service Stub
Record Set
References
[ Team LiB ]
[ Team LiB ]
Copyright
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as
trademarks. Where those designations appear in this book, and Addison-Wesley was aware of a trademark
claim, the designations have been printed with initial capital letters or in all capitals.
The author and publisher have taken care in the preparation of this book, but make no expressed or implied
warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for
incidental or consequential damages in connection with or arising out of the use of the information or
programs contained herein.
The publisher offers discounts on this book when ordered in quantity for bulk purchases and special sales.
For more information, please contact:
U.S. Corporate and Government Sales
(800) 382-3419
corpsales@pearsontechgroup.com
For sales outside of the U.S., please contact:
International Sales
(317) 581-3793
international@pearsontechgroup.com
Visit Addison-Wesley on the Web: www.awprofessional.com
Library of Congress Cataloging-in-Publication Data
Fowler, Martin, 1963-
Patterns of enterprise application architecture / Martin Fowler.
p. cm.
Includes bibliographical references and index.
ISBN 0-321-12742-0 (alk. paper)
1. System design. 2. Computer architecture. 3. Application software—Development. 4. Business—Data
processing. I. Title.
QA76.9.S88 F69 2003
005.1—dc21
2002027743
Copyright © 2003 by Pearson Education, Inc.
All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or
transmitted, in any form, or by any means, electronic, mechanical, photocopying, recording, or otherwise,
without the prior consent of the publisher. Printed in the United States of America. Published simultaneously
in Canada.
For information on obtaining permission for use of material from this work, please submit a written request
to:
Pearson Education, Inc.
Rights and Contracts Department
75 Arlington Street, Suite 300
Boston, MA 02116
Fax: (617) 848-7047
Text printed on recycled paper
1 2 3 4 5 6 7 8 9 10—MA—06 05 04 03 02
First printing, October 2002
Dedication
For Denys William Fowler, 1922–2000 in memoriam
—Martin
[ Team LiB ]
[ Team LiB ]
The Addison-Wesley Signature Series
The Addison-Wesley Signature Series provides readers with practical and authoritative information on
the latest trends in modern technology for computer professionals. The series is based on one simple
premise: great books come from great authors. Books in the series are personally chosen by expert
advisors, world-class authors in their own right. These experts are proud to put their signatures on the
covers, and their signatures ensure that these thought leaders have worked closely with authors to define
topic coverage, book scope, critical content, and overall uniqueness. The expert signatures also symbolize a
promise to our readers: you are reading a future classic.
THE ADDISON-WESLEY SIGNATURE SERIES
SIGNERS: KENT BECK & MARTIN FOWLER
Martin Fowler has been a pioneer of object technology in enterprise applications. His central concern is how
to design software well. He focuses on getting to the heart of how to build enterprise software that will last
well into the future. He is interested in looking behind the specifics of technologies to the patterns, practices,
and principles that last for many years; these books should be usable a decade from now. Martin's criterion
is that these are books he wished he could write.
Kent Beck has pioneered people-oriented technologies like JUnit, Extreme Programming, and patterns for
software development. Kent is interested in helping teams do well by doing good – finding a style of
software development that simultaneously satisfies economic, aesthetic, emotional, and practical
constraints. His books focus on touching the lives of the creators and users of software.
TITLES IN THE SERIES
Patterns of Enterprise Application Architecture
Martin Fowler, ISBN: 0321127420
Beyond Software Architecture: Creating and Sustaining Winning Solutions
Luke Hohmann, ISBN: 0201775948
Test-Driven Development: By Example
Kent Beck, ISBN: 0321146530
For more information, check out the series Web site at http://www.awprofessional.com/
[ Team LiB ]
Description:Patterns of Enterprise Application Architecture is written in direct response to . it's written by business people to capture business, where odd small