<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dapr Messaging .NET SDK on Dapr 文档库</title><link>https://v1-18.docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-messaging/</link><description>Recent content in Dapr Messaging .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-messaging/index.xml" rel="self" type="application/rss+xml"/><item><title>如何：在 .NET SDK 中编写和管理 Dapr 流式订阅</title><link>https://v1-18.docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-messaging/dotnet-messaging-pubsub-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-messaging/dotnet-messaging-pubsub-howto/</guid><description>&lt;p>我们来创建一个使用流式功能的发布/订阅主题或队列的订阅。我们将使用&lt;a href="https://github.com/dapr/dotnet-sdk/tree/master/examples/Client/PublishSubscribe/StreamingSubscriptionExample">此处提供的简单示例&lt;/a>，进行演示，并逐步讲解如何在运行时配置消息处理程序，而无需预先配置端点。在本指南中，您将会学习如何：&lt;/p>
&lt;ul>
&lt;li>部署一个 .NET Web API 应用程序 (&lt;a href="https://github.com/dapr/dotnet-sdk/tree/master/examples/Client/PublishSubscribe/StreamingSubscriptionExample">StreamingSubscriptionExample&lt;/a>)&lt;/li>
&lt;li>使用 Dapr .NET Messaging SDK 动态订阅发布/订阅主题。&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/6.0">.NET 6&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;li>项目中安装 &lt;a href="https://www.nuget.org/packages/Dapr.Messaging">Dapr.Messaging&lt;/a> NuGet 包&lt;/li>
&lt;/ul>


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

 请注意，虽然 .NET 6 是 Dapr v1.15 中支持的最低版本，但只有 .NET 8 和 .NET 9 将在 v1.16 及更高版本中继续受到支持。

&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/Client/PublishSubscribe
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="本地运行应用程序">本地运行应用程序&lt;/h2>
&lt;p>要运行 Dapr 应用程序，您需要启动 .NET 程序和一个 Dapr sidecar。导航到 &lt;code>StreamingSubscriptionExample&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-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">cd&lt;/span> StreamingSubscriptionExample
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>我们将运行一个命令，同时启动 Dapr sidecar 和 .NET 程序。&lt;/p></description></item><item><title>DaprPublishSubscribeClient 使用指南</title><link>https://v1-18.docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-messaging/dotnet-messaging-pubsub-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-messaging/dotnet-messaging-pubsub-usage/</guid><description>&lt;h2 id="生命周期管理">生命周期管理&lt;/h2>
&lt;p>&lt;code>DaprPublishSubscribeClient&lt;/code> 是 Dapr 客户端的一个版本，专门用于与 Dapr 消息 API 交互。它可以与 &lt;code>DaprClient&lt;/code> 和其他 Dapr 客户端一起注册而不会出现问题。&lt;/p>
&lt;p>它通过 TCP 套接字与 Dapr sidecar 通信，维护对网络资源的访问，并实现了 &lt;code>IAsyncDisposable&lt;/code> 接口以支持资源的快速清理。&lt;/p>
&lt;p>为了获得最佳性能，建议创建一个长生命周期的 &lt;code>DaprPublishSubscribeClient&lt;/code> 实例，并在整个应用程序中共享使用。&lt;code>DaprPublishSubscribeClient&lt;/code> 实例是线程安全的，适合共享使用。&lt;/p>
&lt;p>可以通过依赖注入来实现这一点。注册方法支持以单例、作用域实例或瞬态（每次注入时重新创建）的方式进行注册，但也可以通过 &lt;code>IConfiguration&lt;/code> 或其他注入服务的值来注册，这在每个类中从头创建客户端时是不切实际的。&lt;/p>
&lt;p>避免为每个操作创建一个 &lt;code>DaprPublishSubscribeClient&lt;/code> 并在操作完成后销毁它。&lt;code>DaprPublishSubscribeClient&lt;/code> 应仅在您不再希望接收订阅事件时才被销毁，因为销毁它将取消正在进行的新事件接收。&lt;/p>
&lt;h2 id="通过-daprpublishsubscribeclientbuilder-配置-daprpublishsubscribeclient">通过 DaprPublishSubscribeClientBuilder 配置 DaprPublishSubscribeClient&lt;/h2>
&lt;p>可以通过在 &lt;code>DaprPublishSubscribeClientBuilder&lt;/code> 类上调用方法来配置 &lt;code>DaprPublishSubscribeClient&lt;/code>，然后调用 &lt;code>.Build()&lt;/code> 来创建客户端本身。每个 &lt;code>DaprPublishSubscribeClient&lt;/code> 的设置是独立的，并且在调用 &lt;code>.Build()&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-cs" data-lang="cs">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">var&lt;/span> &lt;span style="color:#000">daprPubsubClient&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#204a87;font-weight:bold">new&lt;/span> &lt;span style="color:#000">DaprPublishSubscribeClientBuilder&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;font-weight:bold">.&lt;/span>&lt;span style="color:#000">UseDaprApiToken&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;abc123&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// 指定用于认证到其他 Dapr sidecar 的 API 令牌&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">Build&lt;/span>&lt;span style="color:#000;font-weight:bold">();&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>DaprPublishSubscribeClientBuilder&lt;/code> 包含以下设置：&lt;/p>
&lt;ul>
&lt;li>Dapr sidecar 的 HTTP 端点&lt;/li>
&lt;li>Dapr sidecar 的 gRPC 端点&lt;/li>
&lt;li>用于配置 JSON 序列化的 &lt;code>JsonSerializerOptions&lt;/code> 对象&lt;/li>
&lt;li>用于配置 gRPC 的 &lt;code>GrpcChannelOptions&lt;/code> 对象&lt;/li>
&lt;li>用于认证请求到 sidecar 的 API 令牌&lt;/li>
&lt;li>用于创建 SDK 使用的 &lt;code>HttpClient&lt;/code> 实例的工厂方法&lt;/li>
&lt;li>用于在向 sidecar 发出请求时使用的 &lt;code>HttpClient&lt;/code> 实例的超时&lt;/li>
&lt;/ul>
&lt;p>SDK 将读取以下环境变量来配置默认值：&lt;/p></description></item></channel></rss>