Dapr Workflow构建块的.NET Demo
Dapr 1.10版本中?帶來了最有亮點的特性就是工作流構建塊的的發布,雖然是Alpha 階段,可以讓我們盡早在應用系統中規劃工作流, 在使用Dapr的系統中更好的編寫負責的分布式應用系統。Dapr 工作流使你能夠生成跨多個應用的長時間運行的持久進程或數據流。Dapr 工作流可以與其他 Dapr API 構建基塊結合使用。例如,工作流可以通過服務調用調用另一個服務、觸發綁定或檢索機密,從而使您能夠編排和構建復雜的應用程序方案。
Dapr 工作流構建塊的提案早在2022年的5月份提出,計劃在 Dapr Runtime 中構建工作流引擎,社區反映非常積極。這個提案(https://github.com/dapr/dapr/issues/4576)內容比較長 ,敖小劍?有一個翻譯的中文版:[譯] Dapr 工作流提案。在Alpha版本里完成了以下內容:
內置工作流引擎將作為初始預覽功能提供 ,這個內置工作流引擎是Azure 上的?持久任務框架?(DTF),在在Azure 基礎設施有大量的應用,它是用.NET 編寫的。Dapr團隊正在把這個實踐抽象成工作流構建塊,基于Dapr Actor構建塊來實現。Beta 版本會實現 Logic Apps 作為工作流引擎,當然還有更多的工作流引擎可以集成進入Dapr Workflow構建塊里。
API 將支持 3 種方法(啟動、停止、獲取狀態)的工作流管理
API 將作為 alpha 版發布
內置引擎的 API 支持
創作 SDK 將支持:.NET
管理 API SDK 將支持:.NET
文檔,詳細的介紹了Dapr Workflow構建塊的工作原理等,推薦大家詳細的看一看:https://docs.dapr.io/developing-applications/building-blocks/workflow/workflow-overview/
代碼示例(.NET ),快速入門文檔里包含了。
Dapr 工作流構建塊目前是alpha版本,自然是有很多限制的,不推薦應用于生產環境中,至少等到beta版本時再考慮應用于生產,通常應用于生產環境的組件都是stable 版本的。Dapr Workflow 構建塊讓我們看到了他的潛力,Dapr Actor 模塊基本上.NET圈子用的多,在其他java,go等用的很少,工作流模塊組合上 Actor 構建塊會讓Dapr 上一個臺階,和其他類似框架的領先度進一步加大。我們常說“ 技術總是在短期內被高估,但是在長期又被低估。” 再來看看這句話,短期內被高估是因為在短期內的需求所迫,長期內被低估是因為技術的隱形需求要比實際上的業務務求多得多。
作為開發者,你需要考慮你將要投身的技術領域長期的隱形成本與試錯成本。再者,投入到某個技術領域中其實不能走馬觀花,而要長期以往的進行深入研究與學習,才能獲取更高的技術視野。Dapr 作為云原生時代的開發框架值得投入進去深入研究和學習。
在Dapr的?components-contrib?倉庫里 也有一個?https://github.com/dapr/components-contrib/tree/master/workflows?,其中包含了一個分布式調度框架
Temporal?https://github.com/temporalio/temporal?的一個組件實現。
現在 可以使用 .NET SDK 體驗 Dapr 工作流,在Dapr 工作流的快速入門文檔里包含了.NET 的示例,創建一個簡單的控制臺應用程序來演示 Dapr 的工作流編程模型和工作流管理 API。
控制臺應用order-processor 啟動并管理在狀態存儲中存儲和檢索數據的工作流的生命周期。工作流OrderProcessingWorkflow 由四個工作流活動或任務組成:
NotifyActivity:利用記錄器在整個工作流程中打印出消息
ReserveInventoryActivity:檢查狀態存儲以確保有足夠的庫存供購買
ProcessPaymentActivity:處理和授權付款
UpdateInventoryActivity:從狀態存儲中刪除請求的物料,并使用新的剩余庫存值更新存儲
快速入門存儲庫中提供的示例代碼。倉庫地址:https://github.com/dapr/quickstarts.git ,我們把它克隆到本地,進入到示例代碼目錄?order-processor:
cd workflows/csharp/sdk/order-processor
在終端中,與 Dapr Sidecar 一起啟動訂單處理器應用:dapr run --app-id order-processor dotnet run ,下面是一次完整運行的輸出:
這里面發生的事情大概如下:
為工作流生成唯一的訂單 ID(在上面的示例中為49caa2d7 ),并啟動工作流。
工作流活動NotifyActivity發送一條通知,指出已收到 10 輛汽車的訂單。
工作流活動ReserveInventoryActivity檢查庫存數據,確定您是否可以提供訂購的物料,并使用庫存中的汽車數量進行響應。
您的工作流將啟動并通知您其狀態。
工作流活動ProcessPaymentActivity開始處理訂單49caa2d7 付款并確認是否成功。
處理訂單后,工作流活動UpdateInventoryActivity使用當前可用汽車更新庫存。
工作流活動NotifyActivity發送一條通知,指出訂單 49caa2d7 已完成。
工作流在完成時終止。
總結
以上是生活随笔為你收集整理的Dapr Workflow构建块的.NET Demo的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 音频基础说明
- 下一篇: asp.net ajax控件工具集 Au