长期以来,我一直在努力寻找一个引人注目的工作流用例(即:WF),而不是常规的命令式编程。每次我都得出结论,我应该把 WF 排除在外,或者推迟到以后再加入。但我一直有一种烦人的感觉,就是缺少了一些东西。
有谁知道任何真正为工作流方式提供有力案例的书?这本书必须 (i) 很好地教授 WF,并且 (ii) 使用适当的用例展示 WF 使实现比我们只进行常规直接编码更容易实现。
我会很感激的。
长期以来,我一直在努力寻找一个引人注目的工作流用例(即:WF),而不是常规的命令式编程。每次我都得出结论,我应该把 WF 排除在外,或者推迟到以后再加入。但我一直有一种烦人的感觉,就是缺少了一些东西。
有谁知道任何真正为工作流方式提供有力案例的书?这本书必须 (i) 很好地教授 WF,并且 (ii) 使用适当的用例展示 WF 使实现比我们只进行常规直接编码更容易实现。
我会很感激的。
从非专家的角度来看,对我来说,WF 有两件事可以说明——一件是工作流平台独有的,另一件可能更方便。
便利功能是能够创建新的活动组合方式。命令式编程仅提供有限的组合原语:基本上是排序、if-else 和循环。WF 允许您构建自己的组合操作符,例如交错执行、并行执行、先过后继等。当然它还内置了复杂的状态机组合机制。
我说这是一个方便的特性,因为您可以使用命令式语言(如 C#)构建所有这些运算符:事实上,这就是构建WF 运算符的方式。但是 WF 使它易于使用和阅读自定义组合,而在 C# 中,您会很快陷入 lambda 表达式的冰雹中。因此,如果您有复杂的编排要求——也就是说,如果你的活动组合在一起的方式比序列、if-else 和循环更复杂——那么 WF 可能会使你的程序更易于表达和理解。
独特之处在于耐用。这就是舒克拉和施密特的书的起点,也是它不断回归的地方。如果幸运的话,用 C# 或 VB 编写的命令式程序可以运行数小时、数天、数周,甚至数月……但最终 IIS 会循环应用程序池,或者管理员会想要安装最新的安全更新,否则有人会被电源线绊倒。那么你的程序是如何记住的,“好的,我收到了 Unimaginative Company Names R Us 的采购订单,我正在等待 Bank of Breadheads Inc. 的信用批准,当我得到它时,我可以发送确认电子邮件”?
在传统的命令式程序中,当进程终止时,执行状态也随之终止。您可以启动一个新进程,但它将在程序开始时启动。当然,您可以创建一个数据库并使用它来存储诸如“获得采购订单”和“获得信用批准”之类的标志。但是现在您必须编写特定于应用程序的代码来保存和查询状态,并根据该状态跳回到程序中的正确位置。而且你必须为每一个长时间运行的应用程序设计一个新的数据库和新的保存/恢复/跳转逻辑。
持久的工作流程就是解决这个问题。如果您将程序编写为活动的工作流,那么 WF 将负责保持其状态,包括它在其执行流程中的位置。运行程序的机器可能会着火烧毁你的数据中心,但是当银行的响应进来时,WF会唤醒你另一个数据中心的程序,它会在正确的地方以正确的方式开始运行数据。
这对我来说是WF的“有力案例”。在许多情况下,您不需要它:应用程序的生命周期非常短暂,因此故障不是一个重要问题,从头开始重新启动是一种可行的恢复策略。但是对于长期存在的应用程序,例如您可能正在编排可能需要数小时才能响应的外部系统,或者涉及可能需要数天才能响应的人员的业务流程,持久性可能是 WF 的杀手级功能。
免责声明:我不是 WF 程序员,也从未构建过真实世界的 WF 系统。我来自 BizTalk 背景,以及我读过的关于 WF 的内容,所以这个评估有点理论化。希望对大家有帮助!
不确定您的问题是否有很好的答案。问题不在于问题无效或类似问题,因为您要求的是两种截然不同的东西。
首先,您要求使用工作流的令人信服的理由。这是一个非常主观的问题,根本与技术无关。您可以在网络上找到指向各种成功和不成功的工作流实施的白皮书。这与技术无关,使用某些产品 X 完成的解决方案也可以使用产品 Y 完成。Shukla 和 Schmidt 的章节肯定解释了基础知识,但我不确定这是一本向您展示哪里和哪里的好书如何应用工作流。
其次,您正在寻找一本书来教您 Windows Workflow Foundation。第一个问题是 WF3 或 WF4,因为它们是非常不同的野兽。我将假设 WF4 因为它将在 .NET 4 发布时取代 WF3(现在很快)并且从 WF3 开始在大多数情况下没有多大意义。但由于 WF3 从来都不是很受欢迎,而且图书市场对大多数作家来说不是很有利可图,所以还没有 WF4 书籍。我相信 Bruce Bukovics 正在编写他的Pro WF 的新版本:.NET 3.5 中的 Windows 工作流这本书,我发现这是一本更有用的 WF3 书籍。到目前为止,什么都没有,而且你被 msdn 网站和博客上的极其有限的文档困住了,就像我的here一样。当然也有这样的课程来自 DevelopMentor(注:无耻的插件,因为我是课程的主要作者)
我确实在此答案中提供了许多原因,这些可能会对您有所帮助。
不完全是您问题的答案,但我希望所有这些对您仍然有用。
这又不是一个直接的答案,但如果搜索其他资源,这可能会有所帮助。在我看来,WF 似乎非常接近于业务流程执行语言 (BPEL)中引入的概念。这个标准。比 WF 存在的时间要长得多,BPEL 的任何使用都应该让您了解使用 WF 的目的。
我没有用过 WF,但是当我玩弄 BPEL 时,我发现它很难使用。这主要是由于工具支持(我发现缺乏可视化建模的eclipse插件)。当您将此与事实相结合时,与“正常的编程语言语法”相比,XML 中的代码难以阅读,那么 BPEL 就不是一个可行的解决方案。如果WF有一个很好的可视化工具,那么这个问题至少已经解决了。
很好的理由是: 业务流程的可视化概览。您甚至可以让您的客户——领域专家——与设计师一起编辑工作流程;重新启动应用程序并使其运行而无需重新编译
好书:Bruce Bukowics 和我一直最喜欢的书:PRO C#2010 和 .NET 4 框架有一个很棒的章节
我不知道有专门关于这个主题的书。然而,我相信 WF(或其他工作流产品)的部分吸引力在于,它重新引入了松散耦合、基于消息的范式的可能性,而最初的 OO 人(如 Alan Kay)对此很感兴趣。
传递“消息”的概念在 WF 中并不明显。然而,对象作为离散机器的概念是。
有关 OO 状态的精彩(但有些疯狂)的书,请参阅David West 的 Object Thinking。Alan Kay 对 OO 对他的意义的讨论 请参见此处。