To Follow Up…
So it turns out that Paul Andrew, the technical product manager of WF linked to my very abstract review of Essential Windows Workflow Foundation. For those that haven’t been following, I wrote an awesome review of the book on Amazon and sent it in (or so I thought!) but I haven’t seen it show up on the page yet :-S
So for the sake of others considering this book, I’ll review it again.
There are two types of developers that you will come across: those that are content to make things work and solve business solutions from the top down and those that want to understand the underlying technologies to build solutions from the bottom up. This is not so much a discussion on “architecting”, mind you, but rather a discussion on how different developers approach tools and frameworks. Not that one is better than the other, but each brings a different approach and each has different preferences with regards to technical resources.
If you fall into the former and you are mostly concerned with your immediate business solutions (learn top-down) and you learn best by doing, then this book is not for you. The contents of this book are not so much concerned with how to solve business solutions with WF nor is it a cookbook for WF solutions. This book doesn’t have many pictures of the design surface and doesn’t concern itself much with building workflows in the designer. It is an introductory guide to the underpinnings of the WF framework. It delves into the workings of WF and the principles behind many of the advanced concepts that may not necessarily crop up in most use cases.
If you fall into the latter category of developers (learn bottom-up) and you learn best by first understanding the tool and the design principles of the tool, then this book will be a good starting point to understanding WF. In fact, the first chapter of the book walks through a sample implementation of a simple “workflow engine” and covers the principles that drive the implementation of the WF framework. The chapter presents a “If I were writing a workflow engine, how would I write it?” scenario (if that makes any sense). This outline then serves as a basis for understanding the function and design of the WF engine.
The book provides insight into advanced concepts and does a fairly good job of it (examples are simple and straightforward – oddly, not all of the code is provided online), but it seems to come up short in the last chapter, where the authors just kind of jumbled everything that they didn’t cover into one chapter. It almost seems like the authors were working on a 10 or 12 chapter book but were forced to cram the remaining topics (unfinished) into chapter 8. In short, the book seems unfinished.
This book is not for everyone. It does assume some familiarity with higher level .Net framework concepts that many developers from the ASP.Net world may not have experience with (specifically, threading and asynchronous method calls) so for that reason, I would recommend a companion book: Pro C# 2005 and the .NET 2.0 Platform, Third Edition. As a general note, I’ve found that the “Microsoft .Net Development Series” of books from Addison Wesley typically does not cater to the first class of developer as the titles tend to be architecture and framework oriented as opposed to solution and implementation oriented.
In summary: 4 out of 5 stars; a worthy book that deserves a space on your bookshelf if you plan on doing WF.