Dapr+Net6+K8S最小原型项目架构和实现-11-使用AspNetCore6.0编写Dapr项目

本文主要是介绍Dapr+Net6+K8S最小原型项目架构和实现-11-使用AspNetCore6.0编写Dapr项目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 回顾

上一章,我们动手在K8S集群中安装了Dapr:

Dapr+Net6+K8S最小原型项目架构和实现-10-在Master节点上给K8S集群安装Dapr_敦格-CSDN博客Dapr+Net6+K8S最小原型项目架构和实现-10-在Master节点上给K8S集群安装Daprhttps://blog.csdn.net/shuaihj/article/details/122969361

这一章,K8S集群和Dapr运行时都准备好了 ,我们开始使用AspNetCore6.0编写Dapr项目。

 2. 新建一个ASP.NET Core Web API项目 Service01

  • 新建HelloController
  • 定义一个API: api/hello
  • 每个Service01实例分配不同的InstanceId
  • API被访问时,返回InstanceId,来验证负载均衡效果
using Microsoft.AspNetCore.Mvc;namespace Service01.Controllers
{[ApiController]public class HelloController : ControllerBase{// 每个Service01实例分配不同的InstanceIdprivate static readonly string InstanceId = Guid.NewGuid().ToString();[HttpGet("api/Hello")]public async Task<IActionResult> Hello(){await Task.CompletedTask;// API被访问时,返回InstanceId,来验证负载均衡效果return Ok(new { Service = "Service01", InstanceId });}}
}

3. 新建一个ASP.NET Core Web API项目 Service02

3.1. 引用Dapr.AspNetCore包

<Project Sdk="Microsoft.NET.Sdk.Web"><PropertyGroup><TargetFramework>net6.0</TargetFramework><Nullable>enable</Nullable><ImplicitUsings>enable</ImplicitUsings></PropertyGroup><ItemGroup><!--引用Dapr.AspNetCore包--><PackageReference Include="Dapr.AspNetCore" Version="1.6.0" /></ItemGroup></Project>

3.2. 注入Dapr service

var builder = WebApplication.CreateBuilder(args);builder.Services.AddControllers().AddDapr(); // 注入Dapr servicevar app = builder.Build();app.UseAuthorization();app.MapControllers();app.Run();

3.3. 新建HelloController

  • 通过dapr访问Service01的API
using Dapr.Client;
using Microsoft.AspNetCore.Mvc;namespace Service02.Controllers
{[ApiController]public class HelloController : ControllerBase{private readonly DaprClient _daprClient;public HelloController(DaprClient daprClient){_daprClient = daprClient;}[HttpGet("api/Hello")]public async Task<IActionResult> Hello(){// 通过dapr访问Service01的APIvar result = await _daprClient.InvokeMethodAsync<object>(HttpMethod.Get, "service01", "api/hello");return Ok(result);}}
}

4. 给Service01和Service02准备Dockerfile

4.1. 给Service01 添加Dockerfile

  • Dockerfile文件及内容会自动生成,无需更改

4.2. 给Service02 添加Dockerfile

  • Dockerfile文件及内容会自动生成,无需更改

5. 上传Service01和Service02的Docker镜像

5.1. 登录 docker hub

https://hub.docker.com/
docker login

5.2. 给service01和service02打镜像

docker build -t k8schina/service01:v1 -f ./Service01/Dockerfile .
docker build -t k8schina/service02:v1 -f ./Service02/Dockerfile .

5.3. 上传Service01和service02的镜像

docker push k8schina/service01:v1
docker push k8schina/service02:v1

5.4. 查看上传结果

6. 下一章

Dapr+Net6+K8S最小原型项目架构和实现-12-将Dapr项目部署到K8S集群_敦格-CSDN博客Dapr+Net6+K8S最小原型项目架构和实现-12-将Dapr项目部署到K8S集群https://blog.csdn.net/shuaihj/article/details/122971745?spm=1001.2014.3001.5501

这篇关于Dapr+Net6+K8S最小原型项目架构和实现-11-使用AspNetCore6.0编写Dapr项目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/475151

相关文章

Mysql中RelayLog中继日志的使用

《Mysql中RelayLog中继日志的使用》MySQLRelayLog中继日志是主从复制架构中的核心组件,负责将从主库获取的Binlog事件暂存并应用到从库,本文就来详细的介绍一下RelayLog中... 目录一、什么是 Relay Log(中继日志)二、Relay Log 的工作流程三、Relay Lo

使用Redis实现会话管理的示例代码

《使用Redis实现会话管理的示例代码》文章介绍了如何使用Redis实现会话管理,包括会话的创建、读取、更新和删除操作,通过设置会话超时时间并重置,可以确保会话在用户持续活动期间不会过期,此外,展示了... 目录1. 会话管理的基本概念2. 使用Redis实现会话管理2.1 引入依赖2.2 会话管理基本操作

Springboot请求和响应相关注解及使用场景分析

《Springboot请求和响应相关注解及使用场景分析》本文介绍了SpringBoot中用于处理HTTP请求和构建HTTP响应的常用注解,包括@RequestMapping、@RequestParam... 目录1. 请求处理注解@RequestMapping@GetMapping, @PostMappin

mybatis-plus分表实现案例(附示例代码)

《mybatis-plus分表实现案例(附示例代码)》MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生,:本文主要介绍my... 目录文档说明数据库水平分表思路1. 为什么要水平分表2. 核心设计要点3.基于数据库水平分表注意事项示例

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x

C#高效实现在Word文档中自动化创建图表的可视化方案

《C#高效实现在Word文档中自动化创建图表的可视化方案》本文将深入探讨如何利用C#,结合一款功能强大的第三方库,实现在Word文档中自动化创建图表,为你的数据呈现和报告生成提供一套实用且高效的解决方... 目录Word文档图表自动化:为什么选择C#?从零开始:C#实现Word文档图表的基本步骤深度优化:C

SpringBoot整合AOP及使用案例实战

《SpringBoot整合AOP及使用案例实战》本文详细介绍了SpringAOP中的切入点表达式,重点讲解了execution表达式的语法和用法,通过案例实战,展示了AOP的基本使用、结合自定义注解以... 目录一、 引入依赖二、切入点表达式详解三、案例实战1. AOP基本使用2. AOP结合自定义注解3.

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

nginx跨域访问配置的几种方法实现

《nginx跨域访问配置的几种方法实现》本文详细介绍了Nginx跨域配置方法,包括基本配置、只允许指定域名、携带Cookie的跨域、动态设置允许的Origin、支持不同路径的跨域控制、静态资源跨域以及... 目录一、基本跨域配置二、只允许指定域名跨域三、完整示例四、配置后重载 nginx五、注意事项六、支持

Qt实现对Word网页的读取功能

《Qt实现对Word网页的读取功能》文章介绍了几种在Qt中实现Word文档(.docx/.doc)读写功能的方法,包括基于QAxObject的COM接口调用、DOCX模板替换及跨平台解决方案,重点讨论... 目录1. 核心实现方式2. 基于QAxObject的COM接口调用(Windows专用)2.1 环境