Top positive review
6 people found this helpful
Overall a good refresher with the right level of detail
on 11 May 2013
I had a hard time about whether to give this 3 or 4 stars, but in the end felt that it has enough good detail and is well paced enough to get 4. It's definitely not a 5-star book though.
I've read this through from beginning to end, doing the exercises as they came up, which works really well for me as a format. For the past few years I've been doing back-end systems work and I've struggled when I've had to do anything on the front-end. After working my way through this I feel confident about building/working on an MVC website. In general I found the level of detail really good, with explanations of most of the major building blocks in the framework, like Routing and Model Binding, and a good introduction on how to extend those.
However, there are some annoyances: the index is poor, there are machine-generated typos in Chapters 16 & 17 e.g. 'table' substituted with 'Table-16', which makes reading 'suitable' or 'database/Table name pair' much harder than it should be.
Then there are also parts that feel a bit like filler, for example Chapter 4 "Essential Language Features" focuses on the changes that came with C#3.0 back in 2007. That said, the examples the authors give are good. Also, given that the book is labelled as being for intermediate to advanced users, the description of how to debug in Visual Studio in Chapter 12 seemed entirely superfluous.
The section on Authorization and Authentication is inadequate to say the least (and as of .Net 4.5, obsolete) and while the 'Deployment' chapter has an OK-ish intro to hosting on Azure, it doesn't mention at all the config transforms that were introduced with VS2010, but instead talks about making sure you delete connection strings you don't want on production. In fact, really, no part of your deployment strategy should be 'make sure you've deleted stuff'.
The worst aspect though is the failed separation of concerns in Chapters 7-11, just because it's an addition that could easily have been omitted and is implemented badly. There's no good reason for your external domain project to have attributes on its entities that are for a specific UI implementation - the 'Description' property of a 'Product' is almost certainly not inherently 'MultilineText'. Even more importantly, your domain should not require a reference to your UI framework as the example project does because the domain model decides how the UI displays a property.
Overall then, a good book that has helped me get to grips with the MVC framework, but with some aspects that really let it down.