大部分的 Windows Workflow Foundation (WF) 範例都使用裝載在控制台應用程式中的工作流程,但這不是真實案例的實際工作流程。 實際商務應用程式中的工作流程會裝載於持續性程式中,無論是開發人員所撰寫的 Windows 服務,還是 IIS 7.0 或 AppFabric 等伺服器應用程式。 這些方法之間的差異如下。
使用 Windows AppFabric 在 IIS 中裝載工作流程
搭配 AppFabric 使用 IIS 是工作流程的慣用主機。 使用 AppFabric 的工作流程之主機應用程式是 Windows 啟動服務,它取消了僅依賴 IIS 的 HTTP 相依性。
單獨在 IIS 中裝載工作流程
不建議單獨使用 IIS 7.0,因為 AppFabric 提供管理和監視工具可協助維護執行中的應用程式。 只有在有移轉至 AppFabric 的基礎結構考慮時,才應該單獨裝載 IIS 7.0 中的工作流程。
警告
IIS 7.0 會基於各種原因定期回收應用程式集區。 回收應用程式集區時,IIS 會停止接受舊集區的訊息,並具現化新的應用程式集區以接受新的要求。 如果工作流程在傳送響應之後繼續運作,IIS 7.0 將不會知道正在完成的工作,而且可能會回收裝載應用程式集區。 如果發生這種情況,工作流程將會中止,而追蹤服務將會記錄 1004 - WorkflowInstanceAborted 訊息與空白 Reason 字段。
如果使用持續性,主機必須從最後一個持續性點明確重新啟動中止的實例。
如果使用了 AppFabric 並且使用持久性,工作流程管理服務最終會從最近成功的持久性點恢復工作流程。 如果未使用持續性,且工作流程會在要求/回應模式之外執行作業,工作流程中止時將會遺失數據。
在自定義 Windows 服務中裝載工作流程
建立自定義工作流程服務來裝載工作流程,需要開發人員複製 AppFabric 提供的許多現成功能,但可讓自定義功能更具彈性。 只有在 AppFabric 證明不是選項時,才應該考慮此選項。