利用WWF进行ASP.NET程序开发

asp.net|程序

简介

  通过使用WWF,你可以创建基于处理器流的工作流并且把它们部署在任何类型的.NET应用程序中。此外,本文还讨论了ASP.NET开发者面对的一些特有的问题-这些问题可能通过使用工作流得到解决,如维持状态和页面导航等。

  在2005年9月,微软在它的一年两次的专业开发者会议上公开了Windows Workflow Foundation(WWF,Windows工作流基础)。作为WinFX API的支柱之一,WWF提供给开发者一个普通框架-在其上开发过程驱动的和以工作流为中心的应用程序。

  当前,有些组织力图把整个商业过程自动化;他们的标准答案就是集合一队开发者来开发相应的代码。尽管这种方式对于这些组织带来良好的作用,然而也有一些固有的问题。为了深入理解这一问题,你需要理解一个工作流的基本特征。

  一个工作流本质是一种方法-用来归档包含在完成一个单元的工作中的活动。典型地,在处理过程中,工作"流"流过一项或更多活动。这些活动可以通过机器或人工来实现,并且有可能象在一个互联网应用程序定义页面顺序一样得简单,也有可能象管理必须为任何数目的人都要看到、更改并同意的文件或产品一样得复杂。

  因为如此多的工作流必须考虑到人工参预,所以可能需要花费很长工期才能完成,时间可能为几小时到数月或更长。例如,参预在该过程中的人可能无法找到,不在本地或忙于另外的任务;因此,工作流必须在所有非活动期间能够把自身持续性存储。而且,通过编码独立实现的过程可能对非技术人员难于理解而对开发者却难于更改。这一点和其它一些因素正是例如WindowsWF等通用工作流框架的目标-其目的就在于使创建、改变和管理工作流更容易-这是通过向它们提供一个可视化接口或通过定义一组普通API来实现的。

  你可以把WWF工作流放置在任何类型的.NET应用程序中-包括Windows表单程序,控制台应用程序,Windows服务和ASP.NET Web应用程序。每种类型都需要专门的考虑。尽管一些现有示例已经足够说明如何把工作流宿主到Windows表单程序和控制台应用程序中,但是本文将集中于讨论ASP.NET开发者的问题-他们希望把工作流集成到自己的应用程序中。

   作者注:本文所提供的代码是以Windows WF Beta 1和Visual Studio 2005 Beta 2 为工具创建的。你可以在www.windowsworkflow.net找到有关安装Windows WF的信息。尽管本文讨论了Windows WF的一些基础问题,但是还有其它一些这方面的可用资源。我假定读者至少了解一点Windows WF。本文的目的是深度分析Windows WF和ASP.NET,而不是从一个高层次上讨论Windows WF。

   一、 Windows WF和MVC模式

  在开发一个ASP.NET应用程序时,你可能使用WWF的一个普通的方法是实现一种模型-视图-控制器(MVC)方法。实质上,MVC的目标是把描述层、应用程序逻辑和应用程序流逻辑分离开来。

  搞清楚这个将十分有益于一个ASP.NET应用程序的开发,请考虑一个帮助桌面票工作流的场所。假定有一个商业用户通过填写一个ASP.NET Web表单并点击一个提交按钮来启动该工作流。接下来,服务器就会通知一个使用Windows表单应用程序和帮助桌面的雇员--"有新票可用了"。该帮助桌面雇员然后将在这一问题上工作,并在最后关闭该票。如果使用Windows WF来开发这个工作流情形,那么所有的处理逻辑和流程可以被包含在工作流本身,而该ASP.NET应用程序将完全不需要了解这一逻辑。

  这种场所提供了一些稳固的证据-把描述与逻辑相分离是一件好事情。因为这个处理帮助桌面请求的过程是非常普通的,如果使用C#或VB.NET代码在若干不同的.NET应用程序中实现这一逻辑,那么你将会冒着重复编码的危险甚至更坏的情形--用完全不同的代码导致同样的商业处理过程的不同实现。但是如果你使用WWF来实现这一过程,那么需要这一过程的应用程序开发者将仅需在一处修改这些步骤-工作流本身-而不必担心这样会改变应用程序逻辑。代码复制和在哪里实现该过程可以通过Windows WF的使用来加以缓和。

  当使用Windows WF在ASP.NET中实现MVC架构时,开发者应该尝试构建独立于应用程序的工作流-而该工作流仍然宿主于该应用程序中。这将有助于保持逻辑独立于描述并且保持在该Web应用程序中的工作步骤顺序和页面流之间的高度独立性。

  一个WWF开发新手可能试图用一固定数目的活动以某种顺序去开发一个工作流,然后开发一组ASP.NET Web表单--这些表单以与之相同的顺序从一个表单流向另一个表单。很遗憾,尽管这看上去挺符合逻辑,但是实际上这是非常不具有生产效率的,因为你将会再次实现这个工作流逻辑。Web页面X不需要知道是否它需要转到页面Y或页面Z来正确地实现该工作流步骤。代之的是,该工作流(模型)应该告诉ASP.NET(控制器)下一步该干什么;然后ASP.NET应该决定要显示哪个页面。这样,每个页面几乎不需要了解整个过程;它仅需要知道怎样完成一个不同的活动并且让该工作流来关心页面是如何从一处流向另一处的。这种分离在开发者处理页面流时带来了一种极大的灵活性。例如,如果你决定改变该页面显示顺序,那么你可以从工作流中容易地实现这一点,而不需要改变该ASP.NET应用程序中的一行代码。

   二、 一个简单的工作流MVC实例

  为了说明这一思想,我将向你展示一个简单ASP.NET应用程序和工作流。这个过度简化的工作流描述了一个进度-收集一些来自于一外部应用程序的私人信息,然后显示它。步骤如下:

  1. 调用一个方法--这意味着请求一个人的名字;该工作流使用了InvokeMethod活动(见图1)。

  2. 等待直到一个事件被激发--这意味着收到一个名字;在这一步中,该工作流使用了EventSink活动。

  3. 使用一类似调用,从宿主获得一个电子邮件地址。

  4. 等待一个事件意味着收到一个地址。

  5. 在收到名字和电子邮件以后,该工作流启动一个InvokeMethod活动来发送个人资料到调用者应用程序。在一种真实世界情形,这最后一步并不很重要。更可能的是,你将调用一个Web服务来发送数据到另外的系统,或把它放进一数据库。


图1.示例工作流:这个工作流描述了隐含在示例ASP.NET应用程序中的过程

[1] [2] 下一页  

时间: 2024-12-29 19:54:37

利用WWF进行ASP.NET程序开发的相关文章

《圣殿祭司的ASP.NET4.0专家技术手册》----1-15 将ASP.NET程序开发服务器Port固定的技巧

1-15 将ASP.NET程序开发服务器Port固定的技巧 圣殿祭司的ASP.NET4.0专家技术手册 如果项目以"文件系统"建立,则网页执行时会使用Visual Studio内建的"ASP.NET程序开发服务器",这样便解决了操作系统无IIS服务器的困扰,但有的人问:"能否将Port固定下来?"因为变动的Port,有时要以完整路径引用参考目录下的照片或CSS设置就会产生困扰(如/Images/Pic01.jpg或/Css/WebSite.css

ASP 应用程序开发原则指南

简介 "Active Server Page (ASP)"应用程序的成功常常取决于对体系结构和设计这两方面的取舍.考虑到 ASP 技术的范围之广和当前应用程序固有的复杂性,这种取舍是非常困难的.本文中,我将为您提供一些特定的指导方针,以助您成功开发基于 ASP 的应用程序. 我已将指导方针整理成一组开发原则.在评估解决方案和技术时,可以应用以下原则帮助您做出决策.以下原则是我长期以来从成功的开发模式所得的经验积累. 原则 1:采用标准方法 建立命名约定并使目录结构标准化,可以帮助您大大

ASP.NET程序开发范例宝典

在整理资料时发现一些非常有用的资料源码尤其是初学者,大部分是平时用到的知识点,可以参考其实现方法,分享给大家学习,但请不要用于商业用途. 如果对你有用请多多推荐给其他人分享. 点击对应章节标题下载本章节下所有源代码.   目录: 第2章 HTML开发与实践 15 2.1 框架的使用 16 实例009 使用FrameSet框架布局聊天室 16 实例010 使用IFrame框架布局企业管理系统 17 2.2 滚屏的实现 18 实例011 滚动显示博客公告 18 实例012 滚屏效果并实现超级链接 2

ASP应用程序的安全

千万不要轻视正确配置安全设置的重要性.如果不正确配置安全设置,不但会使您的 ASP 应用程序遭受不必要的篡改,而且会妨碍正当用户访问您的 .asp 文件. Web 服务器提供了各种方法来保护您的 ASP 应用程序免受未授权的访问和篡改.在您读完本主题下的安全信息之后,请花一定的时间仔细检查一下您的 Win dows NT 和 Web 服务器安全性文档. NTFS 权限 您可以通过为单独的文件和目录应用 NTFS 访问权限来保护 ASP 应用程序文件.NTFS 权限是 Web 服务器安全性的基础,

维护ASP应用程序的安全

安全|程序 千万不要轻视正确配置安全设置的重要性.如果不正确配置安全设置,不但会使您的 ASP 应用程序遭受不必要的篡改,而且会妨碍正当用户访问您的 .asp 文件. Web 服务器提供了各种方法来保护您的 ASP 应用程序免受未授权的访问和篡改.在您读完本主题下的安全信息之后,请花一定的时间仔细检查一下您的 Windows NT 和 Web 服务器安全性文档.详细信息,请参阅 安全性. NTFS 权限 您可以通过为单独的文件和目录应用 NTFS 访问权限来保护 ASP 应用程序文件.NTFS

维护 ASP 应用程序的安全

安全|程序 千万不要轻视正确配置安全设置的重要性.如果不正确配置安全设置,不但会使您的 ASP 应用程序遭受不必要的篡改,而且会妨碍正当用户访问您的 .asp 文件. Web 服务器提供了各种方法来保护您的 ASP 应用程序免受未授权的访问和篡改.在您读完本主题下的安全信息之后,请花一定的时间仔细检查一下您的 Windows NT 和 Web 服务器安全性文档. NTFS 权限 您可以通过为单独的文件和目录应用 NTFS 访问权限来保护 ASP 应用程序文件.NTFS 权限是 Web 服务器安全

教你用Type Hint提高Python程序开发效率_python

简介 Type Hint(或者叫做PEP-484)提供了一种针对Python程序的类型标注标准. 为什么使用Type Hint?对于动态语言而言,常常出现的情况是当你写了一段代码后,隔段时间你可能忘记这个方法的原型是什么样子的了,你也不清楚具体应该传入什么类型的参数,这样往往需要你去阅读代码才能定义每个类型具体是什么.或者当你使用一个文档并不是特别完全的第三方库,你不知道这个库应该如何使用,这都会很痛苦. 现在,借助Type Hint,你可以实现:      1.实现类型检查,防止运行时出现的类

杨文剑:论四次程序开发的失败经验

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 包工头,在以前是一个贬义词.白领,在以前是一个褒义词.现在反过来了,骂一个人你可以叫他是白领,夸一个人你可以叫他包工头.我不是一个合格的站长,我不是一个合格的包工头.因为工作上的需要,经常要找人帮助写程序. 第一次找人写一个招商加盟留言程序,程序写了一半.我主动跟人家说,老兄,不用麻烦你写了,但钱我还是全款支付给你,因为有朋友免费提供我一个很

结合JavaScript与ASP.NET Web窗体进行程序开发

ASP.NET为Web程序开发提供了新的范例.其中包括一系列基于服务器的控件,这些控件类似于HTML窗体中诸如文本框.按钮等元素.使用这些控件的问题是必须调用服务器.JavaScript为很多任务提供多种选择的机会,而这些过程不需要调用服务器.让我们来看结合JavaScript与ASP.NET所带来的强大功能. 性能是必需的调用服务器要求带宽和服务器处理时间,然而对一个可以享受高速流通的局域网程序将不会有任何问题,但是在广域网中就是不同的情况.一个因特网用户连接速度的不同主要取决于用户的拨号调制