当使用Windows Workflow Foundation的? [关闭] 当使用Windows

2019-05-13 18:01发布

有些事情是容易只是用手(代码)来实现,但有些是通过WF容易。 它看起来像WF可以用来创建(几乎)任何一种算法。 因此,(理论上),我可以做我的WF所有的逻辑,但它可能是一个坏主意,这样做对所有项目。

在什么情况下是它使用WF一个好主意,它的时候会使事情更难,然后他们必须? 有什么利弊/手动WF与编码的成本是多少?

Answer 1:

您可能需要WF仅如有以下为真:

  1. 你有一个长期运行的进程。
  2. 您有经常变化的过程。
  3. 你要过程的可视化模型。

有关详细信息,请参阅保罗·安德鲁的帖子: 用什么Windows工作流基础呢?

请不要混淆或涉及WF与任何形式的可视化编程。 这是错误的,并可能导致非常糟糕的建筑/设计决策。



Answer 2:

决不。 你可能会后悔:

  • 陡峭的学习曲线
  • 难以调试
  • 难以维持
  • 不能提供足够的动力,灵活性和生产力增益,以证明其使用
  • 能够并且将无法恢复损坏的应用程序状态

我曾经设想利用WF的唯一情况是,如果我想主办终端用户的设计师,也许甚至没有然后。

相信我,什么也不会永远是那么简单,功能强大,或灵活,因为你写到底该怎么做,你需要做的代码。 远离WF路程。

当然,这只是我的意见,但我认为这是一个该死的好一个。 :)



Answer 3:

通过WF生成的代码是讨厌的。 该WF带来的价值是在系统的可视化表示,虽然我还没有看到任何东西(在现在,我一直在参与WF工作6-7项目),我不会首选简单的手工编码项目。



Answer 4:

一般来说,如果你不需要持久性和跟踪功能(这在我看来是主要功能),你不应该使用工作流基础。

以下是工作流基础的我从我的经验收集的优点和缺点:

好处

  • 持久性:如果你将有很多很长的流程(想到天,周,月),然后工作流是为这个伟大的。 空闲工作流实例被保存到数据库中,以便它不使用内存。
  • 跟踪:WF提供机制来跟踪工作流中执行的每个活动
  • *视觉设计师:我把这个作为一个*,因为我觉得这是真的只用于营销目的。 作为开发人员,我喜欢写代码,而不是抢购的东西视觉在一起。 而当你有一个非开发制作工作流程,你经常结束了一个巨大的混乱的烂摊子。

缺点

  • 编程模型:你在编程功能实在有限。 想想你在C#中的强大功能,然后忘掉它们。 在C#中简单的两行语句成为一个相当大的块活动。 这是特别用于输入验证有疼痛感。 说了这么多,如果你真的要小心,只保留在工作流中高层次的逻辑,以及其他一切在C#中,那么它可能不是一个问题。
  • 性能:工作流使用了大量的内存。 如果您在服务器上部署了大量的工作流程,请确保您有吨的记忆。 另外要注意,工作流是比普通的C#代码慢得多。
  • 陡峭的学习曲线,很难调试:如上所述。 你会花很多时间思考如何把事情的工作,并找出做一些事情的最好方法。
  • 工作流程版本不兼容:如果部署具有持久性的工作流程,并且需要进行更新,工作流程,旧的工作流实例将不再兼容。 据说,这是固定在.NET 4.5。
  • 你必须使用VB表达式(.NET 4.5允许C#表达式)。
  • 不灵活:如果您需要不是由工作流基金会提供一些特殊的或特定的功能,对于很多痛苦的准备。 在某些情况下,它可能甚至是不可能的。 谁知道,直到你试试? 有一个很大的风险在这里。
  • 无接口WCF XAML服务:通常使用WCF服务,你发展对接口。 随着WCF XAML服务,你不能保证WCF服务XAML已在接口实现的事情。 你甚至都不需要定义一个接口。 (我所知道的...)


Answer 5:

我发现使用工作流基础的主要原因是多少它给你带来的开箱跟踪和持久性方面。 这是很容易得到持久性的服务和运行,这带来了多个实例和主机之间的可靠性和负载分配。

在另一方面,就像表格应用,工作流设计器推动你走向不好的代码模式。 但是你可以通过写的工作流程没有代码,并委托一切工作的其他类,可以组织和单位比测试流程更优雅地避免问题的发生。 然后你得到了设计师的很酷的视觉效果方面无面条代码的冗余代码后面。



Answer 6:

就个人而言,我不WF出售。 它的用处是不是明显对我其他新的MS技术,如WPF或WCF。

我认为WF将在很大程度上在未来的商业应用程序中使用,但我不打算使用它,因为它似乎不喜欢这份工作为我的项目的工具。



Answer 7:

公司我目前正在为建立一个Windows工作流基础(WF)和他们选择使用它是因为规则会频繁地发生变化,这将迫使他们做不同的dll等重新编译,因此他们的解决方案的原因是放置规则在数据库中,并从那里调用它们。 这样,他们可以改变规则,而不必重新编译和重新发布的DLL等。



Answer 8:

窗口工作流程勾引非编码IT经理的BA等作为执行其表弟的BizTalk但在实践中的单元测试,调试和代码覆盖率只是三个许多陷阱。 你可以克服其中的一些,但你必须在实现这一目标而使用明码你只拿到大量投资。 如果你真的有一个长期运行的要求,那么你可能需要一些更复杂。 我听到的说法大约能降的新XAML文件投产无需重新编译的dll但老实说,这工作流程会消耗可以更好地用于改善持续集成的地步编译展开时是没有问题的时间。



Answer 9:

在同一起选择K2甚至SharePoint 2007的平台的力量是真正有用的使用时,我会用它在我需要的工作流程的工作任何环境,但是。 当发展与商务智能专家的业务应用,建议使用该平台的,这通常只会是有关简化和改进业务流程。

为了记录WF在联合开发与K2的开发团队和新的K2 blackpearl的是建立在WF的顶部,所以是MOSS 2007和WSS 3.0的工作流引擎。



Answer 10:

如果你不想手动编写所有的代码,以保持可视化界面,跟踪和持久性,这是一个明智的选择投票给WF。



Answer 11:

我一直在使用Windows工作流几个月来开发定制的活动,并重新托管设计师,非开发人员可以用它来构建工作流。 WF是很强大,但它只能作为由开发商建造的自定义活动为好。 当它发生的时候,开发者必须过目由非开发人员测试和调试,但是从他们可以创建草案workflows-这是梦幻般的点创建的工作流。

此外,在你有很长的流程WF是当你需要动态更新进程使用了​​良好的技术堆栈的情况下 - 而无需重新安装/下载或做任何事情,只是新的XAML文件添加到一个目录,你的架构应该是设置了版本放弃旧的,并使用新的。



文章来源: When to use Windows Workflow Foundation? [closed]