<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dapr Workflow .NET SDK on Dapr 文档库</title><link>https://v1-18.docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-workflow/</link><description>Recent content in Dapr Workflow .NET SDK on Dapr 文档库</description><generator>Hugo</generator><language>zh-hans</language><atom:link href="https://v1-18.docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-workflow/index.xml" rel="self" type="application/rss+xml"/><item><title>DaprWorkflowClient 使用</title><link>https://v1-18.docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-workflow/dotnet-workflowclient-usage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v1-18.docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-workflow/dotnet-workflowclient-usage/</guid><description>&lt;h2 id="生命周期管理">生命周期管理&lt;/h2>
&lt;p>&lt;code>DaprWorkflowClient&lt;/code> 可以访问网络资源，这些资源通过 TCP 套接字与 Dapr sidecar 以及其他用于管理和操作工作流的类型进行通信。&lt;code>DaprWorkflowClient&lt;/code> 实现了 &lt;code>IAsyncDisposable&lt;/code> 接口，以便快速清理资源。&lt;/p>
&lt;h2 id="依赖注入">依赖注入&lt;/h2>
&lt;p>&lt;code>AddDaprWorkflow()&lt;/code> 方法用于通过 ASP.NET Core 的依赖注入机制注册 Dapr 工作流服务。此方法需要一个选项委托，用于定义您希望在应用程序中注册和使用的每个工作流和活动。&lt;/p>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">注意&lt;/h4>

 此方法会尝试注册一个 &lt;code>DaprClient&lt;/code> 实例，但仅在尚未以其他生命周期注册的情况下才有效。例如，如果之前以单例生命周期调用了 &lt;code>AddDaprClient()&lt;/code>，那么无论为工作流客户端选择何种生命周期，都会始终使用单例。&lt;code>DaprClient&lt;/code> 实例用于与 Dapr sidecar 通信，如果尚未注册，则在 &lt;code>AddDaprWorkflow()&lt;/code> 注册期间提供的生命周期将用于注册 &lt;code>DaprWorkflowClient&lt;/code> 及其依赖项。

&lt;/div>

&lt;h3 id="单例注册">单例注册&lt;/h3>
&lt;p>默认情况下，&lt;code>AddDaprWorkflow&lt;/code> 方法会以单例生命周期注册 &lt;code>DaprWorkflowClient&lt;/code> 和相关服务。这意味着服务只会被实例化一次。&lt;/p>
&lt;p>以下是在典型的 &lt;code>Program.cs&lt;/code> 文件中注册 &lt;code>DaprWorkflowClient&lt;/code> 的示例：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-csharp" data-lang="csharp">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">builder&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Services&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">AddDaprWorkflow&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">options&lt;/span> &lt;span style="color:#000;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">options&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">RegisterWorkflow&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#000">YourWorkflow&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">options&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">RegisterActivity&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#000">YourActivity&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">});&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">var&lt;/span> &lt;span style="color:#000">app&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#000">builder&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Build&lt;/span>&lt;span style="color:#000;font-weight:bold">();&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">await&lt;/span> &lt;span style="color:#000">app&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">RunAsync&lt;/span>&lt;span style="color:#000;font-weight:bold">();&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="作用域注册">作用域注册&lt;/h3>
&lt;p>虽然默认的单例注册通常适用，但您可能希望指定不同的生命周期。这可以通过在 &lt;code>AddDaprWorkflow&lt;/code> 中传递一个 &lt;code>ServiceLifetime&lt;/code> 参数来实现。例如，您可能需要将另一个作用域服务注入到 ASP.NET Core 处理管道中，该管道需要 &lt;code>DaprClient&lt;/code> 使用的上下文，如果前者服务注册为单例，则无法使用。&lt;/p>
&lt;p>以下示例演示了这一点：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-csharp" data-lang="csharp">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">builder&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Services&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">AddDaprWorkflow&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">options&lt;/span> &lt;span style="color:#000;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">options&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">RegisterWorkflow&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#000">YourWorkflow&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">options&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">RegisterActivity&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#000">YourActivity&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">},&lt;/span> &lt;span style="color:#000">ServiceLifecycle&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Scoped&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">var&lt;/span> &lt;span style="color:#000">app&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#000">builder&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Build&lt;/span>&lt;span style="color:#000;font-weight:bold">();&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">await&lt;/span> &lt;span style="color:#000">app&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">RunAsync&lt;/span>&lt;span style="color:#000;font-weight:bold">();&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="瞬态注册">瞬态注册&lt;/h3>
&lt;p>最后，Dapr 服务也可以使用瞬态生命周期注册，这意味着每次注入时都会重新初始化。这在以下示例中演示：&lt;/p></description></item><item><title>如何：在 .NET SDK 中编写和管理 Dapr 工作流</title><link>https://v1-18.docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-workflow/dotnet-workflow-howto/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v1-18.docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-workflow/dotnet-workflow-howto/</guid><description>&lt;p>我们来创建一个 Dapr 工作流并通过控制台调用它。在&lt;a href="https://github.com/dapr/dotnet-sdk/tree/master/examples/Workflow">提供的订单处理工作流示例&lt;/a>中，控制台会提示如何进行购买和补货。在本指南中，您将：&lt;/p>
&lt;ul>
&lt;li>部署一个 .NET 控制台应用程序 (&lt;a href="https://github.com/dapr/dotnet-sdk/tree/master/examples/Workflow/WorkflowConsoleApp">WorkflowConsoleApp&lt;/a>)。&lt;/li>
&lt;li>使用 .NET 工作流 SDK 和 API 调用来启动和查询工作流实例。&lt;/li>
&lt;/ul>
&lt;p>在 .NET 示例项目里：&lt;/p>
&lt;ul>
&lt;li>主要的 &lt;a href="https://github.com/dapr/dotnet-sdk/blob/master/examples/Workflow/WorkflowConsoleApp/Program.cs">&lt;code>Program.cs&lt;/code>&lt;/a> 文件包含应用程序的设置，包括工作流和工作流活动的注册。&lt;/li>
&lt;li>工作流定义位于 &lt;a href="https://github.com/dapr/dotnet-sdk/tree/master/examples/Workflow/WorkflowConsoleApp/Workflows">&lt;code>Workflows&lt;/code> 目录&lt;/a>中。&lt;/li>
&lt;li>工作流活动定义位于 &lt;a href="https://github.com/dapr/dotnet-sdk/tree/master/examples/Workflow/WorkflowConsoleApp/Activities">&lt;code>Activities&lt;/code> 目录&lt;/a>中。&lt;/li>
&lt;/ul>
&lt;h2 id="先决条件">先决条件&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://docs.dapr.io/getting-started/install-dapr-cli/">Dapr CLI&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.dapr.io/getting-started/install-dapr-selfhost/">已初始化的 Dapr 环境&lt;/a>&lt;/li>
&lt;li>安装 &lt;a href="https://dotnet.microsoft.com/download/dotnet/7.0">.NET 7&lt;/a>、&lt;a href="https://dotnet.microsoft.com/download/dotnet/8.0">.NET 8&lt;/a> 或 &lt;a href="https://dotnet.microsoft.com/download/dotnet/9.0">.NET 9&lt;/a>&lt;/li>
&lt;/ul>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">注意&lt;/h4>

 Dapr.Workflows 在 v1.15 中支持 .NET 7 或更高版本。然而，从 Dapr v1.16 开始，仅支持 .NET 8 和 .NET 9。

&lt;/div>

&lt;h2 id="设置环境">设置环境&lt;/h2>
&lt;p>克隆 &lt;a href="https://github.com/dapr/dotnet-sdk">.NET SDK 仓库&lt;/a>。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>git clone https://github.com/dapr/dotnet-sdk.git
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>从 .NET SDK 根目录，导航到 Dapr 工作流示例。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">cd&lt;/span> examples/Workflow
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="本地运行应用程序">本地运行应用程序&lt;/h2>
&lt;p>要运行 Dapr 应用程序，您需要启动 .NET 程序和一个 Dapr sidecar。导航到 &lt;code>WorkflowConsoleApp&lt;/code> 目录。&lt;/p></description></item></channel></rss>