WF 学习笔记 (1) - 浅谈 WF 和 MVC 架构
2011-09-06 01:24
183 查看
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 的威力更加强大。
-------------------------------------------------
本帖的示例下载点:
http://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
-------------------------------------------------
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 的威力更加强大。
-------------------------------------------------
本帖的示例下载点:
http://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
-------------------------------------------------
相关文章推荐
- WF 学习笔记 (1) - 浅谈 WF 和 MVC 架构
- ExtJS 4.2.1学习笔记(一)——MVC架构与布局
- Android 学习笔记 —— Android 四大组件 与 MVC 架构模式
- 【Spring学习笔记-MVC-1.0】Spring MVC架构介绍
- 《Pro ASP.NET MVC 3 Framework》学习笔记之二十一【Area及URL架构的最佳实践】
- [原创]java WEB学习笔记20:MVC案例完整实践(part 1)---MVC架构分析
- 【知了堂学习笔记】Model1、Model2和MVC架构模式
- Yupoo! 的网站技术架构_PHP学习笔记
- Android GPS学习笔记(1)—系统架构
- 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C
- 学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC路由(四)
- Hawq学习笔记 --- MPP(大规模并行处理)架构(Massively Parallel Processing)
- hadoop学习笔记二_MapReduce应用场景、原理、基本架构
- 用微软.NET架构企业解决方案 学习笔记(四)业务层
- ASP.NET MVC Web API 学习笔记---第一个Web API程序【转】
- MVC学习十一:浅谈在ASP.NET MVC3中使用IClientValidatable接口实现客户端和服务器端同时验证
- ASP.NET MVC 学习笔记(4) 分页处理
- ASP.Net MVC开发基础学习笔记:二、HtmlHelper与扩展方法
- 学习笔记:架构 移动应用架构 view层的组织和调用方案(二)
- Android开发学习笔记:浅谈显示Intent和隐式Intent