This has been a crazy summer, but since our daughter has decided not to show up on her due date (which was September 24). I finally got some time to sit down and read a pre-release of Manning’s Silverlight 2 in Action. I know the two authors who wrote this, and while John and I have had beer and burgers up in Bellevue, Chad and I have yet to meet up offline. So if I have to pick on someone, it will be Chad ;)
[ Disclosure: I was given a MEAP copy of this book specifically for review purposes ]
Executive Summary: If you want to learn Silverlight 2, get this book
First, a comment on organization. I like the way Chad and John have organized this book, building up from simple to more advanced concepts. While that may be a no-brainer, many authors lose sight of what it takes to bring a person up to speed on a new technology, and often start off with a concept that is just completely foreign to them. For folks who have an understanding of Silverlight, the first chapter will be review, but that is to be expected.
I tend to prefer books that are more presentation of facts than just run-throughs of tutorials. I know many folks also like the tutorial approach as well. For me, this book is a great example of the factual approach I prefer. Lots of detail and very well organized. You can approach the chapters or the subchapters in an ad-hoc way without getting lost in the middle of a larger tutorial. Great stuff!
One thing that stood out in chapter 1 was the mention of attached properties. This is often left out, and really is, along with the whole concept of dependency properties, a core concept that isn’t intuitively obvious from looking at source and markup. The first time you look at xaml, you often wonder what the heck that “Canvas.Left” is doing on those controls.
Chapter 2 gets into the theory and practice of how Silverlight sits on an html page. The book explains the two separate OMs and how they integrate to build a full solution. It also goes into detail on the instantiation/installation model and the properties for the objects/functions used. I haven’t seen this level of detail in any of the other books or online resources.
One you get past all that great information in Chapter 2 (which may be something you skip past at first, but will want to return to), Chad and John get into the guts of Silverlight programming, graphics, text and layout. From there he goes into controls, input and focus.
Then in Chapter 5, the guys talk about Data Binding. Binding is another one of those essential skills any Silverlight and WPF developer needs. Sure, Binding in WPF is richer, but it is still extremely useful in Silverlight 2. The chapter explains in detail what it takes to bind something, and what the under-the-covers binding process looks like.
Including LINQ in 5.5 seemed a little odd at first, but you have to cover it somewhere, since LINQ is an important technology that Silverlight can use. We even used it back in our Silverlight 1.1 alpha application in July 2007. So, including it in a chapter on Data Binding probably wasn’t a bad idea.
Chapter 6 gets into a topic near and dear to my heart : Networking and Communications. This is the main chapter that John Stockton wrote. The authors do a good job here covering all the communications mechanisms in pretty good detail. I was about to complain about the lack of WCF Duplex, but then I found it under the advanced topic – a good place for this technology. The chapter glosses over the server-side work required to make the example work. As much as I would have liked to have seen that in there, I can understand why that might take up just way too much room in the book (and the book is on Silverlight 2, not WCF)
The section on sockets was just a placeholder in the version I reviewed. If the coverage of sockets is as good as the rest of the chapter, I have no doubt the content will be good.
Chapter 7 covers media and delivery mechanisms for that media. Media has been pretty beaten to death since Silverlight 1.0, so despite the great coverage of the content here, you may think there’s nothing new to learn here. However, the chapter has great detail not only on the properties, but the lifecycle and order of events. Great stuff!
Chapter 7 is also the chapter where you’ll see how to work with images and Deep Zoom.
Chapter 8 goes into vector graphics and brushes, and does a great job explaining all the moving parts there. Chapter 8 is also where you’ll find the information on transforms. Transforms apply across the board to most any element, so don’t assume by the placement here that they are restricted to vector graphics elements.
Chapter 9 goes into animation. I won’t insult you by saying this topic is scary to developers, as I think most developers looking at Silverlight will be comfortable at least understanding the basics of animation. However, good animation can be daunting, and this chapter gives you at least the foundation you can build on or use to execute on the animations the designer has provided.
If you’re an animation professional, or used to professional animation tools, you may want to skip chunks of this chapter, but most folks will need this basic understanding.
Chapter 10 goes into styling. First the chapter covers the basics of styling (and source URIs and resources), and then it gets into control templates. Finally, it tackles VisualStateManager, arguably one of the most important styling and state concepts.
Chapter 11 gets into more of the goodies that Silverlight includes in the box. Smaller topics like Isolated Storage, creating Xaml at runtime, background threads, downloading content at runtime (an expansion of networking concepts) including fonts and compressed files, and Silverlight 2 Xaps, and the DLR all get sections here.
Chapter 12 covers packaging up your wonder creations as units you can distribute to others. This isn’t xap deployment, but about creating things you can share. Chad also offers up a decent navigation pattern here that seems to work well. This is the chapter where you’ll find preloader / splash screen information as well as hosting and streaming. Of all the chapters, this was my least favorite due to its organization. That may be because it is unfinished, or because it was simply the last chapter in the book, and Chad had to pop a lot in there without making the book 1300 pages :)
I found a few small nits in the book, but I suspect those will be corrected in the final version. Overall, my opinion is that this is a very strong Silverlight 2 book.
Do I recommend this book? Definitely. If you are new to Silverlight, this one will be great resource for you to quickly get up to speed. There’s just enough Blend in there to make sure you get the basics of the tool (which is often all most developers will need) and plenty of markup to help you along the way.
Two thumbs up.