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