自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為什么要有ASP.NET工作流

開(kāi)發(fā) 后端
人們經(jīng)常要求軟件開(kāi)發(fā)人員構(gòu)建可支持長(zhǎng)時(shí)間運(yùn)行操作的 Web 應(yīng)用程序。類(lèi)似于這樣的需求,導(dǎo)致ASP.NET工作流成為十分有用的技術(shù)。本文介紹為什么會(huì)有對(duì)于工作流解決方案的需求。

介紹ASP.NET工作流的由來(lái)

人們經(jīng)常要求軟件開(kāi)發(fā)人員構(gòu)建可支持長(zhǎng)時(shí)間運(yùn)行操作的 Web 應(yīng)用程序。在線商店的結(jié)賬過(guò)程就是一個(gè)例子,它只需數(shù)分鐘即可完成。盡管依照某些標(biāo)準(zhǔn)這就是一個(gè)長(zhǎng)時(shí)間運(yùn)行操作,但我將在本文中探討一個(gè)尺度完全不同的長(zhǎng)時(shí)間運(yùn)行操作:需持續(xù)數(shù)天、數(shù)周,甚至數(shù)月才可完成的操作。此類(lèi)操作的一個(gè)示例是職位的申請(qǐng)過(guò)程,它涉及多人之間的交互以及眾多實(shí)際文檔的交換。

首先,我們從 ASP.NET 角度來(lái)考慮一個(gè)較為良性的問(wèn)題:您需要為在線商店的結(jié)賬操作構(gòu)建一個(gè)解決方案。由于其持續(xù)時(shí)間的特殊性,我們需對(duì)此解決方案特別考慮一些事項(xiàng)。例如,您可能會(huì)選擇在某個(gè) ASP.NET 會(huì)話中存儲(chǔ)購(gòu)物車(chē)數(shù)據(jù)。您甚至可以選擇將該會(huì)話狀態(tài)移動(dòng)到進(jìn)程外狀態(tài)服務(wù)器或數(shù)據(jù)庫(kù),以更新站點(diǎn)和負(fù)載平衡。即便如此,您會(huì)發(fā)現(xiàn)輕松解決此問(wèn)題所需的全部工具均由 ASP.NET 自身提供。

但如果操作的持續(xù)時(shí)間變得比典型的 ASP.NET 會(huì)話持續(xù)時(shí)間(20 分鐘)更長(zhǎng),或需要多名參與者(就象剛才的聘用示例)時(shí),ASP.NET 不能提供充分的支持。您也許還記得 ASP.NET 工作進(jìn)程會(huì)在空閑時(shí)自動(dòng)關(guān)閉并定期自身回收。這會(huì)導(dǎo)致長(zhǎng)時(shí)間運(yùn)行操作出現(xiàn)嚴(yán)重錯(cuò)誤,因?yàn)檫@些進(jìn)程中保存的狀態(tài)將會(huì)丟失。

設(shè)想一下,您將需要在單個(gè)進(jìn)程內(nèi)部托管這些運(yùn)行時(shí)間超長(zhǎng)的操作。顯然,出于上述原因,ASP.NET 工作進(jìn)程并不適用于它們。因此需要?jiǎng)?chuàng)建一個(gè)窗口服務(wù),它的職責(zé)就是執(zhí)行這些操作。如果從不重新啟動(dòng)此服務(wù),將會(huì)比直接使用 ASP.NET 更有可能得到解決方案,因?yàn)閺睦碚撋现v,擁有無(wú)法自動(dòng)重新啟動(dòng)的服務(wù)進(jìn)程可確保不會(huì)丟失長(zhǎng)時(shí)間運(yùn)行操作的狀態(tài)。

但這樣真的可以解決該問(wèn)題嗎?很可能不會(huì)。如果服務(wù)器需要負(fù)載平衡該怎么辦?如果思路僅局限于單個(gè)進(jìn)程將會(huì)使情況變得非常困難。更糟糕的是,如果需要重新啟動(dòng)服務(wù)器或進(jìn)程崩潰該怎么辦? 如果這樣將會(huì)導(dǎo)致丟失已運(yùn)行的所有操作。

事實(shí)上,當(dāng)操作需要數(shù)天或數(shù)周才可完成時(shí),您就需要一個(gè)獨(dú)立于執(zhí)行該操作進(jìn)程的生命周期的解決方案。通常這是一個(gè)不爭(zhēng)的事實(shí),對(duì)于 ASP.NET Web 應(yīng)用程序更是尤為重要。

管理ASP.NET工作流

Windows Workflow Foundation (WF) 可能并不是構(gòu)建 Web 應(yīng)用程序時(shí)想到的技術(shù)。但 WF 提供的多個(gè)主要功能讓工作流解決方案有了不同尋常的意義。有了 WF,您就能通過(guò)從進(jìn)程空間中徹底卸載空閑工作流,并在工作流繁忙時(shí)自動(dòng)將它們重新加載到活動(dòng)進(jìn)程中,讓長(zhǎng)時(shí)間運(yùn)行的操作具備進(jìn)程獨(dú)立性(請(qǐng)參見(jiàn)圖 1)。利用 WF 可以克服 ASP.NET 工作進(jìn)程不確定生命周期的影響,并為 Web 應(yīng)用程序內(nèi)的長(zhǎng)時(shí)間運(yùn)行操作做好準(zhǔn)備。

 跨進(jìn)程實(shí)例的工作流保留操作

圖 1 跨進(jìn)程實(shí)例的工作流保留操作

WF 組合了兩個(gè)主要特性來(lái)實(shí)現(xiàn)此功能。首先,異步活動(dòng)在等待外部事件時(shí)向工作流運(yùn)行時(shí)發(fā)出工作流空閑的信號(hào)。接下來(lái),持久性服務(wù)從該進(jìn)程卸載空閑的工作流,然后將其保存到某個(gè)持久存儲(chǔ)位置(如數(shù)據(jù)庫(kù))并在做好再次運(yùn)行準(zhǔn)備時(shí)重新加載工作流。

這樣的進(jìn)程獨(dú)立性還有其他的優(yōu)點(diǎn)。它提供了一種簡(jiǎn)單的負(fù)載平衡方式及持久性——在遇到進(jìn)程或服務(wù)器故障時(shí)能實(shí)現(xiàn)容錯(cuò)。

以上就是對(duì)ASP.NET工作流的需求及其優(yōu)點(diǎn)的簡(jiǎn)單介紹。

【編輯推薦】

  1. 調(diào)用ASP.NET工作流:承載及限制
  2. ASP.NET工作流的創(chuàng)建與啟動(dòng)
  3. ASP.NET數(shù)據(jù)庫(kù)連接類(lèi)ClassConn以及oledb數(shù)據(jù)庫(kù)連接方法
  4. ASP.NET數(shù)據(jù)庫(kù)驅(qū)動(dòng)類(lèi)的實(shí)現(xiàn):DBHelper
  5. 用C#寫(xiě)的ASP.NET數(shù)據(jù)庫(kù)操作類(lèi)
責(zé)任編輯:yangsai 來(lái)源: MSDN
相關(guān)推薦

2009-07-31 17:42:33

ASP.NET工作流

2009-07-31 17:34:40

ASP.NET工作流

2009-07-31 18:00:35

ASP.NET工作流學(xué)

2021-10-14 11:34:05

技術(shù)工作流引擎

2009-08-03 14:22:33

什么是ASP.NET

2021-07-26 18:38:48

Bpmn流程

2024-07-31 08:01:48

2009-07-28 17:17:19

ASP.NET概述

2012-07-23 10:36:46

工作流

2009-08-03 12:40:46

ASP.NET編程模型

2009-11-09 08:53:21

ASP.NET緩存

2009-07-22 17:45:35

ASP.NET教程

2009-07-23 11:33:18

2009-07-23 13:47:28

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門(mén)教程

2022-12-22 07:44:04

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設(shè)計(jì)

2013-09-29 17:13:59

PowerShell工作流

2009-07-29 17:11:25

ASP.NET ISA

2009-07-23 12:22:41

ASP.NET MVC
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)