<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dapr Cryptography .NET SDK on Dapr 文档库</title><link>https://docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-cryptography/</link><description>Recent content in Dapr Cryptography .NET SDK on Dapr 文档库</description><generator>Hugo</generator><language>zh-hans</language><atom:link href="https://docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-cryptography/index.xml" rel="self" type="application/rss+xml"/><item><title>Dapr Cryptography Client</title><link>https://docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-cryptography/dotnet-cryptography-usage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-cryptography/dotnet-cryptography-usage/</guid><description>&lt;p>Dapr Cryptography 包允许您执行由 Dapr 边车提供的加密和解密操作。&lt;/p>
&lt;h2 id="生命周期管理">生命周期管理&lt;/h2>
&lt;p>&lt;code>DaprEncryptionClient&lt;/code> 是 Dapr 客户端的专用版本，专门用于与 Dapr Cryptography API 交互。它可以与 &lt;code>DaprClient&lt;/code> 及其他 Dapr 客户端一起注册而不会出现问题。&lt;/p>
&lt;p>它维护与网络资源的连接，这些资源以用于与 Dapr 边车通信的 TCP 套接字形式存在。&lt;/p>
&lt;p>为了获得最佳性能，请创建一个 &lt;code>DaprEncryptionClient&lt;/code> 的长期实例，并在整个应用程序中提供对该共享实例的访问。&lt;code>DaprEncryptionClient&lt;/code> 实例是线程安全的，旨在共享使用。&lt;/p>
&lt;p>利用依赖注入功能可以辅助实现这一点。注册方法支持将其注册为单例、作用域实例或瞬态（意味着每次注入时都会重新创建），此外还支持注册时使用来自 &lt;code>IConfiguration&lt;/code> 或其他注入服务的值，这在每个类中从头创建客户端时是不切实际的。&lt;/p>
&lt;p>避免为每次操作都创建一个 &lt;code>DaprEncryptionClient&lt;/code>。&lt;/p>
&lt;h2 id="通过-daprencryptionclientbuilder-配置-daprencryptionclient">通过 &lt;code>DaprEncryptionClientBuilder&lt;/code> 配置 &lt;code>DaprEncryptionClient&lt;/code>&lt;/h2>
&lt;p>可以通过在调用 &lt;code>.Build()&lt;/code> 创建客户端本身之前调用 &lt;code>DaprEncryptionClientBuilder&lt;/code> 类上的方法来配置 &lt;code>DaprCryptographyClient&lt;/code>。每个 &lt;code>DaprEncryptionClientBuilder&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">daprEncryptionClient&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">DaprEncryptionClientBuilder&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 边车进行身份验证的 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>DaprEncryptionClientBuilder&lt;/code> 包含以下设置：&lt;/p>
&lt;ul>
&lt;li>Dapr 边车的 HTTP 端点&lt;/li>
&lt;li>Dapr 边车的 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>用于向边车验证请求的 API 令牌&lt;/li>
&lt;li>用于创建 SDK 使用的 &lt;code>HttpClient&lt;/code> 实例的工厂方法&lt;/li>
&lt;li>在向边车发出请求时 &lt;code>HttpClient&lt;/code> 实例使用的超时时间&lt;/li>
&lt;/ul>
&lt;p>SDK 将读取以下环境变量以配置默认值：&lt;/p></description></item><item><title>如何操作：在 .NET SDK 中创建和使用 Dapr Cryptography</title><link>https://docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-cryptography/dotnet-cryptography-howto/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-cryptography/dotnet-cryptography-howto/</guid><description>&lt;h2 id="前置条件">前置条件&lt;/h2>
&lt;ul>
&lt;li>已安装 &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;a href="https://dotnet.microsoft.com/download/dotnet/10.0">.NET 10&lt;/a>&lt;/li>
&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;/ul>
&lt;h2 id="安装">安装&lt;/h2>
&lt;p>要开始使用 Dapr Cryptography 客户端，请从 NuGet 安装 &lt;a href="https://www.nuget.org/packages/Dapr.Cryptography">Dapr.Cryptography 包&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>dotnet add package Dapr.Cryptography
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>DaprEncryptionClient&lt;/code> 保持对网络资源的访问，这些资源以用于与 Dapr 边车通信的 TCP 套接字形式存在。&lt;/p>
&lt;h3 id="依赖注入">依赖注入&lt;/h3>
&lt;p>&lt;code>AddDaprEncryptionClient()&lt;/code> 方法会将 Dapr 客户端注册到依赖注入容器中，这是使用此包的推荐方式。该方法接受一个可选的 options 委托用于配置 &lt;code>DaprEncryptionClient&lt;/code>，以及一个 &lt;code>ServiceLifetime&lt;/code> 参数，允许您为注册的服务指定不同的生命周期，而不是使用默认的 &lt;code>Singleton&lt;/code> 值。&lt;/p>
&lt;p>以下示例假设所有默认值都是可接受的，足以注册 &lt;code>DaprEncryptionClient&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">services&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">AddDaprEncryptionClient&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>DaprEncryptionClientBuilder&lt;/code> 上指定选项来配置 &lt;code>DaprEncryptionClient&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">services&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">AddSingleton&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#000">DefaultOptionsProvider&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">services&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">AddDaprEncryptionClient&lt;/span>&lt;span style="color:#000;font-weight:bold">((&lt;/span>&lt;span style="color:#000">serviceProvider&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">clientBuilder&lt;/span>&lt;span style="color:#000;font-weight:bold">)&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:#8f5902;font-style:italic">// 注入一个服务以从中获取值&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">optionsProvider&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#000">serviceProvider&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">GetRequiredService&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#000">DefaultOptionsProvider&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:#204a87;font-weight:bold">var&lt;/span> &lt;span style="color:#000">standardTimeout&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span> &lt;span style="color:#000">optionsProvider&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">GetStandardTimeout&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:#8f5902;font-style:italic">// 在客户端构建器上配置值&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">clientBuilder&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">UseTimeout&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">standardTimeout&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>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="手动实例化">手动实例化&lt;/h3>
&lt;p>除了使用依赖注入外，也可以使用静态客户端构建器构建 &lt;code>DaprEncryptionClient&lt;/code>。&lt;/p>
&lt;p>为了获得最佳性能，请创建单个长期存在的 &lt;code>DaprEncryptionClient&lt;/code> 实例，并在整个应用程序中提供对该共享实例的访问。&lt;code>DaprEncryptionClient&lt;/code> 实例是线程安全的，旨在共享。&lt;/p>
&lt;p>避免为每次操作创建 &lt;code>DaprEncryptionClient&lt;/code>。&lt;/p>
&lt;p>可以通过在调用 &lt;code>.Build()&lt;/code> 创建客户端之前调用 &lt;code>DaprEncryptionClientBuilder&lt;/code> 类上的方法来配置 &lt;code>DaprEncryptionClient&lt;/code>。每个 &lt;code>DaprEncryptionClient&lt;/code> 的设置是独立的，无法在调用 &lt;code>.Build()&lt;/code> 后更改。&lt;/p></description></item></channel></rss>