With the impending RC of the .NET Framework 3.0, I've noticed that there has been a pretty big increase in interest in WPF, WCF, and WF. As a result, I think I'm seeing another round of "how do you do this?" type questions, essentially a new generation of developers being exposed to stuff that a lot of us have been working with on and off for as much as three years (anybody remember PDC '03 and working with Avalon and Indigo??).
A post by K. Scott Allen that I read this morning contains a small laundry list of complaints about Windows Workflow Foundation.
- He mentions that setting up the communication between a Workflow and the host is a "tremendous amount of work". This isn't exactly true. While there are very specific rules you need to keep in mind, and if you do things in a certain order things are easier, I would definitely not qualify it as a tremendous amount of work. Building an application that hosts the workflow designer with a custom activity palette that serializes said workflows into XOML-only files (no code behind) that can then be re-consumed by the same application as active workflows - that is a tremendous amount of work. Rigging the communication lines between a Workflow and its host can fail if you do it wrong, but its not a lot of work. You just need to pay attention to what you're doing. Having done it a few dozen times per CTP, I can usually start-to-finish stub out an empty WF project with persistence, tracking, and an ExternalDataExchangeService in about 20 minutes. It takes more than 20 minutes for me to get my coffee from Starbucks.
- He mentions that dependency properties and meta-properties are difficult and can catch people off guard. MS doesn't make it clear enough, to be sure, but, right in the introduction section of the SDK there are links to detailed articles on Dependency Properties - which are used both in WF and in WPF - so once you learn DPs you can re-use that learning for more than one technology. In other words, DP learning is mandatory. Live it, learn it, love it. Are they difficult? no. They're new, and probably require reading a few articles and seeing a few samples, but they're not rocket science for anyone with a good core knowledge of the CLR and "how things work".
- SharedConnectionWorfklowCommitWorkBatchService - K. Scott Allen says, "Something makes me nervous when a class name has 46 characters." Granted, the class name is somewhat large, however. Look at it. Without knowing where it came from, I know exactly what this class does. It is a batch service for work committment transactional tasks that work on a shared connection for a workflow. I could never have seen this class before and immediately glean some knowledge of its purpose from the name. I would much rather read a 46-character class name that I can then plug into a google search than go back to the horrible Dark Ages of Development where everyone thought tersity and obfuscation was the fantastically hip thing to do. In those days, the class would have been called CSCWCBS and all of its parameters would've been prefixed with z and lpsz and other unbelievably self-explanatory (sarcasm!) annotations.
So I guess what I'm trying to say is this: Sure, Windows Workflow Foundation is a large new topic, as are WPF, WCF, and CardSpace. Does that mean they're difficult? Not particularly. When learning WF, you will need to invest some time. The best time you can invest in the WF is in tinkering. Open up Visual Studio without looking at any samples and just start cranking away and see what happens when you do this and when you do that, etc. Then, when you've got a specific "How do I .... ?" question, you can plug that into google or head to the MSDN forums or any number of other resources.
For me, learning is an adventure. I liken it to climbing a mountain. When I am presented with a new technology, I see a huge mountain in front of me. There are literally hundreds of different paths to take up the mountain - some are more scenic, some are more challenging but get me there faster. In the end, every step I take up the mountain leaves another behind me, and the looming shadow before me shrinks. When I get to the top, I can look down at it and be proud of what I've learned, even if there were hundreds of people helping me get up the mountain. So my advice is - dive in, try learning Windows Workflow Foundation, find other people trying to learn it, come up with sample projects you want to code and try them out. Trust me, in the end, when you feel comfortable creating WF-driven applications, the rewards will be plenty and your applications will be amazing. tags: wf workflow complexity windows vista netfx3 dotnet net
links: digg this del.icio.us technorati reddit