第一次親密接觸.NET 4.0中的工作流
原創(chuàng)【51CTO獨(dú)家報(bào)道】Windows Workflow Foundation(WF)提供了一個編程模型,進(jìn)程內(nèi)工作流引擎,可以實(shí)現(xiàn)作為.NET應(yīng)用程序內(nèi)部工作流程的長時間運(yùn)行的進(jìn)程。
在.NET Framework 4中,Windows Workflow Foundation相對于之前的3.0和3.5版本,引入了大量的變化,實(shí)際上,開發(fā)團(tuán)隊(duì)重新審查了編程模型的核心,運(yùn)行時和工具都進(jìn)行了架構(gòu)上的改動,以提高性能和生產(chǎn)力,開發(fā)團(tuán)隊(duì)解決了舊版本用戶反饋的大量問題。
#T#
什么時候使用工作流
下面這些應(yīng)用程序類型可能需要使用工作流:
任何實(shí)現(xiàn)了一個長期運(yùn)行的進(jìn)程的應(yīng)用程序天生就需要工作流;
顯示頁面給用戶的ASP.NET應(yīng)用程序可能需要一個工作流控制頁面的顯示順序;
在面向服務(wù)環(huán)境中的綜合應(yīng)用程序可能需要使用工作流實(shí)現(xiàn)其核心行為;
解決特定問題的應(yīng)用程序,如客戶關(guān)系管理(CRM),或一個特定的垂直市場,如金融服務(wù),這些應(yīng)用程序可能需要使用工作流。
對于ISV(獨(dú)立軟件開發(fā)商)而言,工作流可以為用戶提供自定義應(yīng)用的能力,而無需對程序核心功能大動干戈,你可以授權(quán)你的用戶做以下事情:
基于他們自己的業(yè)務(wù)規(guī)則做出決定,調(diào)整工作流;
與工作流外的其它軟件和系統(tǒng)通信的方法;
與人交互的方法;
維護(hù)整個工作流生命周期內(nèi)的狀態(tài)。
.NET 4工作流中的新特性
在.NET Framework 4中,對Windows Communication Foundation(WCF)和Windows Workflow Foundation(WF)框架做了大量的改進(jìn),.NET開發(fā)人員可以獨(dú)立使用這些技術(shù),也可以聯(lián)合使用。
.NET中的工作流是由活動,運(yùn)行時和工具組成的,下面是對.NET 4中工作流的變化做的總結(jié)。
圖 1 .NET中的工作流組成結(jié)構(gòu)
1、XAML工作流是新的默認(rèn)方法
可以在一個XAML文件中創(chuàng)建一個聲明性工作流,無代碼隱藏,這意味著工作流可以象數(shù)據(jù)一樣存儲,檢索和修改。
2、WF,WCF和WPF之間模型統(tǒng)一
作為一名開發(fā)人員,在程序內(nèi)部我們需要像Windows Presentation Foundation(WPF)編寫用戶界面那樣一樣強(qiáng)大和靈活的的聲明性編程模型,Windows Workflow Foundation(WF)為構(gòu)建應(yīng)用程序和服務(wù)邏輯提供聲明性框架,為開發(fā)人員提供了一個更高層次的語言處理異步的并行任務(wù)和其它復(fù)雜的處理。
3、擴(kuò)展的基礎(chǔ)活動庫
在.NET 4中引入了下面幾個新活動:
流控制:Flowchart,F(xiàn)orEach,DoWhile和Break
WCF:Send,Receive,SendReceive,RecieveParameters,CorrelationScope和InitializeCorrelation
其它:Assign,MethodInvoke,Persist,Interop和PowerShellCommand
更多的活動計(jì)劃發(fā)布到CodePlex上。
4、簡化的WF編程模型
WF 4.0使下面這些事情變得更加容易:
托管工作流和運(yùn)行工作流實(shí)例;
管理工作流書簽;
創(chuàng)建自定義活動;
管理數(shù)據(jù)和參數(shù)。
活動是編程模型的核心基礎(chǔ)類型,它同時代表了工作流和活動。此外,你不再需要創(chuàng)建WorkflowRuntime來調(diào)用工作流,你只需創(chuàng)建一個實(shí)例并執(zhí)行它,簡化單元測試和應(yīng)用場景。
工作流編程模型變成一個完全由聲明性活動組成的東西,沒有代碼隱藏,簡化了工作流設(shè)計(jì)。
5、支持參數(shù),變量和表達(dá)式
跨活動的數(shù)據(jù)流動是一個挑戰(zhàn),它需要依賴屬性和數(shù)據(jù)綁定,對于大多數(shù)開發(fā)人員這種感覺很不自然。
此外,管理活動狀態(tài)也是一大挑戰(zhàn),在XAML中沒有定義本地存儲的方法。
WF 4.0通過增加參數(shù),變量和表達(dá)式簡化了數(shù)據(jù)流。
WCF集成的重大改進(jìn)
新的消息活動,消息關(guān)聯(lián)和改進(jìn)的托管支持,以及完全聲明性服務(wù)定義是改進(jìn)的主要領(lǐng)域。
你可以這樣理解“WCF在外面,WF在內(nèi)部”,WCF暴露外部接口,WF描述內(nèi)部流程和狀態(tài)轉(zhuǎn)換。
發(fā)送和接收一個WCF消息時,通常需要一個關(guān)聯(lián),在.NET 3.5中,關(guān)聯(lián)是基于內(nèi)容上下文消息頭的,在.NET 4.0中對WCF增加了關(guān)聯(lián)支持,通過活動WF使關(guān)聯(lián)更容易使用。
XPath表達(dá)式識別一個關(guān)聯(lián)令牌
CorrelationScope
InitializeCorrelation
運(yùn)行時和設(shè)計(jì)器改進(jìn)
設(shè)計(jì)器現(xiàn)在支持更大型的工作流,性能也更好,設(shè)計(jì)器都是基于Windows Presentation Foundation(WPF)的了,充分利用豐富的用戶體驗(yàn),人們可以建立聲明性UI框架,活動開發(fā)人員使用XAML定義其活動以及在可視化設(shè)計(jì)環(huán)境中與用戶交互的方法。此外,在你自己的應(yīng)用程序中重新托管工作流設(shè)計(jì)器,讓非開發(fā)人員查看和與工作流交互變得更加容易。
通過AppFabric托管和管理
AppFabric之前的代號叫做“Dublin”,它為IIS和WAS提供WF托管和管理擴(kuò)展。
Windows Server AppFabric有三個核心功能:緩存,工作流管理和服務(wù)管理。
對于Web應(yīng)用程序,Windows Server AppFabric提供緩存功能,提高訪問速度,提高應(yīng)用程序的可用性,避免對數(shù)據(jù)源不必要的訪問;
對于綜合應(yīng)用程序,Windows Server AppFabric使利用Windows Workflow Foundation和Windows Communication Foundation構(gòu)建和管理服務(wù)更加容易;
一般來說,客戶的應(yīng)用程序如果由服務(wù),Web,數(shù)據(jù)和傳統(tǒng)組件組成,你將會發(fā)現(xiàn)Windows Server AppFabric會讓開發(fā),部署和管理這些綜合應(yīng)用程序變得更簡單。
欲了解AppFabric有關(guān)的更多信息,請?jiān)L問Windows Server AppFabric(http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx)。
流程圖
流程圖在序列化和狀態(tài)機(jī)模型之間提供了一個折中方案,你將得到:
簡單的一步一步模型,具有判斷和開關(guān);
允許你在工作流中返回之前的活動。
流程圖更接近于概念和思維過程,許多分析師和開發(fā)人員在創(chuàng)建解決方案或設(shè)計(jì)業(yè)務(wù)流程時將會參照流程圖,因此,提供一個活動會更有意義,使得創(chuàng)建概念思維更加容易。流程圖允許諸如返回之前的步驟,基于單一條件拆分邏輯,或一個Switch / Case邏輯等概念。
圖 2 流程圖
創(chuàng)建自定義活動
.NET 4.0為創(chuàng)建自定義活動重構(gòu)了編程模型,可以從WorkflowElement衍生自定義活動,也可以從零開始創(chuàng)建自定義活動。
在本文的第二篇中,我將會介紹一個基本工作流的概念,你可以使用Visual Studio 2010和.NET Framework 4 Training Kit做一下試驗(yàn)。
使用.NET 3.x工作流
你的.NET 3.x工作流將繼續(xù)使用WF 3.0運(yùn)行時工作,在一個.NET 4.0工作流中你可以使用.NET 3.x活動,但必須使用.NET 4.0的Interop活動。如何準(zhǔn)備你的.NET 3.x應(yīng)用程序的指南將會很快發(fā)布。
原文出處:http://blogs.msdn.com/usisvde/archive/2010/01/10/first-look-at-workflow-in-net-4.aspx
原文名:First Look at Workflow in .NET 4