http://blogs.msdn.com/b/stbcblog/archive/2008/11/27/why-do-we-need-windows-workflow-foundation.aspx

  • Sign In

服务世界 开发未来

微软亚太研发集团服务器与开发工具事业部(中国)

Translate This Page
翻译此页阿拉伯语爱沙尼亚语保加利亚语波兰语朝鲜语丹麦语德语俄语法语繁体中文芬兰语海地克里奥尔语荷兰语加泰隆语简体中文捷克语拉脱维亚语立陶宛语罗马尼亚挪威语葡萄牙语日语瑞典语斯洛伐克语斯洛文尼亚语泰语土耳其语乌克兰语西班牙语希伯来语希腊语匈牙利语意大利语印度尼西亚语越南语
Microsoft® Translator

Options
  • Blog Home
  • About
  • Email Blog Author
  • Share this
  • RSS for posts
  • Atom
  • RSS for comments

Search
Search this blog Search all blogs

Tags
  • Agile
  • Blog Summary
  • cartoon
  • Cloud
  • CSR
  • Customer Focus
  • Employee Story
  • Innovation
  • Intern Story
  • Product & Technology
  • Team Story
  • Testing
  • Translation

Archive
  • July 2011 (1)
  • June 2011 (2)
  • May 2011 (2)
  • April 2011 (2)
  • March 2011 (1)
  • December 2010 (1)
  • November 2010 (3)
  • October 2010 (3)
  • September 2010 (5)
  • August 2010 (7)
  • July 2010 (9)
  • June 2010 (5)
  • May 2010 (3)
  • April 2010 (5)
  • March 2010 (2)
  • February 2010 (3)
  • January 2010 (5)
  • December 2009 (4)
  • November 2009 (3)
  • October 2009 (3)
  • September 2009 (4)
  • August 2009 (1)
  • July 2009 (2)
  • June 2009 (2)
  • May 2009 (3)
  • April 2009 (3)
  • March 2009 (3)
  • February 2009 (3)
  • January 2009 (3)
  • December 2008 (2)
  • November 2008 (3)
  • October 2008 (7)
  • September 2008 (2)
  • August 2008 (5)
  • July 2008 (3)
  • June 2008 (4)
  • May 2008 (4)
  • April 2008 (6)
  • March 2008 (7)
  • February 2008 (4)

MSDN Blogs > 服务世界 开发未来 > 我们为什么需要Windows Workflow Foundation?

我们为什么需要Windows Workflow Foundation?

STB China Blog 
27 Nov 2008 1:20 AM 
  • 5

今年10月的时候在北京的微软MVP大会上我做了一个关于.NET Framework 4.0中的Workflow的讲座。一场讲座下来给我明显的感觉的大部分的工程师对Windows Workflow Foundation并不是很了解,有一位MVP问我说:“你提到的这些功能,我用写代码的方式都能够实现啊?为什么我需要用工作流?”

我相信,抱有这样的一个想法的人并不是个别。从2006年底发布了.NET 3.0以来,已经两年过去了,在这个两年中WPF吸引了无数人的眼球,WCF也得到了不少用户的肯定,为什么Workflow一直无法得到广泛的推广。个人认为除了我们产品不够完善以外,主要的原因是因为Workflow实际上引入了一种新的编程方式。有别于传统的编程方式,如果你是一个刚刚接触程序设计的初学者,或者你没有经历过大型的工程开发,那么你并不是很容易理解Workflow给我们带来的好处。相反,我相信那些在一堆业务逻辑和执行代码中挣扎的朋友们会很容易体会一个好用的工作流平台能到来的编程效率提升。

说了怎么多的废话,让我们来看看什么是Workflow? 
    简单的说一个完整得工作流平台(Workflow Foundation)由3个部分组成: Activity(活动),Runtime(运行时)和Tooling(开发工具)。所以在我的团队里,我们将称为A.R.T——艺术。 
Activity是工作流的一个工作单位,几个小的Activity能够组合在一起成为一个大的Activity,从而完成更复杂的逻辑。而一个顶层的Activity被称为工作流(Workflow),就像程序中的Main函数。 
WF Runtime是Activity的执行平台,WF Runtime可以被托管在.NET的应用程序中,比如IIS。就像我们在运行.NET程序是,CLR会帮助我们管理内存,我们在WF Runtime中运行Activity时,Runtime也会帮我们关系进行诸如应用程序持久化,日志记录,数据追踪方面的工作。 
大部分人可能会将Tooling理解为Visual Stuido中的工作流设计器。对,它是Tooling的一部分,但是一个好的开发工具还应该提供了调试功能,你将可以在设计器中更加直观的调试你的工作流。并且你还应该能够将Visual Studio 中支持设计器的在别的平台是使用,比如Web Page或者一个WinForm的程序上。 我们将它称为Rehosting。

那我们为什么需要Workflow呢? 
    总来来说Workflow是为了简化协调工作而产生的,让我们来看个例子。 
我们有这样一段代码,用于实现一个银行帐户的验证

首先,我们要求用户输入用户名,输入帐户之后便调用验证函数。这一切看起来都很完美似乎没Workflow什么事情。但是现在我们需要在Web建立这个程序,也许你要有页面用于输入用户名,一个页面用户输入帐号,最后在进行验证。那么你就需要建立3个函数,一个用于读取用户名,一个用于读取帐号,另一个用于验证。因为你将3个函数的逻辑分开了,那么你需要一个变量来保存当前是在输入用户名还是在输入帐号,当然你还需要添加代码来判断是否当前处于正确的状态。不可避免的,你还要添加若干代码来完成不同状态的转换。更糟糕的是你也许希望用户在关闭浏览器后重新登陆不需要再次输入用户名或帐号,那么你又将添加大段的代码来建立你的数据表,并把将这些所有数据储存在数据库。

而如果使用Workflow,你只要将把3个函数封装在不同的Activity中,并把它们依次放到Sequence Activity中。Workflow Runtime会帮你关心当前是什么状态,也会帮你管理各个状态的转换顺序。同时还能帮你完成程序的持久化,你甚至完全不需要关心数据中的表结构是什么样子的,也许你今后添加一个新的函数用于读取密码,你也不需要费尽心思去改变你的数据库结构。如果你已经把三个Activity都设计好了,你的业务设计师(也许他完全不懂得编程),也能通过设计器进行业务流程的改变。

当然,这只是一个最最小的例子。当你的业务流程变得更加的复杂,Workflow带来的便利也将更加的明显。

我们简单总结一下工作流带来的好处

1. 简化协调工作所带来的额外工作量 
   工作流将业务逻辑从具体的实现中剥离出来,使你能够更专注于业务逻辑的建立,而将大量繁琐的工作交给Workflow Runtme来完成。 2. 应用程序的持久化 
  工作流是默认持久化运行的。你不在需要大量的代码来完成以上的工作。

3. 增强程序的透明性 
   因为业务逻辑和具体实现的分离,那怕是一个完全不懂编程的业务分析师也能够看懂你的程序,甚至能够自己改动你的业务逻辑。

汪宏

软件测试开发工程师

Product & Technology

Comments
  • 路过 
    28 Nov 2008 1:21 AM

    文章写得不错,但是例子举的有点...

    没哪个系统在两个页面里输用户名和密码

  • STB China Blog 
    29 Nov 2008 12:23 AM

    这个例子的确并不完美,我是想通过这个例子来表达一种编程的模式。另外我的例子中提到的是用户名和帐号,而不是用户名和密码

  • yi 
    12 Dec 2008 4:23 AM

    这个例子需要有时间的演变,不然体现不出workflow的好处,但是如果大家使用一点点逻辑就大动干戈的使用这个笨重的大家伙好象有点适得其反吧,另外也可以通过其它的设计照样也能满足这些需求

  • DoootnEt 
    21 Dec 2008 5:58 AM

    业务逻辑和具体实现的分离,的确不错,想法很好啊

    “分离”这个词在我们这个行业很流行啊

    一提到“分离”我就非常开心

  • Roland 
    8 Jan 2009 1:27 AM

    这个名称起的不好,从名字上看可能会使人局限于传统的工作流概念,传统的工作流往往指业务流程的执行。但微软的wf是一种新的编程模型,其实应该是一种控制流的编程模型,现在用代码编写的控制流均可转变为图形的开发模式(领域开发模式)。

    在描述这个概念的时候如果没有好的例子是很难解释清楚的,需要长时间、反复的理解,这也许是wf推广中所遇到的困难吧。

    建议阅读《wf本质论》,作者写的不错,翻译的也不错。这本书从原理上深刻剖析了wf的设计思想,但需要读者对.net framework非常熟悉。

Leave a Comment

  • Name
  • Comment
  • Post

  • © 2011 Microsoft Corporation.
  • Terms of Use
  • Trademarks
  • Privacy Statement
  • Report Abuse

我们为什么需要Windows Workflow Foundation?相关推荐

  1. WWF(Windows Workflow Foundation)开发环境的建立。 .NET 技术前瞻,WWF,Windows,Workflow,Foundation...

    1.安装WindowsSDK for Vista,有1.14G之巨,可以从MS的网站上下载,不过需要验证WINDOWS,可以去讯雷区用WindowsSDK为关键字搜索下载. 2.安装Virsul St ...

  2. 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例(转)

    和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例 今天开始,我打算开始学习WWF,从网上搜索到了部分相关资料,也找到了一些文档和实验.但是,资料以 ...

  3. Windows WorkFlow Foundation学习资源

    微软主站 Microsoft Windows Workflow Foundation 入门:开发人员演练 转载于:https://www.cnblogs.com/zwx/archive/2007/01 ...

  4. Microsoft Windows Workflow Foundation 入门:开发人员演练

    有关向 Windows 平台添加工作流支持的初步知识 Microsoft Windows Workflow Foundation (WWF) 是一个可扩展框架,用于在 Windows 平台上开发工作流 ...

  5. Microsoft Windows Workflow Foundation 入门

    Microsoft Windows Workflow Foundation 的包含在 .Net Framework 3.0 中,除此之外i,基于它做开发还要安装 Visual Studio 2005 ...

  6. 你还记得windows workflow foundation吗

    很多年前,windows workflow foundation还叫WWF,而直译过来的名称让很多人以为它就是用来开发工作流或者干脆就是审批流的. 博主当年还是个懵懂的少年,却也知道微软不会大力推一个 ...

  7. Windows Workflow Foundation(WWF)介绍

    Windows Workflow Foundation:支持基于工作流的应用程序 工作流是一个简单思路:按照特定顺序执行的一系列步骤.您甚至可以认为每个应用程序都在执行工作流,因为每个应用程序都执行某 ...

  8. Windows Workflow Foundation之旅(六)——框架组成、工作流创作模式

    Windows Workflow Foundation之旅(六)--框架组成<?xml:namespace prefix = o ns = "urn:schemas-microsoft ...

  9. SharePoint Windows Workflow Foundation

    这段时间关注的焦点已经开始从SPS2003.WSS 2.0转移到下一个版本的SharePoint上,伴随着Office12的将会是Office SharePoint Server 12(OSS12,或 ...

  10. 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例

    今天开始,我打算开始学习WWF,从网上搜索到了部分相关资料,也找到了一些文档和实验.但是,资料以英文的占多数,所以,在学习起来似乎比较吃力,不过相信我能坚持下来,顺便提高点英语阅读能力,不过本人英文水 ...

最新文章

  1. 用ajax进行部门的验证,ajax用$.post方式进行用户名校验
  2. 我们需要怎样的人工智能基础教育
  3. python templates_详解Python的Django框架中的templates设置
  4. Silverlight Dispatcher 类
  5. 2012.5.2 学习记录:RadGrid单元格操作
  6. 【渝粤教育】国家开放大学2018年秋季 1313T学前儿童卫生与保健 参考试题
  7. JIRA 5.0.1 发布
  8. 两个mapreduce 做topn_hadoop分布式计算MapReduce详细总结
  9. 自定义可扩展叠加头部的下拉控件
  10. 集成学习—决策树(CART)
  11. 剪枝乱炖 | 模型加速与压缩
  12. python小代码_python小代码之阶乘求和
  13. 生命游戏(Anylogic实现)
  14. C语言全局变量和局部变量总结
  15. 颤抖吧,理科生们,让你们看看文科帝!
  16. 冠词,a/an/the --- 元音字母
  17. java jlabel 字体大小_java-如何在更改字体大小时更改JLabel的大小...
  18. 通过js唤醒app或者跳转应用市场
  19. Android底层和中间层共同学习系列之android键盘映射
  20. CAXA 电子图板 二次开发 功能定制

热门文章

  1. Android获取当前时间戳(四种方法)
  2. 全国计算机等级考试二级c用新软件,全国计算机等级考试超级模拟软件(二级c)...
  3. 【洛古 P1315】 [NOIP2011 提高组] 观光公交
  4. [DS_PRATICE]列出连通集(c语言)
  5. 【西电A测:设计和制造一款自动货物分拣系统】
  6. http://www.microsoft.com/zh-cn/download/details.aspx?id=28358 silverlight tool 工具下载地址
  7. php redis 高并发队列,laravel+Redis简单实现队列通过压力测试的高并发处理
  8. 75页政务服务中心智能化系统 设计方案智慧政务整体解决方案
  9. Windows无法自动将IP协议堆栈绑定到网络适配器
  10. Visual Studio Code 入门教程