开始使用Dapr Windows文档: 开始使用 Dapr | Microsoft Docs
Windows 安装
在PowerShell 执行
powershell -Command "iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex"
结果如下:
安装可能遇到的问题:
如果遇到 未能解析此远程名称: 'raw.githubusercontent.com'问题 是因为没有开启VPN 开启VPN 重新尝试执行该语句
重新打开Power Shell终端 然后输入
dapr
结果如下:
则代表Dapr安装成功,
接下来安装Docker Desktop
Docker Desktop下载地址(根据自己的需求下载)Releases · docker/compose · GitHub
这里主要介绍如何启动Dapr 安装Docker Desktop不详细介绍 说一下安装Docker Desktop可能遇到的问题
Docker requires log out 重启一下电脑再启动 Docker 方可解决问题
1.以管理员身份运行Windows PowerShell终端
2.运行init 命令
dapr init
成功会显示
Making the jump to hyperspace...
Container images will be pulled from Docker Hub
Installing runtime version 1.8.2
Downloading binaries and setting up components...
Downloaded binaries and completed components set up.
daprd binary has been installed to C:\Users\Administrator\.dapr\bin.
dapr_placement container is running.
dapr_redis container is running.
dapr_zipkin container is running.
Use `docker ps` to check running containers.
Success! Dapr is up and running. To get started, go here: https://aka.ms/dapr-getting-started
3.验证Dapr版本
dapr --version
结果显示
CLI version: 1.8.0
Runtime version: 1.8.2
4.验证Docker是否在运行
docker ps
显示结果为
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1d8513e294e7 openzipkin/zipkin "start-zipkin" About a minute ago Up About a minute (healthy) 9410/tcp, 0.0.0.0:9411->9411/tcp dapr_zipkin
9015e2eb2d4b daprio/dapr:1.8.2 "./placement" 2 minutes ago Up About a minute 0.0.0.0:6050->50005/tcp dapr_placement
3e48adf8b694 redis "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:6379->6379/tcp dapr_redis
a54356dd5ac3 docker/getting-started "/docker-entrypoint.…" 26 minutes ago Up 26 minutes 0.0.0.0:80->80/tcp determined_cartwright
建议打开 Visual Studio Code 使用其终端功能 导航到你要放置项目的文件夹下
输入 eSummerShopDapr 为文件夹名字 可随意起名
dotnet new console -o eSummerShopDapr
结果如图
接下来导航到你刚刚创建的文件夹中
cd eSummerShopDapr
使用Dotnet run命令运行新创建的应用程序
dotnet run
结果如下
这块比较有关Dapr的概述 我会单独写一篇文章解释一下Dapr状态管理
官网文档 State management overview | Dapr Docs
1. 打开Windows PowerShell终端窗口
导航到刚刚你创建的项目文件夹下
添加Dapr.Client NuGet包
dotnet add package Dapr.Client
如图
PS C:\Users\Administrator> cd e:
PS E:\> cd eSummerShop
PS E:\eSummerShop> cd eSummerShopDapr
PS E:\eSummerShop\eSummerShopDapr> dotnet add package Dapr.Client
正在确定要还原的项目…
Writing C:\Users\Administrator\AppData\Local\Temp\tmpCCC0.tmp
info : 正在将包“Dapr.Client”的 PackageReference 添加到项目“E:\eSummerShop\eSummerShopDapr\eSummerShopDapr.csproj”。
info : GET https://www.nuget.org/api/v2/FindPackagesById()?id='Dapr.Client'&semVerLevel=2.0.0
info : OK https://www.nuget.org/api/v2/FindPackagesById()?id='Dapr.Client'&semVerLevel=2.0.0 374 毫秒
info : 正在还原 E:\eSummerShop\eSummerShopDapr\eSummerShopDapr.csproj 的包...
info : GET https://www.nuget.org/api/v2/FindPackagesById()?id='Dapr.Client'&semVerLevel=2.0.0
info : OK https://www.nuget.org/api/v2/FindPackagesById()?id='Dapr.Client'&semVerLevel=2.0.0 891 毫秒
info : GET https://www.nuget.org/api/v2/package/Dapr.Client/1.8.0
info : OK https://www.nuget.org/api/v2/package/Dapr.Client/1.8.0 1873 毫秒
info : 已通过内容哈希 qrabRYmtZ0tlv7EZFi+fZFNad9tZsn1WQr24PAXMkMyPtcQtMfgYWY/h2N1MuUFAb7LBYZANyBcNoAJRnsjj/Q== 从 https://www.nuget.org/api/v2/ 安装 Dapr.Client 1.8.0 。
info : 包“Dapr.Client”与项目“E:\eSummerShop\eSummerShopDapr\eSummerShopDapr.csproj”中指定的所有框架均兼容。
info : 包“Dapr.Client”(版本为 1.8.0)的 PackageReference 已添加到文件“E:\eSummerShop\eSummerShopDapr\eSummerShopDapr.csproj”。
info : 将资产文件写入磁盘。路径: E:\eSummerShop\eSummerShopDapr\obj\project.assets.json
log : 已还原 E:\eSummerShop\eSummerShopDapr\eSummerShopDapr.csproj (用时 3.58 sec)。
使用随意编辑器打开项目文件夹中的Program 这里我使用的是 VS2022 Preview
将代码更新成
using Dapr.Client;
const string storeName = "statestore";
const string key = "counter";
var daprClient = new DaprClientBuilder().Build();
var counter = await daprClient.GetStateAsync(storeName, key);
while (true)
{
Console.WriteLine($"Counter = {counter++}");
await daprClient.SaveStateAsync(storeName, key, counter);
await Task.Delay(1000);
}
作用
DaprClient
实例。 此类使你能够与 Dapr 挎斗进行交互。DaprClient.GetStateAsync
会提取 counter
键的值。 如果该键不存在,会返回 int
的默认值(即 0
)。counter
值写入控制台并将递增的值保存到状态存储中接下来 使用Dapr CLI run命令将启动应用程序
dapr run --app-id DaprCounter dotnet run
结果
尝试停止并重新启动应用程序。 你将看到计数器未重置。 相反,它会从之前保存的状态继续。 Dapr 构建块使应用程序具有状态。
状态储存在Dapr初始化 自动预配的一个Redis容器 Dapr 使用一个名为 statestore.yaml
的组件配置文件将 Redis 容器配置为默认的状态存储组件
为什么会突然出现一个名字叫statestore.yaml?
因为刚刚我们在Program文件重新更新的代码
storeName为statestore
在 Windows 上,默认组件配置文件存储在 %USERPROFILE%\.dapr\components
文件夹中。
打开我的电脑 直接将 %USERPROFILE%\.dapr\components 复制到路径回车自动进入
打开statestore.yaml 具体内容如下
在生产环境中定义一个Namespace 在自托管模式下 通过设置NameSpace环境变量来指定Dapr挎斗的命名空间 。 配置后,Dapr 挎斗将仅加载与该命名空间相匹配的组件。
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: statestore
namespace: production
spec:
type: state.redis
version: v1
metadata:
- name: redisHost
value: localhost:6379
- name: redisPassword
value: ""
- name: actorStateStore
value: "true"
如果需要,可以进一步将组件限制到特定的应用程序。 在 production
命名空间中,可能需要将 Redis 缓存的访问限制为仅限 DaprCounter
应用程序。 为此,请在组件配置中指定 scopes
。 下面的示例演示如何将 Redis statestore
组件的访问限制为 production
命名空间中的应用程序 DaprCounter
:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: statestore
namespace: production
spec:
type: state.redis
version: v1
metadata:
- name: redisHost
value: localhost:6379
- name: redisPassword
value: ""
- name: actorStateStore
value: "true"
scopes:
- DaprCounter
简单的Dapr应用就跑起来啦 接下来将会更新生成多容器 Dapr 应用程序