微软微服务构建框架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基础入门教程的更多相关文章
- .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一)
原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一) 写下此文章只为了记录Surging微服务学习过程,并且分享给广大想学习surging的基友,方便广大 ...
- .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二)
原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二) 先上项目解决方案图: 以上可以看出项目结构可以划分为4大块,1是surging的核心底层,2,3,4都可以 ...
- 微服务学习及.net core入门教程
https://www.cnblogs.com/jackyfei/p/12067708.html https://www.cnblogs.com/jesse2013/ http://video.jes ...
- 「 从0到1学习微服务SpringCloud 」08 构建消息驱动微服务的框架 Spring Cloud Stream
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...
- Spring Cloud与微服务构建:Spring Cloud简介
Spring Cloud简介 微服务因该具备的功能 微服务可以拆分为"微"和"服务"二字."微"即小的意思,那到底多小才算"微&q ...
- Spring Cloud与微服务构建:微服务简介
Spring Cloud与微服务构建:微服务简介 单体架构及其不足 1.单体架构简介 在软件设计中,经常提及和使用经典的3曾模型,即表示层.业务逻辑层和数据访问层. 表示层:用于直接和用户交互,也成为 ...
- Docker—微软微服务
容器与Docker简介(一)——微软微服务电子书翻译系列 容器与Docker简介(二)什么是DOCKER——微软微服务电子书翻译系列 容器与Docker简介(三)Docker相关术语——微软微服务电子 ...
- ASP.NET Core基于微软微服务eShopOnContainer事件总线EventBus的实现
这个EventBus的实现是基于微软微服务https://github.com/dotnet-architecture/eShopOnContainers项目的,我把它从项目中抽离出来,打包成nuge ...
- 字节微服务HTTP框架Hertz使用与源码分析|拥抱开源
一.前言 Hertz[həːts] 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp.gin.echo 的优势, 并结合字节跳动内部的需求,使其具有高易用性 ...
- .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比
在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy的优势在哪里?和微软的MVC比 ...
随机推荐
- 【做题笔记】树形 dp
luoguP1122 最大子树和 Solve 设计状态 \(dp[i]\) 表示子树 \(i\) 的最大点权和,则有: 当 \(dp[son[i]] > 0\) 时,选以 \(son[i]\) ...
- p2:认识requests库的常用方法与实战
二.全面认识requests库的常用方法 requests是python第三方库安装命令方法如下: pip install requests python的默认的测试用来规则 1.模块名必须以test ...
- [minio]挂载minio到本地
前言 将minio的bucket挂载到本地文件系统 环境 客户端系统版本:centos 7 MinIO节点IP:192.168.0.20 s3fs方式步骤 安装s3fs客户端(可能需要先安装epel- ...
- SQL 注入学习手册【笔记】
SQL 注入基础 [若本文有问题请指正] 有回显 回显正常 基本步骤 1. 判断注入类型 数字型 or 字符型 数字型[示例]:?id=1 字符型[示例]:?id=1' 这也是在尝试闭合原来的 sql ...
- 3.你不知道的go语言控制语句
目录 本篇前瞻 Leetcode习题9 题目描述 题目分析 代码编写 知识点归纳 控制结构 顺序结构(Sequence) 声明和赋值 算术运算符 位运算符 逻辑运算 分支结构 if 语句 switch ...
- docker 搭建php环境(踩坑经验!!)
本次安装的推荐配置: nginx 1.24.0 mysql 5.7.43 php 7.4.3-fpm redis 7.2.0 一.安装虚拟机 vm虚拟机需要4g内存,网络使用nat模式设置静态ip ...
- 【微信自动化】使用c#实现微信自动化
引言 上个月,在一个群里摸鱼划水空度日,看到了一个老哥分享的一个微信自动化的一个类库,便下载了他的Demo,其本意就是模拟鼠标来操作UI,实现UI自动化:然后自己在瞎琢磨研究,写了一个简单的例子,用来 ...
- 《SQL与数据库基础》21. 分库分表(一)
目录 分库分表(一) 拆分策略 垂直拆分 垂直分库 垂直分表 水平拆分 水平分库 水平分表 技术实现 MyCat概述 概念介绍 环境准备 目录介绍 MyCat入门 配置 分片配置(schema.xml ...
- CodeIgniter 视图篇
什么是视图 简单来说,一个视图其实就是一个 Web 页面,或者页面的一部分,像页头.页脚.侧边栏等. 实际上,视图可以很灵活的嵌在另一个视图里,然后这个视图再嵌在另一个视图里,等等, 如果你想使用这种 ...
- 通过snmp获取设备每个接口的配置IP地址,网段信息和VLAN接口号
第一部分,观察通过snmp OID能获取的信息,对信息进行关联. 1.通过 snmp获取到接口IP地址和掩码信息,发现IP地址作为索引值: 2.每个IP地址的索引,都可以关联到接口的索引 3.每个接口 ...