Catching Up On Old Book Reviews
I’ve missed reviewing several books I’ve gotten a lot of good use out of over the last year. Here are bits and pieces on four good ones. I haven’t completely read through all of them; however, I’ve gotten enough out of them to feel comfortable with scratching out a few remarks on each.
Deploying .NET Applications: Learning MSBuild and Click Once by Sayed Y. Hashimi and Sayed Ibrahim Hashimi. Publisher: Apress.
I picked this one up as I was working on the MSBuild article for Windows Developer Power Tools. The book’s concise and hits a number of good points on MSBuild, Team Foundation Server/Team Build, and ClickOnce. I really didn’t spend a lot of time in the TFS or ClickOnce pottions — I was busy using the MSBuild parts to try and get my head around that particular technology.
The coverage of MSBuild includes some comparisions to NAnt and a number of the make variants. (barf) There’s a good example walk-through of MSBuild and a nice bit on writing custom tasks for MSBuild. While the MSBuild parts are well-written, the explanations really didn’t click for me, but that’s probably due to my serious bias in favor of NAnt and my background with Ant. I had a tough time getting past those biases and grokking any advantage of MSBuild over NAnt.
Overall I think the book would be useful, it just didn’t quite click with me. That said, I’m looking forward to revisiting this book as I dive in to TFS and Team Build starting next week. I’ll also be using this book for the SmartClient bits.
Microsoft Windows Communication Foundation Hands On! (Beta Edition) by Craig McMurtry, Marc Mercuri, and Nigel Waitling. Publisher: Sams.
This book was out well before the RTM of WCF and I’m amazed at how great a job the authors did being so far in the lead of the wave of WCF books. The entire book is really a set of explanatory articles walking readers through introductory topics, general knowledge, and deep dives into specific areas of WCF.
The writing style is clear and to the point, and the exercises are great for demonstrating the specific bits they’re talking about. The authors managed to keep all the code examples up to date via constant update releases on a companion website.
There’s also a bonus chapter covering InfoCard, its background, and how it ties in with WCF and some nice example code.
(This is also one of the very few useful books I’ve found from Sams. I generally dislike their offerings, but this one’s a winner.)
Programming ASP.NET, 3rd ed. by Jesse Liberty and Dan Hurwitz. Publisher: O’Reilly.
This is a massive work covering a broad range of topics for ASP.NET. I found Fritz Onion’s book on ASP.NET a better work for the basics of ASP.NET such as page lifecycle and state; however, this book walks though a great number of detailed discussion on basic and advanced controls.
There’s also solid chapters on tracing/debugging/error handling, and validation, plus other chapters on user controls, web services, and a number of other topics.
I’ve used this book mostly for occasional reference — I do very little ASP.NET development, so it’s been a boon when I’ve needed a good example to point me in the right direction.
C# Cookbook, 2nd ed., by Jay Hilyard & Stephen Teilbet. Publisher: O’Reilly.
Another book that’s great as the occasional reference. This is another huge tome and it’s chock full of topics from generics to security to XML.
Each topic is a recipe in a Problem/Solution/Discussion/See Also format. The solution is a snippet or set of snippets to solve the specific problem and the discussion is s walkthrough of the ins and outs of both the problem and how the solution fits the bill. Occasionally there’s a good discussion of the pros and cons of solutions.
This isn’t a book for reading cover to cover, but there’s a lot to be learned browsing through the recipes, and you’re sure to get answers on a wide range of topics including solid use of generics, exception handling, I/O, web bits, and networking. The chapters on security and reflection are particularly useful because they offer up good insights on approaching secure coding correctly and good techniques for dealing with reflection.