微服务实践k8s&dapr开发部署实验(1)服务调用(一)

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 微服务实践k8s&dapr开发部署实验(1)服务调用(一)

目录

 


回到顶部

前置条件

回到顶部

dapr 自托管模式运行

新建一个webapi无权限项目

launchSettings.json中applicationUrl端口改成5001,如下:

"applicationUrl": "http://localhost:5001"
//WeatherForecastController.cs更改如下
using Microsoft.AspNetCore.Mvc;
namespace backend.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };
        private readonly ILogger<WeatherForecastController> _logger;
        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }
        [HttpGet(Name = "GetWeatherForecast")]
        public IEnumerable<WeatherForecast> Get()
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }
        [HttpPost(Name = "Hello")]
        public object SayHello()
        {
            return new { message = "Hello" }; //这里返回必须是json对象,如果为字符串,则在daprClient.InvokeMethodAsync调用时会出错
        }
    }
}

到backend目录运行运行下面命令:

dapr run --app-id backend --app-port 5001 dotnet run

然后运行:

dapr invoke --app-id backend --method WeatherForecast  
dapr invoke --app-id backend --method WeatherForecast --verb GET

显示下图表示运行成功

dapr服务调用

新建一个名为front的weiapi无权限项目

launchSettings.json中applicationUrl端口改成5002,如下:

"applicationUrl": "http://localhost:5002"

添加nuget包:Dapr.Client

修改WeatherForecastController.cs如下:

using Dapr.Client;
using Microsoft.AspNetCore.Mvc;
namespace front.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        [HttpPost(Name = "Hello")]
        public async Task<string> HelloAsync()
        {
            var appId = "backend";
            var methodName = "WeatherForecast";
            using (var daprClient = new DaprClientBuilder().Build())
            {
                try
                {
                    var result = await daprClient.InvokeMethodAsync<object>(HttpMethod.Post, appId, methodName);
                    Console.WriteLine(result);
                    return result.ToString();
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"An exception occurred while invoking method: '{methodName}' on app-id: '{appId}'");
                    Console.WriteLine(ex.ToString());
                }
            }
            return "Error!";
        }
    }
}

访问http://http://localhost:5002/swagger/页面运行如下就成功了

回到顶部


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1天前
|
微服务
微服务实践之使用 Visual Studio 2022 调试Dapr 应用程序
微服务实践之使用 Visual Studio 2022 调试Dapr 应用程序
12 2
|
2天前
|
数据管理 API 持续交付
深入理解后端开发中的微服务架构
本文将介绍微服务架构的基本原理、优势与挑战,并通过具体案例展示如何在实际项目中应用。我们将从传统的单体应用出发,探讨为何需要微服务架构以及它如何带来更大的灵活性和可维护性。同时,文章也会讨论实施微服务时可能遇到的问题,如分布式事务和服务间通信等,并提供一些解决方案。
|
1天前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
13 1
|
3天前
|
Kubernetes JavaScript 前端开发
k8s学习--chart包开发(创建chart包)
k8s学习--chart包开发(创建chart包)
|
15天前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
15天前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
2月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
2月前
|
负载均衡 应用服务中间件 持续交付
微服务架构下的Web服务器部署
【8月更文第28天】随着互联网应用的不断发展,传统的单体应用架构逐渐显露出其局限性,特别是在可扩展性和维护性方面。为了解决这些问题,微服务架构应运而生。微服务架构通过将应用程序分解成一系列小型、独立的服务来提高系统的灵活性和可维护性。本文将探讨如何在微服务架构中有效部署和管理Web服务器实例,并提供一些实际的代码示例。
71 0
|
28天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
45 3
|
1月前
|
存储 Java Maven
从零到微服务专家:用Micronaut框架轻松构建未来架构
【9月更文挑战第5天】在现代软件开发中,微服务架构因提升应用的可伸缩性和灵活性而广受欢迎。Micronaut 是一个轻量级的 Java 框架,适合构建微服务。本文介绍如何从零开始使用 Micronaut 搭建微服务架构,包括设置开发环境、创建 Maven 项目并添加 Micronaut 依赖,编写主类启动应用,以及添加控制器处理 HTTP 请求。通过示例代码展示如何实现简单的 “Hello, World!” 功能,并介绍如何通过添加更多依赖来扩展应用功能,如数据访问、验证和安全性等。Micronaut 的强大和灵活性使你能够快速构建复杂的微服务系统。
64 5

热门文章

最新文章