Op werkdagen voor 23:00 besteld, morgen in huis Gratis verzending vanaf €20

Patterns of Enterprise Application Architecture

Specificaties
E-book, blz. | Engels
Pearson Education | 2012
ISBN13: 9780133065206
Rubricering
Pearson Education e druk, 2012 9780133065206
Verwachte levertijd ongeveer 9 werkdagen

Samenvatting

The practice of enterprise application development has benefited from the emergence of many new enabling technologies. Multi-tiered object-oriented platforms, such as Java and .NET, have become commonplace. These new tools and technologies are capable of building powerful applications, but they are not easily implemented. Common failures in enterprise applications often occur because their developers do not understand the architectural lessons that experienced object developers have learned.

 

Patterns of Enterprise Application Architecture is written in direct response to the stiff challenges that face enterprise application developers. The author, noted object-oriented designer Martin Fowler, noticed that despite changes in technology--from Smalltalk to CORBA to Java to .NET--the same basic design ideas can be adapted and applied to solve common problems. With the help of an expert group of contributors, Martin distills over forty recurring solutions into patterns. The result is an indispensable handbook of solutions that are applicable to any enterprise application platform.

 

This book is actually two books in one. The first section is a short tutorial on developing enterprise applications, which you can read from start to finish to understand the scope of the book's lessons. The next section, the bulk of the book, is a detailed reference to the patterns themselves. Each pattern provides usage and implementation information, as well as detailed code examples in Java or C#. The entire book is also richly illustrated with UML diagrams to further explain the concepts.

Armed with this book, you will have the knowledge necessary to make important architectural decisions about building an enterprise application and the proven patterns for use when building them.

 

The topics covered include

·  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

Specificaties

ISBN13:9780133065206
Taal:Engels
Bindwijze:e-book

Inhoudsopgave

<br> <br> Preface. <br> <p> </p> <div style="margin-left: 0.2in;"> Who This Book Is For. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Acknowledgements. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Colophon. </div> <p></p> <br> <br> Introduction. <br> <p> </p> <div style="margin-left: 0.2in;"> Architecture. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Enterprise Applications. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Kinds of Enterprise Application. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Thinking About Performance. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Patterns. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> The Structure of the Patterns. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Limitations of These Patterns. </div> <p></p> <p> I. THE NARRATIVES. </p> <div style="margin-left: 0.2in;"> 1. Layering. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> The Evolution of Layers in Enterprise Applications. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> The Three Principal Layers. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Choosing Where to Run Your Layers. </div> <p></p> <div style="margin-left: 0.2in;"> 2. Organizing Domain Logic. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Making a Choice. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Service Layer. </div> <p></p> <div style="margin-left: 0.2in;"> 3. Mapping to Relational Databases. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Architectural Patterns. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> The Behavioral Problem. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Reading in Data </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Structural Mapping Patterns. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Mapping Relationships. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Inheritance. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Building the Mapping. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Double Mapping. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Using Metadata. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Database Connections. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Some Miscellaneous Points. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Further Reading. </div> <p></p> <div style="margin-left: 0.2in;"> 4. Web Presentation. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> View Patterns. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Input Controller Patterns. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Further Reading. </div> <p></p> <div style="margin-left: 0.2in;"> 5. Concurrency (by Martin Fowler and David Rice). </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Concurrency Problems. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Execution Contexts. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Isolation and Immutability. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Optimistic and Pessimistic Concurrency Control. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Preventing Inconsistent Reads. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Deadlocks. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Transactions. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> ACID. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Transactional Resources. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Reducing Transaction Isolation for Liveness. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Business and System Transactions. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Patterns for Offline Concurrency Control. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Application Server Concurrency. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Further Reading. </div> <p></p> <div style="margin-left: 0.2in;"> 6. Session State. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> The Value of Statelessness. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Session State. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Ways to Store Session State. </div> <p></p> <div style="margin-left: 0.2in;"> 7. Distribution Strategies. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> The Allure of Distributed Objects. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Remote and Local Interfaces. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Where You Have to Distribute. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Working with the Distribution Boundary. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Interfaces for Distribution. </div> <p></p> <div style="margin-left: 0.2in;"> 8. Putting it all Together. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Starting With the Domain Layer. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Down to the Data Source. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Data Source for Transaction Script. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Data Source Table Module (125). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Data Source for Domain Model (116). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> The Presentation Layer. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Some Technology-Specific Advice. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Java and J2EE. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> .NET. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Stored Procedures. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Web Services. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Other Layering Schemes. </div> <p></p> <p> II. THE PATTERNS. </p> <div style="margin-left: 0.2in;"> 9. Domain Logic Patterns. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Transaction Script. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> The Revenue Recognition Problem. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Revenue Recognition (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Domain Model. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Further Reading. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Revenue Recognition (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Table Module. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Revenue Recognition with a Table Module (C#). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Service Layer(by Randy Stafford). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Further Reading. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Revenue Recognition (Java). </div> <p></p> <div style="margin-left: 0.2in;"> 10. Data Source Architectural Patterns. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Table Data Gateway. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Further Reading. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Person Gateway (C#). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Using ADO.NET Data Sets (C#). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Row Data Gateway. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: A Person Record (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: A Data Holder for a Domain Object (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Active Record. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: A Simple Person (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Data Mapper. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: A Simple Database Mapper (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Separating the Finders (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Creating an Empty Object (Java). </div> <p></p> <div style="margin-left: 0.2in;"> 11. Object-Relational Behavioral Patterns. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Unit of Work. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Unit of Work with Object Registration (Java) (by David Rice). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Identity Map. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Methods for an Identity Map (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Lazy Load. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Lazy Initialization (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Virtual Proxy (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Using a Value Holder (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Using Ghosts (C#). </div> <p></p> <div style="margin-left: 0.2in;"> 12. Object-Relational Structural Patterns. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Identity Field. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Further Reading. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Integral Key (C#). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Using a Key Table (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Using a Compound Key (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Foreign Key Mapping. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Single-Valued Reference (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Multitable Find (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Collection of References (C#). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Association Table Mapping. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Employees and Skills (C#). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Using Direct SQL (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Using a Single Query for Multiple Employees (Java) (by Matt Foemmel and Martin Fowler). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Dependent Mapping. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Albums and Tracks (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Embedded Value. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Further Reading. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Simple Value Object (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Serialized LOB. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Serializing a Department Hierarchy in XML (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Single Table Inheritance. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: A Single Table for Players (C#). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Loading an Object from the Database. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Class Table Inheritance. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Further Reading. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Players and Their Kin (C#). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Concrete Table Inheritance. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Concrete Players (C#). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Inheritance Mappers. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <div style="margin-left: 0.2in;"> 13. Object-Relational Metadata Mapping Patterns. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Metadata Mapping. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Using Metadata and Reflection (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Query Object. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Further Reading. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: A Simple Query Object (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Repository (by Edward Hieatt and Rob Mee). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Further Reading. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Finding a Person's Dependents (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Swapping Repository Strategies (Java). </div> <p></p> <div style="margin-left: 0.2in;"> 14. Web Presentation Patterns. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Model View Controller. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Page Controller. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Simple Display with a Servlet Controller and a JSP View (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Using a JSP as a Handler (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Page Handler with a Code Behind (C#). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Front Controller. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Further Reading. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Simple Display (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Template View. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Using a JSP as a View with a Separate Controller (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: ASP.NET Server Page (C#). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Transform View. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Simple Transform (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Two Step View. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Two Stage XSLT (XSLT). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: JSP and Custom Tags (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Application Controller. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Further Reading. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: State Model Application Controller (Java). </div> <p></p> <div style="margin-left: 0.2in;"> 15. Distribution Patterns. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Remote Facade. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Using a Java Session Bean as a Remote Facade (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Web Service (C#). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Data Transfer Object. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Further Reading. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Transferring Information about Albums (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Serializing Using XML (Java). </div> <p></p> <div style="margin-left: 0.2in;"> 16. Offline Concurrency Patterns. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Optimistic Offline Lock (by David Rice). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Domain Layer with Data Mappers (165) (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Pessimistic Offline Lock (by David Rice). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Simple Lock Manager (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Coarse-Grained Lock (by David Rice and Matt Foemmel). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Shared Optimistic Offline Lock (416) (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Shared Pessimistic Offline Lock (426) (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Root Optimistic Offline Lock (416) (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Implicit Lock (by David Rice). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Implicit Pessimistic Offline Lock (426) (Java). </div> <p></p> <div style="margin-left: 0.2in;"> 17. Session State Patterns. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Client Session State. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Server Session State. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Database Session State. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <div style="margin-left: 0.2in;"> 18. Base Patterns. </div> <br> <p> </p> <div style="margin-left: 0.4in;"> Gateway. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: A Gateway to a Proprietary Messaging Service (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Mapper. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Layer Supertype. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Domain Object (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Separated Interface. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Registry. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: A Singleton Registry (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Thread-Safe Registry (Java) (by Matt Foemmel and Martin Fowler). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Value Object. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Money. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: A Money Class (Java) (by Matt Foemmel and Martin Fowler). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Special Case. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Further Reading. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: A Simple Null Object (C#). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Plugin (by David Rice and Matt Foemmel). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: An Id Generator (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Service Stub (by David Rice). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Example: Sales Tax Service (Java). </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> Record Set. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> How It Works. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> When to Use It. </div> <p></p> <p> </p> <div style="margin-left: 0.4in;"> References </div> <p></p> <div style="margin-left: 0.2in;"> Index. 0321127420T10162002 </div> <br>

Rubrieken

Populaire producten

    Personen

      Trefwoorden

        Patterns of Enterprise Application Architecture