转自:http://developer.51cto.com/art/201001/181425.htm
Windows Workflow Foundation(WF)提供了一个编程模型,进程内工作流引擎,可以实现作为.NET应用程序内部工作流程的长时间运行的进程。
在.NET Framework 4中,Windows Workflow Foundation相对于之前的3.0和3.5版本,引入了大量的变化,实际上,开发团队重新审查了编程模型的核心,运行时和工具都进行了架构上的改动,以提高性能和生产力,开发团队解决了旧版本用户反馈的大量问题。
什么时候使用工作流
下面这些应用程序类型可能需要使用工作流:
任何实现了一个长期运行的进程的应用程序天生就需要工作流;
显示页面给用户的ASP.NET应用程序可能需要一个工作流控制页面的显示顺序;
在面向服务环境中的综合应用程序可能需要使用工作流实现其核心行为;
解决特定问题的应用程序,如客户关系管理(CRM),或一个特定的垂直市场,如金融服务,这些应用程序可能需要使用工作流。
对于ISV(独立软件开发商)而言,工作流可以为用户提供自定义应用的能力,而无需对程序核心功能大动干戈,你可以授权你的用户做以下事情:
基于他们自己的业务规则做出决定,调整工作流;
与工作流外的其它软件和系统通信的方法;
与人交互的方法;
维护整个工作流生命周期内的状态。
.NET 4工作流中的新特性
在.NET Framework 4中,对Windows Communication Foundation(WCF)和Windows Workflow Foundation(WF)框架做了大量的改进,.NET开发人员可以独立使用这些技术,也可以联合使用。
.NET中的工作流是由活动,运行时和工具组成的,下面是对.NET 4中工作流的变化做的总结。
图 1 .NET中的工作流组成结构
1、XAML工作流是新的默认方法
可以在一个XAML文件中创建一个声明性工作流,无代码隐藏,这意味着工作流可以象数据一样存储,检索和修改。
2、WF,WCF和WPF之间模型统一
作为一名开发人员,在程序内部我们需要像Windows Presentation Foundation(WPF)编写用户界面那样一样强大和灵活的的声明性编程模型,Windows Workflow Foundation(WF)为构建应用程序和服务逻辑提供声明性框架,为开发人员提供了一个更高层次的语言处理异步的并行任务和其它复杂的处理。
3、扩展的基础活动库
在.NET 4中引入了下面几个新活动:
流控制:Flowchart,ForEach,DoWhile和Break
WCF:Send,Receive,SendReceive,RecieveParameters,CorrelationScope和InitializeCorrelation
其它:Assign,MethodInvoke,Persist,Interop和PowerShellCommand
更多的活动计划发布到CodePlex上。
4、简化的WF编程模型
WF 4.0使下面这些事情变得更加容易:
托管工作流和运行工作流实例;
管理工作流书签;
创建自定义活动;
管理数据和参数。
活动是编程模型的核心基础类型,它同时代表了工作流和活动。此外,你不再需要创建WorkflowRuntime来调用工作流,你只需创建一个实例并执行它,简化单元测试和应用场景。
工作流编程模型变成一个完全由声明性活动组成的东西,没有代码隐藏,简化了工作流设计。
5、支持参数,变量和表达式
跨活动的数据流动是一个挑战,它需要依赖属性和数据绑定,对于大多数开发人员这种感觉很不自然。
此外,管理活动状态也是一大挑战,在XAML中没有定义本地存储的方法。
WF 4.0通过增加参数,变量和表达式简化了数据流。
WCF集成的重大改进
新的消息活动,消息关联和改进的托管支持,以及完全声明性服务定义是改进的主要领域。
你可以这样理解“WCF在外面,WF在内部”,WCF暴露外部接口,WF描述内部流程和状态转换。
发送和接收一个WCF消息时,通常需要一个关联,在.NET 3.5中,关联是基于内容上下文消息头的,在.NET 4.0中对WCF增加了关联支持,通过活动WF使关联更容易使用。
XPath表达式识别一个关联令牌
CorrelationScope
InitializeCorrelation
运行时和设计器改进
设计器现在支持更大型的工作流,性能也更好,设计器都是基于Windows Presentation Foundation(WPF)的了,充分利用丰富的用户体验,人们可以建立声明性UI框架,活动开发人员使用XAML定义其活动以及在可视化设计环境中与用户交互的方法。此外,在你自己的应用程序中重新托管工作流设计器,让非开发人员查看和与工作流交互变得更加容易。
通过AppFabric托管和管理
AppFabric之前的代号叫做“Dublin”,它为IIS和WAS提供WF托管和管理扩展。
Windows Server AppFabric有三个核心功能:缓存,工作流管理和服务管理。
对于Web应用程序,Windows Server AppFabric提供缓存功能,提高访问速度,提高应用程序的可用性,避免对数据源不必要的访问;
对于综合应用程序,Windows Server AppFabric使利用Windows Workflow Foundation和Windows Communication Foundation构建和管理服务更加容易;
一般来说,客户的应用程序如果由服务,Web,数据和传统组件组成,你将会发现Windows Server AppFabric会让开发,部署和管理这些综合应用程序变得更简单。
欲了解AppFabric有关的更多信息,请访问Windows Server AppFabric(http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx)。
流程图
流程图在序列化和状态机模型之间提供了一个折中方案,你将得到:
简单的一步一步模型,具有判断和开关;
允许你在工作流中返回之前的活动。
流程图更接近于概念和思维过程,许多分析师和开发人员在创建解决方案或设计业务流程时将会参照流程图,因此,提供一个活动会更有意义,使得创建概念思维更加容易。流程图允许诸如返回之前的步骤,基于单一条件拆分逻辑,或一个Switch / Case逻辑等概念。
图 2 流程图
创建自定义活动
.NET 4.0为创建自定义活动重构了编程模型,可以从WorkflowElement衍生自定义活动,也可以从零开始创建自定义活动。
在本文的第二篇中,我将会介绍一个基本工作流的概念,你可以使用Visual Studio 2010和.NET Framework 4 Training Kit做一下试验。
使用.NET 3.x工作流
你的.NET 3.x工作流将继续使用WF 3.0运行时工作,在一个.NET 4.0工作流中你可以使用.NET 3.x活动,但必须使用.NET 4.0的Interop活动。如何准备你的.NET 3.x应用程序的指南将会很快发布。
原文出处:http://blogs.msdn.com/usisvde/archive/2010/01/10/first-look-at-workflow-in-net-4.aspx
原文名:First Look at Workflow in .NET 4