簡體   English   中英

Windows Workflow Foundation本地托管和Web Api

[英]Windows Workflow Foundation On-Premise Hosting and Web Api

我想使用Windows Workflow Foundation 4.5並通過Web API觸發工作流。 既然MS終止了AppFabric支持,我現在有哪些托管選項? 我應該使用Windows Workflow Foundation還是應該尋找第三方解決方案?

這是前提,我沒有使用天藍色的能力。 我已經完成了一些工作流程,似乎WWF並不難使用,但尚不清楚如何托管它。 我可以在沒有AppFabric的情況下在Web api項目中托管嗎?

我主要關心的是,如果IIS應用程序池使用WorkflowApplication回收或服務器崩潰,是否能夠恢復工作流。 我沒有使用WCF,我打算在Web api中使用WorkflowApplication。

誰能為我指出實施AppFabric負責的自定義功能的正確方向? 恢復,記錄等。

來自MS的信息:將IIS與AppFabric一起使用是工作流的首選主機。 使用AppFabric的工作流的主機應用程序是Windows Activation Service,它可以消除對IIS上HTTP的依賴

IIS 7.0出於各種原因會定期回收應用程序池。 回收應用程序池后,IIS停止接受到舊池的消息,並實例化一個新的應用程序池以接受新請求。 如果工作流在發送響應后繼續工作,則IIS 7.0將不知道正在完成的工作,並且可能回收托管應用程序池。 如果發生這種情況,工作流將中止,並且跟蹤服務將記錄1004-WorkflowInstanceAborted消息,其中的原因字段為空。

如果使用持久性,則主機必須從上一個持久性點顯式重新啟動中止的實例。

如果使用AppFabric,則工作流管理服務將在使用持久性的情況下最終從上一個成功的持久性點恢復工作流。 如果不使用持久性,並且工作流在請求/響應模式之外執行操作,則工作流中止時數據將丟失。

一種托管策略是讓您的Web API方法將消息簡單地放入隊列(例如MSMQ或Rabbit MQ),並具有用於實際托管工作流實例的后端Windows Service。 后端服務將連續讀取隊列並啟動所需的正確工作流程。

這樣,您就不會遇到可能終止工作流的IIS應用程序池回收事件。

如果需要讓Web API方法等待工作流完成,則可以讓它等待“相關消息”到達隊列以表示操作已完成。 或者,您可以將WF實例結果存儲在數據庫表中。

我實際上建議不要使用App Fabric,而只是滾動自己的托管服務以提高靈活性。 加上它相對簡單,即可實現您所需的行為。

這是一個希望對您的設計有所幫助或給出想法的圖表:

粗略的圖表...但可能會有幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM