24 of 24 people found the following review helpful
- Published on Amazon.com
This is a pretty sharp book. I bought it for 3 reasons. The first was I liked the author's other book Professional Enterprise .NET (Wrox Programmer to Programmer). The second was I wanted to read something about ASP.NET MVC since I don't use it at work. Third, I like to read all new pattern books because it is the only way I can keep them fresh in my mind.
This book is written extremely well. It starts with an introduction to the S.O.L.I.D. design principles and an introduction to design patterns. It then covers every layer of a common enterprise level ASP.NET application and shows the use of patterns in each layer (Business, Service, Data Access, Presentation, and User Experience). The book covers a ton of patterns including both GOF design patterns and Fowler's Enterprise Application Design patterns.
Design patterns covered include Factory, Decorator, Command, Chain of Responsibility, Template, State, Strategy, Composite, and Facade. Messaging patterns such as Document Message, Request-Response, Reservation, and the Idempotent pattern are covered. Enterprise patterns include Lazy Loading, Identity Map, Unit of Work, and the Query Object. User interface patterns include Model-View-Controller, PageController, Model-View-Presenter, and Front Controller.
The third part of the book includes a case study that builds out an E-Commerce store from soup to nuts. They start with requirements and end with a final product you can download from Codeplex.
The downloadable code is very well organized and usable. As mentioned above the authors have also posted a separate download called ASP.NET MVC 2 Case Study Starter Kit on Codeplex which includes the case study sample project covered in the third part of the book.
One of the things I really like about the book is that it includes the use of tools like AutoMapper, NHibernate, StructureMap, Entity Framework, and Castle MonoRail. It also includes patterns using JQuery and Json.
All in all this book accomplished what I had hoped it would. It is a great book on patterns that every programmer should read. It is a must have for any serious developer.
23 of 23 people found the following review helpful
- Published on Amazon.com
Let me begin by stating that Professional ASP.NET Design Patterns By Scott Millett is a fantastic book that was worth every minute I spent reading it. The author, Scott Millett, is a great community leader and extends himself in several ways including spending time on the forums contributing to others into his strong insight of Domain Driven Design, Architecture, and Design Patterns. He has extended that helpfulness by writing this book that takes a dive into Design Patterns and Architecture from an ASP.NET UI centric view. However I would not get too fixated on the 'ASP.NET' in the title as probably more than half of this book could just as well have been called Professional .NET Design Patterns as it provides design patterns that are truly useful to all types of .NET applications once moving below the topmost UI layer. There are several chapters devoted to ASP.NET patterns including MVC which makes this still focused mostly on ASP.NET, but I would still recommend this book to WinForms and other SmartClient developers as well.
This book's target audience is broad and could reach to several different types of software engineers. It is probably suited best for Senior Engineers, Architects, Leads, or generally seasoned developers. It is not really an introductory book (this is a good thing; there are plenty of those books out there already), so if you don't know what acronyms like OOP, OOD, UI, BLL, or DAL mean at a minimum already then you may want to read something along the lines of an introduction to Object Oriented Programming book 1st to gain some traction. This is however a terrific book for those that do have a lot of experience with a traditional 3-layer logical architectures, and are looking to bridge the gap to more sophisticated architectures using Domain Driven Design and other implementations of either Martin Fowler's or the GoF design patterns within.
Scott does a wonderful job of layering the book (chapters) as you would an application. Each chapter takes either a single layer or design pattern and goes into detail on its responsibilities, relationship to other layers, and implementation with easy to follow along code samples. In fact I highly recommend downloading the code samples from the WROX website ([...]) The entire set of code samples are in C#, but don't let this slow up any VB.NET devs out there. I am actually a VB.NET developer (C# in the past) but we all know that you don't get too far in this industry without reading both so this should not be any problem.
The 1st third of the book (roughly) concentrates mostly on individual logical layers of an application and how they work together to build an application. Within each layer, there are examples of Design Patterns (both Fowler and GoF) that are used and shown why they are useful within that particular layer. There is also a section on IoC and DI which I really enjoyed and are reoccurring patterns in the layers throughout the book. The 2nd third of the book concentrates mostly on ASP.NET architectures and techniques like MVC, MVP, and AJAX patterns. The last third is devoted to a case study example that uses the knowledge gained from the previous chapters. The book reads and flows extremely well and was one of the reasons I enjoyed reading it so much.
I will also note that this is a great book for those of you familiar or have read the GoF book Design Patterns Elements of Reusable Object Oriented Software. As we all know code examples used to conceptually explain design patterns are not always critical, but Scott's book puts a fresh '.NET' perspective on several of the GoF patterns which is really nice. This helps to see how these patterns apply directly in .NET instead of taking the SmallTalk or C++ examples from the GoF book and translating them into .NET.
The book wraps up with a full case study example putting all of the chapters together (Agath's e-commerce store). This again strengthens the flow of the book with an extended example using everything learned from the previous chapters, This solution is included in the 'Chapter 14' folder in the downloadable code and is a nice reference to show everything from the book.
Well I will wrap this review up by saying this book is one for the shelf of 'Top Reference' books that go right next to the development machine. This is one of those books that you think, "How do I do that in the Repository Layer...", and then pick up the book to get a refresher. I would definitely recommend this book and keep an eye out for future books from Scott Millett. Nice Job!
14 of 15 people found the following review helpful
- Published on Amazon.com
This book is a concise guide to most of the GoF design patterns and Fowler's enterprise architecture patterns, combined with contemporary design principles, and set in context.
The text is divided into the standard enterprise application layers, and then the GoF patterns are introduced within each layer to address the concerns of that layer. Each GoF pattern is prefaced with an explanation of where and why you would want to use it and a UML diagram, and then demonstrated through code. You can get a full list of the covered patterns from the TOC.
The text is direct and economical, and, thankfully lacks a lot of the filler tactics and editorializing that seem to characterize most development books these days. It's heavy on code samples, and the samples are also refreshingly concise (e.g., automatic properties instead of space-wasting explicit property bodies, single-responsibility methods and classes instead of bloated catch-all classes dragged out over three pages). Obviously, since the code is meant to demonstrate the design principles the book espouses, the code is relatively concise and easy to read. There are a lot of nice diagrams and ERDs, and the leading frameworks (e.g., NHibernate for O/RM) are demonstrated well.
Overall, it's a pretty good reference for how to layout an enterprise application and how to apply the standard patterns and design principles. I think it's best for those already familiar with the concepts and looking for a reference to take to work with them. I think it's also a good gateway to get people to read Design Patterns, PoEAA, Enterprise Integration Patterns, etc.
There's not much I can really find fault with. Obviously, there are more patterns that could be included, and it could go deeper on various topics, but it achieves what it sets out to do. If I lost my copy, I would buy it again.
3 of 3 people found the following review helpful
- Published on Amazon.com
I've found this the best book yet on Design Patterns. It distills material from many other books, ties together complex concepts, and provides solid examples in c#. This is the first time I've felt I've really "got it", and could now architect applications in the real world leveraging design pattern skills. It also uses a treasure trove of open source tools and frameworks, which is a best practice in itself. It also covers Unit Testing, Mocking, Inversion of Control, Application Layering and Messaging Patterns, as well as providing a practical real-world case study, which is the meat of the concluding third of the book. Highly recommended.
2 of 2 people found the following review helpful
David W. Wood
- Published on Amazon.com
If you downloaded the code for the book, there are a few things of which you should be aware. Most of the code was created in VS2008 SP1 (with Framework 3.5) though some later chapters also use VS2010. In addition you need to assure MVC 1.0 is setup for VS2008 in order to run some of the "VS2008" solutions. I had no problems with VS2010 for any of the solutions targeting it. In addition, if there is a "user interface" project in a solution, assure it is the startup project before you run the example. One of the earlier chapters had an incorrect name for one of methods run when the "withdrawal" button is clicked. To correct, go to the code behind select the "Withdraw" method and add "al" to the name of the method.
One of the earlier projects had trouble finding the data base filename because a full path was specified for it instead of using the "|Data Directory|" prefix to the mdf file under the App_Data subdirectory. There were at least four places in the solution where the full path was used. You also need to have a local instance of SQLEXPRESS installed and running. I used SQL Server 2008 R2 SQLEXPRESS.
For the solutions with unit tests, I installed the latest version of NUnit and set it to run within VS2008 using the External Tools option. If done successfully, "NUnit" should show up under the Tools menu. Click "NUnit" and open the test project assembly you want to run the tests for.