Yikes! We're getting a little ahead of ourselves I fear.
I am no WF expert. I'd trust what you hear from Michelle or Bryan Noyes; they're among my "go to" people on matters WF and WCF.
I have been fortunate to be in their vicinity recently as they opined on these subjects. Let me net out for you what I think I have heard from them: stay away from WF for most navigation scenarios.
In fact, unless your boss is roasting you over an open flame because he (crazy that he is) insists on WF right now, stay away from WF 1 ... period. Wait for "WF 2 - The Reboot".
I know Michelle wrote that sweet little article. But read it closely. She's talking about how WF might be useful if UI navigation is complex and you've got a ton of pages to work through. You <<might>> consider it if, in her words, your app "presents a large number of screens, or involves wizard-driven UI". Is that you? If you've got four or five transition decisions and the rest is serial flow or jumps governed only by the whim of the user ... I'd say WF is overkill. IMHO, it is overkill for the simple scenario she demos in her article (that's not a slap at the article, btw).
Performance shouldn't be the first consideration, nor the second or third. You first want to match the complexity of your approach to the complexity of the problem. I'm betting, based on your question, that you haven't written any serious WF yourself. You want to take on the considerable intellectual burdens of learning and supporting WF only if you have a really compelling reason to do so ... or a lot of extra time on your hands.
Let's take a look at her remarks on performance anyway:
When Workflow is used in the context of a long-running process, the overhead of loading the workflow instance for a page request is not an immediate concern. When Workflow is used synchronously to drive page navigation, this overhead is more noticeable. Web sites that have very complex UI navigation may find the trade off of performance is offset by the benefit of visualizing page flow in the Workflow Designer. With the release of .NET 4.0, optimizations to the Workflow Runtime will make this an even more viable option.
The phrase "more noticeable" is an understatement. Perf will be much better in .NET 4.0 ... but that's not to say it will be good enough for smart client or RIA screen navigations. No one knows for sure. Do you want to be the first?
I don't believe that WorkFlow assemblies have been ported to Silverlight and I don't know if they will be for .NET 4.0. Everything I've read about Silverlight and WF has involved people invoking WF back on the server; that's not going to be a smart way to control how your user navigates within the Silverlight client.
I'm having a hard time understanding why you'd want to push WF down to the Silverlight client ... even it were possible. Probably a failure of imagination on my part. I think of WF as most appropriate for long running operations (more than a few seconds) ... and screen navigation does not qualify. If you've got really twisted decision logic for how to navigate your client application I'd be worrying more about whether the UI is too complex and worrying less about how to implement it.
And ... ah ... DevForce doesn't have an MVC implementation. MVC is a separated presentation pattern and we take no particular stance on which of the many such patterns ... and pattern dialects ... you choose.
We have demonstrated how DevForce collaborates well with a few of these patterns, MVP and MVVM (aka, PresentationModel) in particular; MVC has not been one of the patterns we've discussed ... not as I recall.
I happen to think it will work great with ASP MVC. We have a client who told me DevForce fit beautifully into his MVC solution. If you're going there, I'd certainly like to know about your journey. However, I find myself more intrigued by Silverlight these days ... and the favored pattern there (for excellent reasons) is MVVM.
Sorry for rambling. I hope this helps somehow, -- Ward
|