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. win10无法连接wifi_Win10系统笔记本WIFI无法使用处理
  2. Laravel php artisan optimize 源码解读
  3. 【MFC】带下拉菜单的工具栏
  4. Pwn环境配置(三)——ubuntu环境搭建
  5. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波7 - 直方图处理 - 直方图、归一化直方图
  6. JS对文本框输入字符的限制
  7. Pandas GroupBy 分组(分割-应用-组合)
  8. TensorFlow 学习(四)—— computation graph
  9. 【转载】来自架构师的建议
  10. android tv 蓝牙服务_Android TV Remote Service
  11. 为什么有的PLC需要上电停止功能,能防止PLC变砖,可编程控制器 上电停止 串口通信 梯形图
  12. theano java_theano安装问题(示例代码)
  13. Matlab 心形函数
  14. 小程序接口加密时去除昵称数据含有的reshuffle表情(例如emoji)
  15. 聚宽JQData说明书
  16. 许纪霖《中华儒家文化发展脉络》思维导图
  17. Processing互动编程开发实践之动态文字打乱功能(别嫌长,代码多,图片多)
  18. 计算机科学与技术500分左右的大学,2021高考500分左右的理科大学有哪些
  19. Context上下文穿插方式,不是设计模式,但胜于设计模式。
  20. 诋毁PlusFo究竟有何意义?

热门文章

  1. AJAX跨域访问(不同域之间相互访问)
  2. Torrent文件格式
  3. 单片机全局有必要封装_从业将近十年!手把手教你单片机程序框架(连载)
  4. vue 实现鼠标悬浮展示
  5. 【空间单细胞组学】第2期:乳腺癌患者经anti-PD1治疗后,肿瘤内变化的单细胞图谱
  6. Centos7部署Kubernetes集群
  7. 各大厂应用实践 — 大数据
  8. c语言指针翻转星星亮暗,C语言实现动态星空
  9. USACO算法系列十五——shoping
  10. HAT:Overcoming Catastrophic Forgetting with Hard Attention to the Task