上一篇:手把手教你学Dapr - 2. 必须知道的概念

注意:

文章中提到的命令行工具即是Windows Terminal/PowerShell/cmd其中的一个,推荐使用Windows Terminal

运行命令行工具的时候建议以管理员身份,避免踩坑

为了保证操作顺畅,建议使用PowerShell先执行一下set-ExecutionPolicy RemoteSigned

安装Docker

因为Dapr CLI默认会在Docker内启动 redis、zipkin、placement。

当然这些也不是必须要安装的,只是推荐安装可以体验Dapr的完整能力,方便后续章节的学习。

  1. 下载并安装Docker Desktop

    https://www.docker.com/products/docker-desktop

  2. 安装WSL2,使用命令行工具执行命令

    wsl --instal
    如果不能使用wsl直接安装的话可以手动安装,运行PowerShell并执行下面两句命令
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    如果你再次遇到错误提示:0x800f080c 功能名称 VirtualMachinePlatform 未知。

    请保证自己的操作系统版本在Windows 10 build 18917以上

  3. 重启电脑后下载WSL2内核

    https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

  4. 运行命令行工具,设置默认使用WSL2

    wsl --set-default-version 2
  5. 下载Ubuntu 20.04

    https://www.microsoft.com/store/apps/9n6svws3rx71

  6. 设置Docker使用WSL2

你“可能”需要一个小工具

不能说的秘密,看文件名猜功能

https://github.com.cnpmjs.org/dotnetcore/FastGithub/releases/download/2.0.4/fastgithub_win-x64.zip

安装Dapr CLI

官方解释:Dapr CLI 是您用于各种 Dapr 相关任务的主要工具。 您可以使用它来运行一个带有Dapr sidecar的应用程序, 以及查看sidecar日志、列出运行中的服务、运行 Dapr 仪表板。

CLI是必须要安装吗?其实也不是,但新手不建议去体验这些骚操作。后续文章会讲解脱离dapr cli工作。

  1. 运行Windows TerminalPowerShell,执行命令,这里要耐心等待一下

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

    如果是cmd执行下面命令:

    powershell -Command "iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex"
  2. 验证安装,重新打开命令行工具执行命令dapr,看到下面的提示即安装正确

             __
    ____/ /___ _____ _____
    / __ / __ '/ __ \/ ___/
    / /_/ / /_/ / /_/ / /
    \__,_/\__,_/ .___/_/
    /_/ ===============================
    Distributed Application Runtime Usage:
    dapr [command] Available Commands:
    completion Generates shell completion scripts
    components List all Dapr components. Supported platforms: Kubernetes
    configurations List all Dapr configurations. Supported platforms: Kubernetes
    dashboard Start Dapr dashboard. Supported platforms: Kubernetes and self-hosted
    help Help about any command
    init Install Dapr on supported hosting platforms. Supported platforms: Kubernetes and self-hosted
    invoke Invoke a method on a given Dapr application. Supported platforms: Self-hosted
    list List all Dapr instances. Supported platforms: Kubernetes and self-hosted
    logs Get Dapr sidecar logs for an application. Supported platforms: Kubernetes
    mtls Check if mTLS is enabled. Supported platforms: Kubernetes
    publish Publish a pub-sub event. Supported platforms: Self-hosted
    run Run Dapr and (optionally) your application side by side. Supported platforms: Self-hosted
    status Show the health status of Dapr services. Supported platforms: Kubernetes
    stop Stop Dapr instances and their associated apps. . Supported platforms: Self-hosted
    uninstall Uninstall Dapr runtime. Supported platforms: Kubernetes and self-hosted
    upgrade Upgrades a Dapr control plane installation in a cluster. Supported platforms: Kubernetes Flags:
    -h, --help help for dapr
    -v, --version version for dapr Use "dapr [command] --help" for more information about a command.

初始化Dapr

  1. 使用命令行工具执行命令

    dapr init

    如此之外还有一个精简版的安装方式

    dapr init --slim

    看看官方解释slim

    在此模式下安装了两个不同的二进制文件 daprdplacementplacement是给actor用的,之前有提到过。

    在此模式下,不会为状态管理或发布/订阅安装任何默认组件(如 Redis),那就只能用服务调用。其他的需要用户自己设置环境和自定义组件。

    说白了,你只用服务调用,那slim是可以的,否则的话你需要手动配置来解决CLI代替你做的那部分工作。

  2. 验证Dapr版本

    dapr --version

    当前时间下,我的版本是

    CLI version: 1.4.0
    Runtime version: 1.4.3
  3. 验证容器

    docker ps

    dapr init的容器是包括dapr_placement, dapr_redis, dapr_zipkin

  4. 验证组件目录,打开目录%USERPROFILE%\.dapr\,看到如下结构即代表安装完成

运行一个示例代码看看效果

运行环境准备

vs 2022/2019,建议直接上VS2022体验64位VS

https://visualstudio.microsoft.com/zh-hans/vs/preview/#download-preview

.net 6,如果你用的不是vs2022,需要自行安装.net 6

https://download.visualstudio.microsoft.com/download/pr/5bc3c525-d6d5-4370-8468-e44a1b948c03/fe758c9942966b88b52d92ce2823f6c0/dotnet-sdk-6.0.100-rc.2.21505.57-win-x64.exe

从Github下载示例代码

使用命令行工具克隆代码库到本地

ssh(推荐)用下面的命令

git clone git@github.com:doddgu/dapr-study-room.git

https用下面的命令

git clone https://github.com/doddgu/dapr-study-room.git

没有git的需要先安装一下git,具体教程可以自行百度

https://github.com/git-for-windows/git/releases/download/v2.33.1.windows.1/Git-2.33.1-64-bit.exe

使用Dapr运行.Net示例代码

  1. 使用命令行工具,跳转到源码目录dapr-study-room\Assignment03\Assignment.Server

    Tips:在资源管理器找到源码目录

    Win 11可以右键空白区域 -> 在Windows终端中打开即可

    Win 11以下在资源管理器输入cmd

  2. 执行命令dapr run --app-id assignment-server --app-port 5038 dotnet run

    可以先不用了解命令行的意思,后续章节会讲解

  3. 看到输入内容如下即运行成功

    == APP == info: Microsoft.Hosting.Lifetime[14]
    == APP == Now listening on: https://localhost:7038
    == APP == info: Microsoft.Hosting.Lifetime[14]
    == APP == Now listening on: http://localhost:5038
    == APP == info: Microsoft.Hosting.Lifetime[0]
    == APP == Application started. Press Ctrl+C to shut down.
    == APP == info: Microsoft.Hosting.Lifetime[0]
    == APP == Hosting environment: Development
    == APP == info: Microsoft.Hosting.Lifetime[0]
    == APP == Content root path: D:\Project\OpenSource\dapr-study-room\Assignment03\Assignment.Server
    time="2021-10-27T18:06:11.8422605+08:00" level=info msg="application discovered on port 5038" app_id=assignment-server instance=SSHZ014 scope=dapr.runtime type=log ver=1.4.3
    time="2021-10-27T18:06:11.8788949+08:00" level=info msg="application configuration loaded" app_id=assignment-server instance=SSHZ014 scope=dapr.runtime type=log ver=1.4.3
    time="2021-10-27T18:06:11.8803982+08:00" level=info msg="actor runtime started. actor idle timeout: 1h0m0s. actor scan interval: 30s" app_id=assignment-server instance=SSHZ014 scope=dapr.runtime.actor type=log ver=1.4.3
    time="2021-10-27T18:06:11.8844485+08:00" level=info msg="dapr initialized. Status: Running. Init Elapsed 1830.3305ms" app_id=assignment-server instance=SSHZ014 scope=dapr.runtime type=log ver=1.4.3
    time="2021-10-27T18:06:11.8920835+08:00" level=info msg="placement tables updated, version: 0" app_id=assignment-server instance=SSHZ014 scope=dapr.runtime.actor.internal.placement type=log ver=1.4.3
  4. 还有一个验证方式,使用命令行工具执行命令dapr list

    其中APP ID,APP PORT,COMMAND是不变的,其余都是变的

    APP ID HTTP PORT GRPC PORT APP PORT COMMAND AGE CREATED PID

    assignment-server 49948 49949 5038 dotnet run 13m 2021-10-27 18:06.09 22596

调用Dapr API

  1. 重新打开一个命令行工具

  2. 测试Dapr API,再打开一个命令行工具

    dapr invoke --app-id assignment-server --method hello
  3. 验证运行是否成功

    执行dapr inovoke的命令行窗口输出如下

    App invoked successfully

    执行dapr run的命令行窗口输出如下

    == APP == Hello World!

    这个Hello World就是Assignment.Server的API /hello 打印出来的,此时你的环境已经ok,且第一个示例也运行成功了

给自己点个赞吧

在这个环境的搭建过程中,可以看到dapr还有点“稚嫩”,毕竟现在才1.4版本,还有很长的路要走

但是这并不妨碍他带来的一些思想的进步,如果你错过了微服务的第一波浪潮,也错过了Service Mesh,那分布式应用运行时(Dapr)可以作为你新的起点

本章源码

Assignment03

https://github.com/doddgu/dapr-study-room

我们正在行动,新的框架、新的生态

我们的目标是自由的易用的可塑性强的功能丰富的健壮的

所以我们借鉴Building blocks的设计理念,正在做一个新的框架MASA Framework,它有哪些特点呢?

  • 原生支持Dapr,且允许将Dapr替换成传统通信方式
  • 架构不限,单体应用、SOA、微服务都支持
  • 支持.Net原生框架,降低学习负担,除特定领域必须引入的概念,坚持不造新轮子
  • 丰富的生态支持,除了框架以外还有组件库、权限中心、配置中心、故障排查中心、报警中心等一系列产品
  • 核心代码库的单元测试覆盖率90%+
  • 开源、免费、社区驱动
  • 还有什么?我们在等你,一起来讨论

经过几个月的生产项目实践,已完成POC,目前正在把之前的积累重构到新的开源项目中

目前源码已开始同步到Github(文档站点在规划中,会慢慢完善起来):

MASA.BuildingBlocks

MASA.Contrib

MASA.Utils

MASA.EShop

BlazorComponent

MASA.Blazor

QQ群:7424099

微信群:加技术运营微信(MasaStackTechOps),备注来意,邀请进群

手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序的更多相关文章

  1. 跟哥一起学python(2)- 运行第一个python程序&环境搭建

    本节的任务,是完成我们的第一个python程序,并搭建好学习python的环境.  建议通过视频来学习本节内容: 查看本节视频 再次看看上一节提到的那张图,看看作为高级编程语言,我们如何编程. 首先, ...

  2. 《手把手教你学C语言》学习笔记(10)--- 程序的循环控制

    C语言程序设计中,有些代码需要重复执行很多次,循环主要有三类: 一.for循环 1.基本格式为:for(表达式1:表达式2:表达式3){ //表达式1:循环变量赋初值 //表达式2:循环变量满足的条件 ...

  3. 《手把手教你学C语言》学习笔记(9)--- 程序的选择控制

    C语言是面向过程编程语言的主要代表,其特征就是严格控制程序的执行语句顺序,因此,C程序的主要结构控制就是顺序控制,以main函数为入口函数,根据控制,一条一条地执行语句.由于实际需求是很复杂的,只用顺 ...

  4. 《手把手教你学C语言》学习笔记(7)---程序的输入与输出

    程序设计中,为了观察程序的运行状态和结构,需要输出指定的内容:为了让程序能够更加灵活,可以根据需求输入内容,让计算机处理和运行:所以程序的输入输出就显的尤为重要.主要包括printf和scanf函数. ...

  5. 手把手教你学Dapr - 4. 服务调用

    上一篇:手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序 介绍 通过使用服务调用,您的应用程序可以使用标准的gRPC或HTTP协议与其他应用程序可靠.安全地通信. 为什么不直接用Ht ...

  6. 手把手教你学Dapr - 5. 状态管理

    上一篇:手把手教你学Dapr - 4. 服务调用 介绍 使用状态管理,您的应用程序可以将数据作为键/值对存储在支持的状态存储中. 您的应用程序可以使用 Dapr 的状态管理 API 使用状态存储组件来 ...

  7. 手把手教你学Dapr - 6. 发布订阅

    上一篇:手把手教你学Dapr - 5. 状态管理 介绍 发布/订阅模式允许微服务使用消息相互通信.生产者或发布者在不知道哪个应用程序将接收它们的情况下向主题发送消息.这涉及将它们写入输入通道.同样,消 ...

  8. 手把手教你学Dapr - 7. Actors

    上一篇:手把手教你学Dapr - 6. 发布订阅 介绍 Actor模式将Actor描述为最低级别的"计算单元".换句话说,您在一个独立的单元(称为actor)中编写代码,该单元接收 ...

  9. 手把手教你学Dapr - 8. 绑定

    目录 手把手教你学Dapr - 1. .Net开发者的大时代 手把手教你学Dapr - 2. 必须知道的概念 手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序 手把手教你学Dapr ...

随机推荐

  1. 源码解析Grpc拦截器(C#版本)

    前言 其实Grpc拦截器是我以前研究过,但是我看网上相关C#版本的源码解析相对少一点,所以笔者借这篇文章给大家分享下Grpc拦截器的实现,废话不多说,直接开讲(Grpc的源码看着很方便,包自动都能还原 ...

  2. TP6自带的跨域中间件无法使用的个人解决方法

    使用TP6,因为需要跨域上传图片,一直不成功,网上搜了好久,方法都没解决跨域上传文件 比如下面的方式没成功 $this->app = $app; $this->request = $thi ...

  3. css 限制字数

    text-overflow: ellipsis; overflow: hidden; 不过需设置宽高

  4. requests接口自动化-excel参数化

    在数据量大的时候,需要使用文件参数化. excel文件是其中一种. 安装xlrd读取excel文件.(这里是在pycharm安装) 发现选择豆瓣安装失败,阿里云安装成功. 准备excel文件,放在te ...

  5. Selenium多浏览器处理 (Chrome/Firefox/IE)

    测试用例文件:test_selenium/test_hogwarts.py 使用pytest框架 定义一个变量,通过外部传入变量,确定使用哪个浏览器 browser = os.getenv(" ...

  6. python学习笔记(十一)-python程序目录工程化

    在一个程序当中,一般都会包含文件夹:bin.conf.lib.data.logs,以及readme文件. 所写程序存放到各自的文件夹中,如何进行串联? 首先,通过导入文件导入模块方式,引用其他人写好的 ...

  7. mumu模拟器使用

    连接mumu模拟器 启动mumu模拟器 执行命令:adb connect 127.0.0.1:7555(windows系统推荐使用gitbash) 安装app Gitbash下执行:adb insta ...

  8. django forms的常用命令及方法(一)

    根据别人网上发布,个人爱好收集 Form表单的功能 自动生成HTML表单元素 检查表单数据的合法性 如果验证错误,重新显示表单(数据不会重置) 数据类型转换(字符类型的数据转换成相应的Python类型 ...

  9. Angular 的性能优化

    目录 序言 变更检查机制 性能优化原理 性能优化方案 小结 参考 序言 本文将谈一谈 Angular 的性能优化,并且主要介绍与运行时相关的优化.在谈如何优化之前,首先我们需要明确什么样的页面是存在性 ...

  10. try catch中的return与finally

    try catch中的return与finally 代码为 public class Test{ public int add(int a,int b){ try { return a+b; } ca ...