Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Workflow WF的有力证据_Workflow_Workflow Foundation_Workflow Foundation 4 - Fatal编程技术网

Workflow WF的有力证据

Workflow WF的有力证据,workflow,workflow-foundation,workflow-foundation-4,Workflow,Workflow Foundation,Workflow Foundation 4,长期以来,我一直在努力寻找一个令人信服的工作流(即:WF)用例,而不是常规的命令式编程。每次我都会得出这样的结论:我应该把WF排除在外,或者推迟到以后再讨论它。但我一直有一种唠叨的感觉,觉得我少了一些东西 有谁知道有哪本书真正为工作流方式提供了有力的支持?这本书必须(i)很好地教授WF,以及(ii)使用适当的用例说明WF使实现比我们只进行常规的直接编码更容易 我将不胜感激。不确定您的问题是否有好的答案。问题不在于这个问题是无效的或类似的,因为你要求的是两个完全不同的东西 首先,您需要有令人信服的

长期以来,我一直在努力寻找一个令人信服的工作流(即:WF)用例,而不是常规的命令式编程。每次我都会得出这样的结论:我应该把WF排除在外,或者推迟到以后再讨论它。但我一直有一种唠叨的感觉,觉得我少了一些东西

有谁知道有哪本书真正为工作流方式提供了有力的支持?这本书必须(i)很好地教授WF,以及(ii)使用适当的用例说明WF使实现比我们只进行常规的直接编码更容易


我将不胜感激。

不确定您的问题是否有好的答案。问题不在于这个问题是无效的或类似的,因为你要求的是两个完全不同的东西

首先,您需要有令人信服的理由来使用工作流。这是一个非常主观的问题,与技术无关。您可以在web上找到各种各样的白皮书,指出各种成功的和不成功的工作流实现。这与技术无关,使用某些产品X完成的解决方案也可以使用产品Y完成。Shukla和Schmidt的章节当然解释了基本原理,但我不确定这是一本向您展示在何处以及如何应用工作流的好书

其次,你正在寻找一本书来教你Windows工作流程基金会。第一个问题是WF3或WF4,因为它们是非常不同的动物。我将假设WF4,因为当.NET4发布时(现在很快就会出现),它将取代WF3,而在大多数情况下,从WF3开始并没有多大意义。但是由于WF3从来都不是很受欢迎,而且图书市场对大多数作家来说也不是很有利可图,所以目前还没有WF4图书问世。我相信Bruce Bukovics正在编写他的书的新版本,我发现了一本更有用的WF3书。到目前为止,还没有什么,你只能在msdn网站和我的博客上使用非常有限的文档。当然也有类似于DevelopMentor的课程(注:无耻的插件,因为我是课程的主要作者)

我在这个答案中提供了一些原因,这些可能会对你有所帮助


这不是对你问题的完全回答,但我希望所有这些对你仍然有用。

我不知道有哪本书专门介绍这个主题。然而,我相信WF(或其他工作流产品)的部分吸引力在于它重新引入了松散耦合、基于消息的范例的可能性,而最初的OO人员(比如Alan Kay)对此很感兴趣

传递“消息”的概念在WF中并不明显。然而,对象作为离散机器的概念是不正确的


有关OO状态的一本很棒(但有点疯狂)的书,请参阅。看看Alan Kay关于OO对他意味着什么的讨论

这同样不是一个直接的答案,但如果搜索其他资源,这可能会有所帮助。在我看来,WF非常接近于中介绍的概念。这个标准比WF存在的时间要长得多,任何BPEL的使用都应该让您了解WF的用途


我没有使用WF,但当我玩弄BPEL时,我发现它很难使用。这主要是由于工具支持(我发现缺少用于可视化建模的eclipse插件)。当您将这一点与“普通编程语言语法”相比难以读取XML代码这一事实结合起来时,BPEL就不是一个可行的解决方案。如果WF有一个很好的可视化工具,那么这个问题至少已经解决了。

从非专家的角度来看,有两件事对WF来说是有道理的——一件是工作流平台独有的,另一件可能更方便

便利功能是创建新的活动组合方式的能力。命令式编程只提供有限的组合原语:基本上是顺序、if-else和循环。WF允许您构建自己的组合运算符,例如交错执行、并行执行、首次过关等。当然,它内置了复杂的状态机组合机制

我说这是一个方便的特性,因为您可以用命令式语言(如C#)构建所有这些运算符:事实上,这就是构建WF运算符的方式。但是WF使它易于使用和阅读定制的构图,而在C#中,你会很快陷入大量的lambda表达式中。因此,如果您有复杂的编排需求——也就是说,如果您的活动组合方式比序列、if-else和循环更复杂——那么WF可能会使您的程序更易于表达和理解

其独特之处在于耐用性。这就是舒克拉和施密特的书的出发点,也是它不断回归的地方。如果幸运的话,用C#或VB编写的命令式程序可以运行数小时、数天、数周,甚至数月。。。但是最终IIS会循环应用程序池,或者管理员会想安装最新的安全更新,或者有人会被电源线绊倒。那么你的程序是如何记住“好的,我收到了来自缺乏想象力的公司名称R Us的采购订单,我正在等待面包头银行的信贷批准,当我得到批准后,我可以发送确认电子邮件”

在传统的命令式程序中,当进程终止时,执行状态也随之终止。您可以启动一个新流程,但它将在程序开始时启动。当然,您可以创建一个数据库并使用它来存储标志,如“获得采购订单”和“获得信贷批准”。但现在您必须编写特定于应用程序的代码来保存和查询状态,并根据该状态跳回程序中的正确点。您必须为每个长期运行的应用程序设计新的数据库和新的保存/恢复/跳转逻辑