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

举报
愚公搬代码 发表于 2023/01/31 21:34:17 2023/01/31
【摘要】 前言Dapr能运行各种各样的应用程序包含python、java、node、.net等。Dapr 使用主要有两种模式:基于docker内初始化时选择docker外初始化时选择docker外相关文档:https://docs.dapr.io/operations/hosting/self-hosted/self-hosted-no-docker/本文主要是讲解.net技术栈的使用。 一、Dap...

前言

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 //什么程序可以访问
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。