I love showing people the power of declarative, designer-driven programming when I first introduce them to Workflow Foundation. The workflow designer is a feast for the eyes:
One of the first questions people always ask me is whether the workflow can be debugged just as easily as a bunch of cooperating components. The answer, as usual, is: It Depends.
Theoretically, you can always place a breakpoint on an activity and when the workflow executes then execution will stop at the breakpoint:
However, this doesn’t always work. Specifically, it works in a simple project but then stops working when you really need the debugging support. Specifically, when you’re loading the workflow assembly using Assembly.LoadFrom (it’s not one of the most friendly APIs out there, by the way).