I'm working on a new architecture for essentially an n-tier collaborative application (not enterprise-class, just a smallish project with potential to grow significantly) where I'm already trying to discipline myself to use IoC and, to some extent, TDD, and I'm wondering, in general terms, whether it is wiser to just hand-code workflow logic or if I should delve into learning and integrating WF4 (Windows Workflow 4.0, part of .NET 4.0) so that WF becomes literally the controller of the entire application, i.e. the practical C in "MVC" (not ASP.NET MVC but rather the pattern). So should workflow activities in WF4 be the primary controller for a highly expandable/growable web-based collaborative application? Or am I asking entirely the wrong question?
This is a vague question, I'm sure, so abstract answers are as welcome as specific ones.
I am aware that WF4 is a significant rework and redesign of WF3, where much of what made WF3 a poor technology choice has been cleaned up in WF4. For example, as far as I can tell (although I haven't looked very hard, and there's been virtually no coverage on this), WF4 activities are more or less testable with [TestMethod] and mocking (can someone in the know please confirm? .. testability of WF is a huge concern for us). I have very little interest in the diagramming or late-loading via XML with WF, I much prefer to write concrete C# workflow declarations, but if a workflow can be written succinctly in a compiled language and can be testable, I'm tempted to pay attention to it. So if these improvements are there, these among others like improved performance have grabbed my attention about the technology again, whereas I had previously pooh-poohed WF3.
Also, according to Microsoft, WF4 is what Microsoft wants to standardize upon for all the many workflow-driven products in the future, after lessons learned from having different workflow technologies in MS CRM, MS SharePoint, etc. I am certainly curious about betting on a one-size-fits-all feature, but only if implementations can be succinct, type-checked at compile-time, testable, and maintainable.
EDIT: Only answers from those who know WF4 (not WF3) will be considered for "the answer".