WizardWu 編程網

一位台灣的工程師,接觸 .NET 逾十年,近年研究 SQL Server、Performance Tuning、手機應用

博客园 首页 新随笔 联系 订阅 管理

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

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

 

posted on 2009-03-01 02:58  WizardWu  阅读(5285)  评论(9编辑  收藏  举报