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
Martin Fowler is an independent consultant who has applied objects to pressing business problems for more than a decade. He has consulted on systems in fields such as health care, financial trading, and corporate finance. His clients include Chrysler, Citibank, UK National Health Service, Andersen Consulting, and Netscape Communications. In addition, Fowler is a regular speaker on objects, the Unified Modeling Language, and patterns.
I've had this book on my wishlist for over 2 months. It's one of those things where I wait and see if I can afford it later, and then later turns into 2 months later. Let me tell you that I feel ridiculously foolish for leaving this on my wishlist for more than the time it takes to ship. If your job is in any way related to software development, you need to read this book NOW.
Surprisingly I already knew a lot about what was in this volume, but in hindsight, it was an incomplete jigsaw puzzle with the pieces laying around everywhere. To complete the analogy this book gave me the picture, of the puzzle, so I knew how the pieces should look when they fit together. I will be reading this book a second time just to burn the concepts into my brain.
As far as the literary quality, it's not dry like some references, but it's not overly exciting. If you're accustomed to reading tech ref documents and white papers then any book, like this, is disneyland in comparison. The authors organized it well, and it delivers the information in a powerful way, with lots of diagrams and code specimens to illustrate the concepts.
I'm glad this book was recommended to me, but I get the feeling that most professionals in my industry have read this volume, so it's an important thing to read.
This book is a little more implementation specific than the incredibly popular Gang of Four Design Patterns book. Many of the patterns, the Data Transfer Object pattern, for example, are fairly specific to the J2EE structural problem at hand. Other patterns, like the Lazy Load, are good architectural patterns on any platform. There is enough generic content to justify the purchase of the book for architects implementing on any platform (J2EE, .NET, PHP, etc.) but it does favor the two current platforms de jour; J2EE and .NET.
One of the nice things about the book is how the code tends to de-emphasize the application container by doing most of the work in the raw database access systems (e.g. JDBC), which makes it easy to understand what is going on but will offend the true J2EE believer. This makes the patterns in the book accessible to anyone coding in any environment, which I greatly appreciate.
One pet peeve is that some of the patterns are obvious shells for a single technique, such as the Transform View, which is really just XSLT. The text says as much, but shouldn't there be more than one example of a particular pattern in nature? It's just a pet peeve though, it's no reason to avoid the book.
Overall, the book is well written and edited and the graphics add to the exposition but are not gratuitous. It's a useful guide for anyone looking to raise the level of the enterprise application (read web application) thought up to the next level.
The Kindle Edition does NOT include any figures or diagrams. Quite an unpleasant surprise when reading passages like "The easiest way to see the difference is to look at the sequence diagrams for the two approaches (Figures 2.1 and 2.2).", clicking on those links and only finding a bare caption with no figure whatsoever. I contacted Amazon's customer service about this, and they replied with a mere "Occasionally, conversion to digital requires modification of content, layout, or format, including the omission of some images and tables". It would be great if Amazon worked together with the publishers to make it clear when there is missing content somewhere in its product page. Paying almost the price of the hardcover to end up with an incomplete product is unfair to say the least, and overall a bad experience for the reader.