Patterns of Enterprise Application Architecture (Addison-Wesley Signature Series (Fowler)) (英語) ハードカバー – 2002/11/5
Kindle 端末は必要ありません。無料 Kindle アプリのいずれかをダウンロードすると、スマートフォン、タブレットPCで Kindle 本をお読みいただけます。
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
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 didn't look at this book for a long time simply because of the word "enterprise." I felt the word was too overloaded to be useful. I've heard too many managers, recruiters, and other programmers use this word to mean too many different things. Fowler defines enterprise application as "the display, manipulation, and storage of large amounts of often complex data and the support or automation of business process with that data." By that definition every system I've ever worked on has been an enterprise application.
A dense, tough read. I almost wish I was at a whiteboard or kept a notepad while reading.
Fowler gives a fantastic presentation of how to design software using databases, distributed components, etc. This is given through good narratives and anecdotes of Fowler's own experiences, and also through the patterns distilled from these.
The best thing I can say about this book is I would put it fourth in the list of books-I'd-like-anybody-I'm-working-with-to-have-read, right after to Design Patterns, Refactoring, and Extreme Programming Explained.
As with most patterns books, not everything in here is an amazing revelation, but the common approach, terminology, and ways of categorizing problems and solutions make it very valuable.
Programmers who utilize design patterns and refactoring, and who work on software systems involving distributed components and/or databases should take a look at this book.