zoukankan      html  css  js  c++  java
  • WF 学习笔记 (1) 浅谈 WF 和 MVC 架构

    WF 的 F (Foundation) 为「基础」的意思,也等于宣告了 Windows Workflow Foundation,是微软未来程序开发中,必然会被持续使用的一种关键技术;也因为它是一种基础,所以能自然地和 WPF、WCF、ASP.NET 整合,例如本帖提供的下载示例,即用 WF 来控管 ASP.NET 页面的流程。

    WF 和 MVC 架构

    这里谈的 MVC (Model-View-Controller),不是单指微软近年在研发的 ASP.NET MVC Framework,而是指 Java / JSP / Struts 已行之有年的一种 Web 开发分层架构和观念。过去 ASP.NET 的开发方式,由于有微软独家的 Code-Behind 技术,将 UI 和控制逻辑做出有效的区隔,因此得到许多程序员的喜爱。但从前两年开始,由于 AJAX 技术的流行,却又把已经泾渭分明的架构弄得凌乱不堪。由于 AJAX 随时可用异步的方式,去自行触发事件,因此把原本统一由 Page_Load 事件,作为入口的规范给弄乱了。

    但在 Web 开发上,若能将 WF 对流程控制的能力加入 ASP.NET 里,肯定能获得等同于 MVC 的效用。请参考本帖下载示例及图 1,当用户单击任一个 Button 时,EventDrivenActivity 就会调用事先指定好的事件处理程序,直接将主导权交给 Workflow Engine,无须再做任何处理。如此一来,就能适度地将程序逻辑和 UI 做出区隔,等同用 WF 达成 MVC 中 Controller 的角色。


    图 1 本帖的示例,用 StateMachine 工作流,在 ASP.NET 上模拟 Workflow 的进度状态


    在 MVC 的设计中,View 之间的页面转换,不是像 Code-Behind 这样把代码写死,而是必须能达到事后易于调整,而 WF 即能扮演此种角色。当某个页面完成处理时,透过事件传入 Workflow 去控制相关的动作、页面的转换;只要调整 WF 的流程,就能随时重新定义页面的转换和显示顺序,赋予开发上更大的弹性,并能在既有的流程中,随时再加入新页面或功能。若程序员能搭配一些 Design Patterns,或搭配 WCF,还能让 WF 的威力更加强大。

    -------------------------------------------------
    本帖的示例下载点:
    https://files.cnblogs.com/WizardWu/090301.zip

    (执行本示例,需要 VS 2008 或 IIS,不需要数据库)
    -------------------------------------------------

    示例中是一个提供会员申请续约的功能,在网页上模拟、显示目前处理状态的工作流程。最后处理完成后,会转到第二页 ProgressCompleted.aspx,并在网页上显示「处理完毕」的信息。使用到的 WF Activity 如下:

    * StateActivity:用来在 StateMachine 流程中,代表状态。
    * EventDrivenActivity:在指定事件发生时,执行其子活动。
    * HandleExternalEventActivity:用来处理本地服务所引发的事件。
    * SetStateActivity:用以指定转变至某个状态。

    有关程序细节,请参考下载示例中,代码里的注释。


    -------------------------------------------------

    参考书籍:

    [1] Windows Workflow Foundation新一代工作流开发实务
    作者:彭靖灏、李智桦
    出版社:电子工业出版社
    出版日期:2008-5-1
    ISBN:9787121063018
    http://www.amazon.cn/dp/bkbk830040
    http://www.golden-book.com/booksinfo/90/909962.html

    [2] Sams Teach Yourself Windows Workflow Foundation in 24 Hours
    http://www.amazon.com/Teach-Yourself-Windows-Workflow-Foundation/dp/0321486994
    http://ebookstore.sony.com/ebook/robert-eisenberg/sams-teach-yourself-windows-workflow-foundation-in-24-hours/_/R-400000000000000114503

    -------------------------------------------------

  • 相关阅读:
    《程序员修炼之道》阅读笔记2
    《程序员修炼之道》阅读笔记1
    Ubuntu16桥接模式上网并设置静态ip
    读《架构漫谈》有感
    质量属性6个常见属性的场景分析
    sql注水
    python版本切换
    使用vue-cli构建 webpack打包工具时,生产环境下,每次build时,删除dist目录,并重新生成,以防dist目录文件越来越多。
    Java栈与堆
    从一个字符串s的第i个字符(不包括此字符)开始删除n个字符
  • 原文地址:https://www.cnblogs.com/WizardWu/p/1400672.html
Copyright © 2011-2022 走看看