最近学习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. Mybatis(日志工厂)

    日志工厂 如果一个数据库操作,出现了异常,我们需要排错.所以日志就是最好的助手 曾经:sout.debug 现在:日志工厂 SLF4J[工作中,springboot] LOG4J[掌握] LOG4J2 ...

  2. 2023-07-25:你驾驶出租车行驶在一条有 n 个地点的路上 这 n 个地点从近到远编号为 1 到 n ,你想要从 1 开到 n 通过接乘客订单盈利。你只能沿着编号递增的方向前进,不能改变方向 乘

    2023-07-25:你驾驶出租车行驶在一条有 n 个地点的路上 这 n 个地点从近到远编号为 1 到 n ,你想要从 1 开到 n 通过接乘客订单盈利.你只能沿着编号递增的方向前进,不能改变方向 乘 ...

  3. JVM调优篇:探索Java性能优化的必备种子面试题

    JVM内存模型 首先面试官会询问你在进行JVM调优之前,是否了解JVM内存模型的基础知识.这是一个重要的入门问题.JVM内存模型主要包括程序计数器.堆.本地方法栈.Java栈和方法区(1.7之后更改为 ...

  4. 一 APPIUM基本理论知识(转)

    1.APPIUM介绍 Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用.所谓的"移动原生应用"是指那些用 iO ...

  5. msvc++工程之vs版本升级及工程目录规范

    为什么要升级msvc++工程版本 对msvc++工程进行vs版本升级,一方面是可以使用较新的C++标准及对64位更好的支持. 首先你需要对msvc++ project文件有一定的了解,主要是vcxpr ...

  6. 手写 Vuex4 源码

    本文首发于掘金,未经许可禁止转载 Vuex4 是 Vue 的状态管理工具,Vuex 和单纯的全局对象有以下两点不同: Vuex 的状态存储是响应式的 不能直接改变 store 中的状态.改变 stor ...

  7. Python实现输入三个整数x,y,z,请把这三个数由小到大输出;

    num1=input('请输入第一个数,x:') num2=input('请输入第二个数,y:') num3=input('请输入第三个数,z:') if num1>num2: # if 语句判 ...

  8. React-Chat移动端聊天实例|react18 hooks仿微信App聊天界面

    基于react18+react-vant+zustand仿微信手机端聊天室ReactChat. react18-chat 一款使用最新react18.x hooks.zustand搭配react-va ...

  9. Redis专题-队列

    Redis专题-队列 首先,想一想 Redis 适合做消息队列吗? 1.消息队列的消息存取需求是什么?redis中的解决方案是什么? 无非就是下面这几点: 0.数据可以顺序读取 1.支持阻塞等待拉取消 ...

  10. Qt开发思想探幽]QObject、模板继承和多继承

    @ 目录 [Qt开发探幽]QObject.模板继承和多继承 1. QObject为什么不允许模板继承: 2.如果需要使用QObject进行多继承的话,子对象引用的父类链至多只能含有一个QObject ...