<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>使用 Dapr .NET SDK 开发应用程序 on Dapr 文档库</title><link>https://docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-integrations/</link><description>Recent content in 使用 Dapr .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-integrations/index.xml" rel="self" type="application/rss+xml"/><item><title>使用 Dapr CLI 进行 Dapr .NET SDK 开发</title><link>https://docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-integrations/dotnet-development-dapr-cli/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-integrations/dotnet-development-dapr-cli/</guid><description>&lt;h2 id="dapr-cli">Dapr CLI&lt;/h2>
&lt;p>&lt;em>可以将本文视为 &lt;a href="https://docs.dapr.io/zh-hans/operations/hosting/self-hosted/self-hosted-with-docker/">Docker 自托管 Dapr 指南&lt;/a> 的 .NET 伴侣指南。&lt;/em>&lt;/p>
&lt;p>Dapr CLI 为您提供了一个良好的开发基础，它会初始化本地 Redis 容器、Zipkin 容器、placement 服务以及 Redis 的组件清单。这使您可以在全新安装且无需额外设置的情况下，使用以下构建块：&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://docs.dapr.io/zh-hans/developing-applications/building-blocks/service-invocation/">服务调用&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.dapr.io/zh-hans/developing-applications/building-blocks/state-management/">状态存储&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.dapr.io/zh-hans/developing-applications/building-blocks/pubsub/">发布订阅&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.dapr.io/zh-hans/developing-applications/building-blocks/actors/">Actor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>您可以使用 &lt;code>dapr run&lt;/code> 来运行 .NET 服务，作为本地开发的策略。计划为每个服务运行以下命令之一以启动您的应用程序。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>优点：&lt;/strong> 由于这是默认 Dapr 安装的一部分，因此设置起来很容易&lt;/li>
&lt;li>&lt;strong>缺点：&lt;/strong> 这会在您的机器上使用长时间运行的 Docker 容器，这可能并不理想&lt;/li>
&lt;li>&lt;strong>缺点：&lt;/strong> 这种方法的可扩展性较差，因为它需要为每个服务单独运行命令&lt;/li>
&lt;/ul>
&lt;h3 id="使用-dapr-cli">使用 Dapr CLI&lt;/h3>
&lt;p>对于每个服务，您需要选择：&lt;/p>
&lt;ul>
&lt;li>用于寻址的唯一 app-id（&lt;code>app-id&lt;/code>）&lt;/li>
&lt;li>用于 HTTP 的唯一监听端口（&lt;code>port&lt;/code>）&lt;/li>
&lt;/ul>
&lt;p>您还应该决定在哪里存储组件（&lt;code>components-path&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-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>dapr run --app-id &amp;lt;app-id&amp;gt; --app-port &amp;lt;port&amp;gt; --components-path &amp;lt;components-path&amp;gt; -- dotnet run -p &amp;lt;project&amp;gt; --urls http://localhost:&amp;lt;port&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>说明：&lt;/strong> 此命令将使用 &lt;code>dapr run&lt;/code> 来启动每个服务及其边车。命令的前半部分（在 &lt;code>--&lt;/code> 之前）将所需的配置传递给 Dapr CLI。命令的后半部分（在 &lt;code>--&lt;/code> 之后）将所需的配置传递给 &lt;code>dotnet run&lt;/code> 命令。&lt;/p></description></item><item><title>使用 Docker Compose 进行 Dapr .NET SDK 开发</title><link>https://docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-integrations/dotnet-development-docker-compose/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-integrations/dotnet-development-docker-compose/</guid><description>&lt;h2 id="docker-compose">Docker Compose&lt;/h2>
&lt;p>&lt;em>可将本文视为 &lt;a href="https://docs.dapr.io/zh-hans/operations/hosting/self-hosted/self-hosted-with-docker/">使用 Docker 自托管 Dapr 指南&lt;/a> 的 .NET 伴侣指南。&lt;/em>&lt;/p>
&lt;p>&lt;code>docker-compose&lt;/code> 是随 Docker Desktop 附带的 CLI 工具，可用于同时运行多个容器。它是一种将多个容器的生命周期进行自动化的方式，并为面向 Kubernetes 的应用提供类似生产环境的开发体验。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>优点：&lt;/strong> 由于 &lt;code>docker-compose&lt;/code> 会为你管理容器，你可以将依赖项作为应用定义的一部分，并停止机器上长期运行的容器。&lt;/li>
&lt;li>&lt;strong>缺点：&lt;/strong> 投入成本最高，服务需要容器化才能开始使用。&lt;/li>
&lt;li>&lt;strong>缺点：&lt;/strong> 如果你不熟悉 Docker，可能会难以调试和排查故障。&lt;/li>
&lt;/ul>
&lt;h3 id="使用-docker-compose">使用 docker-compose&lt;/h3>
&lt;p>从 .NET 的角度来看，对于 Dapr 的 &lt;code>docker-compose&lt;/code> 不需要专门的指导。&lt;code>docker-compose&lt;/code> 运行容器，一旦你的服务进入容器中，其配置与任何其他编程技术类似。&lt;/p>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">💡 应用端口&lt;/h4>

 在容器中，ASP.NET Core 应用默认监听端口 80。稍后配置 &lt;code>--app-port&lt;/code> 时请记住这一点。

&lt;/div>

&lt;p>总结方法如下：&lt;/p>
&lt;ul>
&lt;li>为每个服务创建一个 &lt;code>Dockerfile&lt;/code>&lt;/li>
&lt;li>创建一个 &lt;code>docker-compose.yaml&lt;/code> 并将其签入源代码仓库&lt;/li>
&lt;/ul>
&lt;p>要了解如何编写 &lt;code>docker-compose.yaml&lt;/code>，你应该从 &lt;a href="https://github.com/dapr/samples/tree/master/hello-docker-compose">Hello, docker-compose 示例&lt;/a> 开始。&lt;/p>
&lt;p>与使用 &lt;code>dapr run&lt;/code> 在本地运行的每个服务类似，你需要选择一个唯一的 app-id。选择容器名称作为 app-id 会更容易记忆。&lt;/p>
&lt;p>compose 文件至少包含：&lt;/p>
&lt;ul>
&lt;li>容器用于通信的网络&lt;/li>
&lt;li>每个服务的容器&lt;/li>
&lt;li>指定了服务端口和 app-id 的 &lt;code>&amp;lt;service&amp;gt;-daprd&lt;/code> 边车容器&lt;/li>
&lt;li>在容器中运行的其他依赖项（例如 redis）&lt;/li>
&lt;li>可选：Dapr placement 容器（用于 Actor）&lt;/li>
&lt;/ul>
&lt;p>你还可以从 &lt;a href="https://github.com/dotnet-architecture/eShopOnDapr/blob/master/docker-compose.yml">eShopOnContainers&lt;/a> 示例应用中查看更大的示例。&lt;/p></description></item><item><title>使用 .NET Aspire 进行 Dapr .NET SDK 开发</title><link>https://docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-integrations/dotnet-development-dapr-aspire/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.dapr.io/zh-hans/developing-applications/sdks/dotnet/dotnet-integrations/dotnet-development-dapr-aspire/</guid><description>&lt;h1 id="net-aspire">.NET Aspire&lt;/h1>
&lt;p>&lt;a href="https://learn.microsoft.com/dotnet/aspire/get-started/aspire-overview">.NET Aspire&lt;/a> 是一种开发工具，
旨在通过提供一个框架，使第三方服务能够与您自己的软件一起轻松集成、观察和配置，从而更轻松地将外部软件包含到 .NET 应用程序中。&lt;/p>
&lt;p>Aspire 通过与流行的 IDE 提供丰富的集成来简化本地开发，包括
&lt;a href="https://visualstudio.microsoft.com/vs/">Microsoft Visual Studio&lt;/a>、
&lt;a href="https://code.visualstudio.com/">Visual Studio Code&lt;/a>、
&lt;a href="https://blog.jetbrains.com/dotnet/2024/02/19/jetbrains-rider-and-the-net-aspire-plugin/">JetBrains Rider&lt;/a> 等，
以便在启动调试器启动应用程序的同时，自动启动和配置对其他集成的访问，包括 Dapr。&lt;/p>
&lt;p>虽然 Aspire 还协助将应用程序部署到各种云主机（如 Microsoft Azure 和 Amazon AWS），但部署目前超出了本指南的范围。更多信息可以在 Aspire 的文档&lt;a href="https://learn.microsoft.com/dotnet/aspire/deployment/overview">这里&lt;/a>找到。&lt;/p>
&lt;p>可以在&lt;a href="https://github.com/dapr/dotnet-sdk/tree/master/examples/Hosting/Aspire/ServiceInvocationDemo">这里&lt;/a>找到一个端到端演示，其中包含以下内容并演示了多个启用 Dapr 的服务之间的服务调用。&lt;/p>
&lt;h2 id="前提条件">前提条件&lt;/h2>
&lt;ul>
&lt;li>Dapr .NET SDK 支持 &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>。使用支持您选择的运行时的 .NET Aspire 版本。&lt;/li>
&lt;li>符合 OCI 标准的容器运行时，例如 &lt;a href="https://www.docker.com/products/docker-desktop">Docker Desktop&lt;/a> 或 &lt;a href="https://podman.io/">Podman&lt;/a>&lt;/li>
&lt;li>安装并初始化 Dapr v1.16 或更高版本&lt;/li>
&lt;/ul>
&lt;h2 id="通过-cli-使用-net-aspire">通过 CLI 使用 .NET Aspire&lt;/h2>
&lt;p>我们将首先创建一个全新的 .NET 应用程序。打开您喜欢的 CLI 并导航到您希望在其中创建新 .NET 解决方案的目录。首先使用以下命令安装一个模板，该模板将创建一个空的 Aspire 应用程序：&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 new install Aspire.ProjectTemplates
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>安装完成后，继续在当前目录中创建一个空的 .NET Aspire 应用程序。&lt;code>-n&lt;/code> 参数允许您指定输出解决方案的名称。如果排除该参数，.NET CLI 将改为使用输出目录的名称，例如 &lt;code>C:\source\aspiredemo&lt;/code> 将导致解决方案被命名为 &lt;code>aspiredemo&lt;/code>。本教程的其余部分将假设解决方案名为 &lt;code>aspiredemo&lt;/code>。&lt;/p></description></item></channel></rss>