【愚公系列】2022年07月 .NET架构班 084-微服务专题 Abp vNext微服务通信
前言
微服务之间的通信,需要根据业务需求和架构的实际情况选择合适的方案,基于HTTP的REST API是最常见的选择,但并不是唯一的选择,需要考虑复杂性、性能、可扩展性等方面的权衡。
微服务1和微服务2之间建立连接,然后通过连接,微服务1向微服务2请求数据。这就是微服务连接。
一、Abp vNext微服务通信
1.Syzm.BaseManager.HttpApi.Client项目准备
先创建基础信息详情聚合服务项目Syzm.BaseManager.HttpApi.Client
然后在Syzm.BaseManager.HttpApi.Client项目中,修改BaseManagerHttpApiClientModule类代码,如下:
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
namespace Syzm.BaseManager;
[DependsOn(
typeof(BaseManagerApplicationContractsModule),
typeof(AbpHttpClientModule))]
public class BaseManagerHttpApiClientModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddHttpClientProxies(
typeof(BaseManagerApplicationContractsModule).Assembly,
BaseManagerRemoteServiceConsts.RemoteServiceName
);
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<BaseManagerHttpApiClientModule>();
});
}
}
public class BaseManagerRemoteServiceConsts
{
public const string RemoteServiceName = "BaseManager";
public const string ModuleName = "baseManager";
}
RemoteServiceName = “BaseManager” 为基础信息微服务名称
2.Syzm.CMSDetailsServices项目准备
详细部署ABP web项目链接:https://codeboy.blog.csdn.net/article/details/122811497
先创建基础信息详情聚合服务项目Syzm.CMSDetailsServices
然后在Syzm.CMSDetailsServices项目中,引入Syzm.BaseManager.HttpApi.Client项目
然后在Syzm.CMSDetailsServices项目中,修改appsettings.json配置文件内容,新配置内容,如下:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"RemoteServices": {
"BaseManager": {
"BaseUrl": "http://localhost:44368/"
}
}
}
核心配置:
1、RemoteServices:配置基础信息微服务地址
2、BaseManager:为基础信息微服务名称
3、BaseUrl: “http://localhost:44368/” :为基础信息微服务具体地址
3.查询基础信息业务场景落地
3.1 基础信息微服务启动
输入命令:dotnet run
3.2 创建基础信息详情查询接口
先在Syzm.CMSDetailsServices项目中,创建Controllers文件夹,然后在Controllers中,创建CMSDetailsController类
然后在CMSDetailsController类中添加代码,如下:
using Microsoft.AspNetCore.Mvc;
using Syzm.BaseManager.BaseManager.Products;
namespace Syzm.CMSDetailsServices.Controllers
{
[ApiController]
[Route("api/CMSDetailsController/CMSDetails")]
public class CMSDetailsController : ControllerBase
{
private readonly ILogger<CMSDetailsController> _logger;
private IProductAppService _productAppService { set; get; }
public CMSDetailsController(ILogger<CMSDetailsController> logger, IProductAppService productAppService)
{
_logger = logger;
_productAppService = productAppService;
}
/// <summary>
/// 获取基础信息详情
/// </summary>
/// <returns></returns>
[HttpGet("{id}")]
public async Task<ProductDto> Get(Guid id)
{
// 1、查询基础信息
ProductDto productDto = await _productAppService.GetAsync(id);
// 2、返回基础信息
return productDto;
}
}
}
核心代码:
1、IProductAppService :由Syzm.BaseManager.HttpApi.Client提供的基础信息控制器操作接口。基础信息微服务提供
2、Get(Guid id):查询订单接口
3.3 创建订单接口访问
输入命令:dotnet run
然后在浏览器中,输入https://localhost:7265/swagger/index.html
核心解释:
1、CMSDetails:为基础信息详情模块
2、/api/CMSDetailsController/CMSDetails/{id}:为基础信息查询接口
3、然后访问/api/CMSDetailsController/CMSDetails/{id},输入基础信息Id:ce22f0e6-82b9-dcea-9fb8-3a04f3a5a59d。查询基础信息结果
如图所示:
- 点赞
- 收藏
- 关注作者
评论(0)