When the Windows Workflow Foundation (WF) was first introduced in the .NET Framework 3.0, the only way to host a workflow in a client application was to use the WorkflowRuntime class programmatically, start the runtime, and create/start an instance of a workflow. Furthermore, if you wanted to communicate between the client code and the workflow logic, you needed to use a ExternalDataExchangeService. This required a fair amount coding effort to get even the simplest of workflows up and running. The .NET Framework 3.5 introduced Workflow Services which are Windows Communication Foundation (WCF) Services authored as workflows. Workflow Services give you a new way to accomplish this scenario using a much simpler, cleaner, and arguably more elegant approach. In this three part screencast, I show you how to improve on the more manual hosting + ExternalDataExchangeServices approach by hosting a workflow in a client executable using Workflow Service.
Part I - Reviewing the SimpleExpenseReport application from the Create a Sequential Workflow tutorial so we can compare the two approaches. The application explicitly hosts the WorkflowRuntime & uses ExternalDataExchangeService
Part II - Walking through the fundamentals of creating a Workflow Service and hosting the Workflow Service locally
Part III - Walking through my rewrite of the SimpleExpenseReport application using Workflow Services.
Source code for the Workflow Services version of SimpleExpenseReport is available at http://cid-1f72da7294089597.skydrive.live.com/self.aspx/Public/WCF_WF/SimpleExpenseReportWorkflowServices.zip.