我正在评估WF是否适用于网络业务应用程序,并且很想听听一些关于该技术的最新第一手经验。
我的主要兴趣在于提高项目可维护性,也许是在处理频繁更改的复杂流程时提高开发人员生产率。
我非常喜欢WF的想法,但它似乎相对较为未知,我遇到的许多旧评论都提到一旦开始使用,它就变得极其复杂。
如果它过度设计到无法使用(或是小型到中型项目的不良取舍),那么这是我需要了解的事情。
当然,它自2006年末问世以来已经成熟了,如果是这样,那么另一个非常有帮助的信息是什么!
谢谢您提前的帮助!
我正在评估WF是否适用于网络业务应用程序,并且很想听听一些关于该技术的最新第一手经验。
我的主要兴趣在于提高项目可维护性,也许是在处理频繁更改的复杂流程时提高开发人员生产率。
我非常喜欢WF的想法,但它似乎相对较为未知,我遇到的许多旧评论都提到一旦开始使用,它就变得极其复杂。
如果它过度设计到无法使用(或是小型到中型项目的不良取舍),那么这是我需要了解的事情。
当然,它自2006年末问世以来已经成熟了,如果是这样,那么另一个非常有帮助的信息是什么!
谢谢您提前的帮助!
Windows Workflow Foundation是一款功能强大的产品,但仍然处于第一个版本阶段 :-(
使用它的主要原因包括:
WF作为一个库/框架存在,因此大多数时候需要编写托管WF运行时的主机。话虽如此,使用IIS中托管的WCF是一个可行的解决方案,可以节省很多工作。然而,WCF/WF耦合不够完美,需要进行一些严肃的工作。有关更多详细信息,请参见此处。在下一个版本中可以期望相当多的变化/增强。
WF(和WCF)是微软很多新产品的核心,您可以在PDC期间期待一些有趣的公告。
顺便说一句,保持多个版本的工作流程运行需要一些工作,但这大多数是标准的.NET。我刚刚在这里发表了一系列博客文章,涉及该主题。
关于可视化建模业务需求。
在理论上,这种意图和实现分离的方法非常有效。然而,在实践中,由于纯粹的技术原因,您将会在工作流程中增加许多额外的活动,这样做有点不切实际,因为您必须告诉业务分析师忽略一半的形状和线条。相关问题:何时使用Windows Workflow Foundation?我在那里的回答:
只有满足以下条件之一,您才可能需要WF:
- 您有一个长时间运行的过程。
- 您有一个经常更改的流程。
- 您想要一个过程的可视化模型。
更多细节请参见Paul Andrew的文章:何时使用Windows Workflow Foundation?
请不要将WF与任何形式的可视化编程混淆或相关联。这是错误的,可能会导致非常糟糕的架构/设计决策。
因此,如果您有这样的需求,则WF是一个不错的选择。当然,它相对复杂,但要提到它试图解决的问题也很复杂(有时非常复杂)。我认为,例如,脱水/重启动附有事件处理程序的对象(具有可以在对象不在内存中时触发的事件)非常复杂。
我无法判断您所说的“小到中型项目”是什么意思,但总的来说,如果您的项目至少具有上述列表中的两个要求,则可以将WF视为解决方案。
我们在一个较大的SharePoint应用程序中使用WF,我可以说它还可以。它具有很强的功能和灵活性。正如Kevin提到的,一旦您理解了工作流背后的基本概念,您就可以几乎做任何您想做的事情。
另一方面,它也存在一些非常严重的问题,比如缺乏版本控制,这可能会在将来严重损害您的应用程序。我们不得不部署同一工作流的多达3个并行版本,名称分别为xxx-v1、xxx-v2和xxx-v3,以保持旧实例运行,并使新实例使用更新的版本。真是一个让人头疼的问题。哦,还有一些非常不直观的概念(关联标记,什么鬼??)
我们在工作中有一个项目使用了Workflows,我也参与其中。这个项目的想法(来自管理层)是,我们程序员会编写Workflow Activities以及"engine"和框架。然后,非程序员将负责将自己编译的Workflow编译成dlls,引擎会自动加载。
管理层认为非程序员使用Workflow来帮助开发软件的想法很棒,但事实上纯粹浪费时间。我们试图通过这个项目解决的问题相对比较复杂,我们从一开始就知道软件需要不断修改(其计算依赖于其他公司和政府)。
最终结果是,我们无法使Workflow模块变得通用,以便任何人都能使用。所以程序员被迫与Workflows一起工作,而所有的Workflows只是阻碍了我们的工作。
我过去几个月一直在使用Workflow 4.0,虽然大多数情况下令人印象深刻,但我发现它非常难学。
对于最新版本(随 .NET 4.0 RC提供),网络上几乎没有任何文档、书籍或培训课程。我只找到了与已废弃的 3.0 版本相关的文章。即使是MSDN文档也十分匮乏。
工作流设计器并不像应该有的那样直观,因此学习非常困难。我不得不依赖StackOverflow上的一个人的答案(顺便说一下,谢谢Maurice!)-如果没有他的帮助,我就毫无头绪了。
因此,总结一下,我认为它有潜力,但你要想学好它还需要等待更多的培训、文档和书籍,否则你将进入盲目状态!
我认为MS WF是一个低级别的工作流程库,而不是像K2这样完整的企业工作流产品。它将使您能够构建启用工作流的应用程序,但本身并不是一个工作流应用程序。在这方面,我的经验是积极的,尽管我们不得不在它周围构建很多自己的基础设施(发布/订阅框架、工作流生命周期管理器等)。许多文档都相当简单化,没有涵盖基于MS WF构建企业工作流应用程序的内容。
难以学习。非常灵活。不要将其与面向终端用户的可视化工具混淆,它只适用于程序员。我不确定是否喜欢依赖属性的方法。
这真的取决于您想用它来做什么。我只用过一点点,但与像MetaStorm(我知道技术上它是BPM,但仍有工作流组件)、Process Choriographer和IBM MQ工作流等更成熟的产品相比,它们根本无法相提并论。它还不够成熟。另一方面,它是免费的,而其他产品则不是,可能可以完成工作。我不知道是否会在它上面投入数百万美元的运营,但对于较小的运营,我会再试一次。您将面临的真正障碍是它需要改变思考方式。如果您没有开发人员之前使用状态系统的经验,那将是一个真正的障碍。