最近学习dapr,决定将过程在此记录,也为小伙伴们学习的时候提供一份参考。

Dapr的介绍这里就不多说了,大家直接可以去百度或者去官网上进行查阅,本文就简单介绍下如何使用。

Dapr官方中文文档

一、安装Dapr CLI

  选择与您使用的系统对应的安装方式即可,我这里使用的是windows系统,故使用windows系统做示例。

  1. 在线安装,使用管理员权限打开cmd,直接将一下命令粘贴进去执行就可以了(命令中的链接可能根据您的网络不同而出现连不上的情况,如果连不上,请使用第二种方式)。

powershell -Command "iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex"

  2. 离线安装,将github中对应的软件包下载并安装就可以了。github地址

  3. 安装完成,在cmd输入dapr,如果出现以下结果,就说明安装成功,可以进行下一步了。

二、本地初始化Dapr(安装dapr自带的中间件)。

  1. 使用前请安装docker

  2. 在cmd中输入命令dapr init,等待进行初始化(过程较慢,因为要拉取中间件的docker映像)

  3. 验证dapr版本。输入 dapr --version 查看当前dapr版本,如图

  4.验证docker容器的运行情况,如图

  5. 验证组件目录已初始化,cmd中输入 explorer "%USERPROFILE%\.dapr\" ,如出现以下弹窗,则成功,如图

三、在代码中使用dapr

  1. 新建一个webapi项目,如图

  2. 稍作修改(不改也可,比较符合自身习惯)

  3. 生成一下项目,并在cmd中进入生成以后的项目的根目录,如图

  4. cmd中输入命令

dapr run --app-id cart --app-port 5000 dotnet dapr.serv.one.dll

  dapr run表示启动dapr服务

  app-id表示服务id

  app-port表示服务端口(推荐app-port和服务中的端口设为一致)

  donet dapr.serv.one.dll 表示启动asp.net core程序的命令

  如图,表示成功启动

  5. 接下来,我们使用dapr的方式,来进行服务调用

        新建空控制台项目,并将dapr.serv.one中的WeatherForecast类复制到本项目中,在nuget中安装 Dapr.Client 类库和 Newtonsoft.Json 类库。

   开始调用,如图

   使用DaprClient调用的方式

    使用HttpClient的调用方式

    以下为图中代码:

using Dapr.Client;
using Newtonsoft.Json; namespace ConsoleApp3
{
internal class Program
{
static void Main(string[] args)
{
var result = DaprTest().Result ?? new List<WeatherForecast>();
Console.WriteLine(JsonConvert.SerializeObject(result));
} public static async Task<IEnumerable<WeatherForecast>?> DaprTest()
{
var daprClient = new DaprClientBuilder().Build();
return await daprClient.InvokeMethodAsync<IEnumerable<WeatherForecast>>(HttpMethod.Get, "cart", "WeatherForecast/GetWeatherForecast"); }
}
}

  

using Dapr.Client;
using Newtonsoft.Json;
using System.Net.Http.Json; namespace ConsoleApp3
{
internal class Program
{
static void Main(string[] args)
{
var result = DaprTest().Result ?? new List<WeatherForecast>();
Console.WriteLine(JsonConvert.SerializeObject(result));
} public static async Task<IEnumerable<WeatherForecast>?> DaprTest()
{
var httpClient = DaprClient.CreateInvokeHttpClient(daprEndpoint: "http://localhost:51323", appId: "cart");
return await httpClient.GetFromJsonAsync<IEnumerable<WeatherForecast>>("WeatherForecast/GetWeatherForecast");
}
}
}

  其中,daprEndpoint中的端口,要设置为dapr服务启动成功后给出的端口地址,而不是app地址,否则调用服务的时候调用不到。WeatherForecast/GetWeatherForecast 则表示服务的具体路径

     

    结果如下:

  好了,dapr的基础入门就介绍到这里,后续的订阅/发布及其他功能,如有时间,我会继续补充。

  本人也是小白刚刚入门,如有理解或者操作不对的地方,烦请朋友们指正。

  

微软微服务构建框架Dapr基础入门教程的更多相关文章

  1. .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一)

    原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一) 写下此文章只为了记录Surging微服务学习过程,并且分享给广大想学习surging的基友,方便广大 ...

  2. .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二)

    原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二) 先上项目解决方案图: 以上可以看出项目结构可以划分为4大块,1是surging的核心底层,2,3,4都可以 ...

  3. 微服务学习及.net core入门教程

    https://www.cnblogs.com/jackyfei/p/12067708.html https://www.cnblogs.com/jesse2013/ http://video.jes ...

  4. 「 从0到1学习微服务SpringCloud 」08 构建消息驱动微服务的框架 Spring Cloud Stream

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...

  5. Spring Cloud与微服务构建:Spring Cloud简介

    Spring Cloud简介 微服务因该具备的功能 微服务可以拆分为"微"和"服务"二字."微"即小的意思,那到底多小才算"微&q ...

  6. Spring Cloud与微服务构建:微服务简介

    Spring Cloud与微服务构建:微服务简介 单体架构及其不足 1.单体架构简介 在软件设计中,经常提及和使用经典的3曾模型,即表示层.业务逻辑层和数据访问层. 表示层:用于直接和用户交互,也成为 ...

  7. Docker—微软微服务

    容器与Docker简介(一)——微软微服务电子书翻译系列 容器与Docker简介(二)什么是DOCKER——微软微服务电子书翻译系列 容器与Docker简介(三)Docker相关术语——微软微服务电子 ...

  8. ASP.NET Core基于微软微服务eShopOnContainer事件总线EventBus的实现

    这个EventBus的实现是基于微软微服务https://github.com/dotnet-architecture/eShopOnContainers项目的,我把它从项目中抽离出来,打包成nuge ...

  9. 字节微服务HTTP框架Hertz使用与源码分析|拥抱开源

    一.前言 Hertz[həːts] 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp.gin.echo 的优势, 并结合字节跳动内部的需求,使其具有高易用性 ...

  10. .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比

    在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy的优势在哪里?和微软的MVC比 ...

随机推荐

  1. 【做题笔记】树形 dp

    luoguP1122 最大子树和 Solve 设计状态 \(dp[i]\) 表示子树 \(i\) 的最大点权和,则有: 当 \(dp[son[i]] > 0\) 时,选以 \(son[i]\) ...

  2. p2:认识requests库的常用方法与实战

    二.全面认识requests库的常用方法 requests是python第三方库安装命令方法如下: pip install requests python的默认的测试用来规则 1.模块名必须以test ...

  3. [minio]挂载minio到本地

    前言 将minio的bucket挂载到本地文件系统 环境 客户端系统版本:centos 7 MinIO节点IP:192.168.0.20 s3fs方式步骤 安装s3fs客户端(可能需要先安装epel- ...

  4. SQL 注入学习手册【笔记】

    SQL 注入基础 [若本文有问题请指正] 有回显 回显正常 基本步骤 1. 判断注入类型 数字型 or 字符型 数字型[示例]:?id=1 字符型[示例]:?id=1' 这也是在尝试闭合原来的 sql ...

  5. 3.你不知道的go语言控制语句

    目录 本篇前瞻 Leetcode习题9 题目描述 题目分析 代码编写 知识点归纳 控制结构 顺序结构(Sequence) 声明和赋值 算术运算符 位运算符 逻辑运算 分支结构 if 语句 switch ...

  6. docker 搭建php环境(踩坑经验!!)

    本次安装的推荐配置: nginx 1.24.0 mysql 5.7.43 php 7.4.3-fpm redis 7.2.0   一.安装虚拟机 vm虚拟机需要4g内存,网络使用nat模式设置静态ip ...

  7. 【微信自动化】使用c#实现微信自动化

    引言 上个月,在一个群里摸鱼划水空度日,看到了一个老哥分享的一个微信自动化的一个类库,便下载了他的Demo,其本意就是模拟鼠标来操作UI,实现UI自动化:然后自己在瞎琢磨研究,写了一个简单的例子,用来 ...

  8. 《SQL与数据库基础》21. 分库分表(一)

    目录 分库分表(一) 拆分策略 垂直拆分 垂直分库 垂直分表 水平拆分 水平分库 水平分表 技术实现 MyCat概述 概念介绍 环境准备 目录介绍 MyCat入门 配置 分片配置(schema.xml ...

  9. CodeIgniter 视图篇

    什么是视图 简单来说,一个视图其实就是一个 Web 页面,或者页面的一部分,像页头.页脚.侧边栏等. 实际上,视图可以很灵活的嵌在另一个视图里,然后这个视图再嵌在另一个视图里,等等, 如果你想使用这种 ...

  10. 通过snmp获取设备每个接口的配置IP地址,网段信息和VLAN接口号

    第一部分,观察通过snmp OID能获取的信息,对信息进行关联. 1.通过 snmp获取到接口IP地址和掩码信息,发现IP地址作为索引值: 2.每个IP地址的索引,都可以关联到接口的索引 3.每个接口 ...