【愚公系列】2023年01月 Dapr分布式应用运行时-Dapr运行.Net Core程序


前言

Dapr能运行各种各样的应用程序包含python、java、node、.net等。

Dapr 使用主要有两种模式:

  • 基于docker内
  • 初始化时选择docker外

初始化时选择docker外相关文档:https://docs.dapr.io/operations/hosting/self-hosted/self-hosted-no-docker/

在这里插入图片描述

本文主要是讲解.net技术栈的使用。

一、Dapr运行.Net Core程序

1.创建应用

打开vs创建控制台应用程序

在这里插入图片描述

2.添加 Dapr 状态管理

安装Dapr包

dotnet add package Dapr.Client

在这里插入图片描述

3.Program类如下

using Dapr.Client;

const string storeName = "statestore";
const string key = "counter";

var daprClient = new DaprClientBuilder().Build();
var counter = await daprClient.GetStateAsync<int>(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 值写入控制台并将递增的值保存到状态存储中。

3.运行程序

使用如下dapr运行程序

dapr run --app-id DaprCounter dotnet run

在这里插入图片描述
可以看到redis中已经有计数器的数据
在这里插入图片描述

原理说明

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: statestore //组件名
  namespace: production  //组件所在命名空间
spec:
  type: state.redis //组件类型
  version: v1 //组件版本
  metadata: //组件信息
  - name: redisHost //redis主机ip
    value: localhost:6379
  - name: redisPassword //redis密码
    value: ""
  - name: actorStateStore
    value: "true"
  scopes:
  - DaprCounter //什么程序可以访问

猜你喜欢

转载自blog.csdn.net/aa2528877987/article/details/128621338