简介

服务通讯是微服务架构中必不可少的功能,服务通讯的效率决定了微服务架构的优略。常用的微服务通讯策略有两种,分别是rpc、http,其中rpc以gRpc框架为代表使用者最多。abp vNext微服务架构中当然也有服务通讯策略,采用的是http方式进行服务通讯。

gRpc和http对比

虽然gRpc高效安全,但是相关的.net框架实在臃肿难用,这一缺陷在.net core3.X后可能会得到完美解决。abp vNext微服务架构出现在.net core3.0以前,所以选择了灵活方便的http进行服务通讯。微服务通讯中http策略效率虽然低于gRpc,但是包装json后通过容器服务内部调用效率也是杠杠的。http作为服务通讯的最大好处是用户请求http api接口后,内部服务请求其他服务时会携带用户的http header(身份信息)。abp vNext微服务架构中使用ids4集成了统一的授权服务,所有接口授权均通过jwt-bearer形式,这种方式让http服务内部通讯策略的身份和权限验证变得简单方便。

abp vNext服务通讯

abp vNext微服务架构中提供了内部通讯网关(InternalGateway),所有内部服务接口调用均通过该网关服务。下面将介绍如何通过内部网关调用微服务接口。

step1:引用AbpHttpClientIdentityModelModule、AbpIdentityHttpApiClientModule模块

在ApplicationModule中添加AbpHttpClientIdentityModelModule、AbpIdentityHttpApiClientModule模块依赖,上述模块分别在Volo.Abp.Http.Client.IdentityModel、Volo.Abp.Identity.HttpApi.Client程序集,也可以直接引用nuget包。

step2:注入应用服务

以用户应用服务为例,微服务某应用服务中构造注入IIdentityUserAppService

private readonly IIdentityUserAppService _userAppService;

step3:调用接口

在应用服务接口中调用用户应用服务接口:

var user = await _userAppService.GetAsync(per.UserID);

step4:配置远程服务接口

配置微服务中远程服务地址,远程服务就是内部网关地址。

 测试接口

尽管接口查询业务比较复杂,而且经过远程服务接口调用,但是postman测试接口时间在100ms内,总的来说性能优越。

总结

以上介绍了abp vNext微服务架构中的服务通讯和微服务接口调用方式,通过测试表明abp vNext微服务通讯性能可靠,而且通过内部网关分发的api接口都需要身份和权限验证,保证了微服务通讯的安全。总结abp vNext服务通讯的优点如下:

1、简单,通过以上操作可以看出,abp vNext中的微服务接口调用十分简单,就像普通的仓储调用一样。

2、高效,虽然http方式的服务通讯效率低于pRpc框架,但是json包装后的http请求速度也非常可观。

3、安全,相比gRpc框架,使用http进行服务通讯时会验证身份和权限,保证了微服务的通讯安全。

最近ABP发布了1.0版本,想要转型微服务的盆友感觉get起来吧。

文章目录:https://www.cnblogs.com/william-xu/p/12047529.html

[Abp vNext微服务实践] - 服务通讯的更多相关文章

  1. [Abp vNext微服务实践] - 文章目录

    简介 ABP vNext是volosoft的新一代框架,ABP(vNext)完全使用.NET CORE和DDD(领域驱动)打造,目前GitHub已有6K+次提交,发布版本超过40次,Nuget包下载量 ...

  2. [Abp vNext微服务实践] - 前后端分类

    一.前景 abp vNext是ABP 开源 Web应用程序框架,是abp的新一代开源web框架.框架完美的集成.net core.identity server4等开源框架,适用于构建web应用程序和 ...

  3. [Abp vNext微服务实践] - 框架分析

    一.简介 abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究.我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.n ...

  4. [Abp vNext微服务实践] - 租户登录

    简介 Abp vNext微服务授权验证基于ids4,实现租户登录需要在授权服务中获取token,和之前的介绍的登录方式一样,只是多了tenant参数.本篇将介绍在Abp vNext授权服务中启用多租户 ...

  5. [Abp vNext微服务实践] - 添加中文语言

    简介 abp vNext中提供了多语言功能,默认语言是英文,没有提供中文语言包.在业务开发中,定义权限后需要用中文的备注提供角色选择,本篇将介绍如何在abp vNext中加入中文语言. step1:添 ...

  6. [Abp vNext微服务实践] - vue-element-admin管理Identity

    一.简介 abp vNext微服务框架中已经提供通用权限和用户角色管理模块,管理UI使用的是MVC模式,不适用于国内主打的MVVM开发模式.在前端框架选型后笔者决定改造abp vNext微服务框架中原 ...

  7. [Abp vNext微服务实践] - 启动流程

    前几篇分别介绍了abp vNext微服务框架和微服务CI/CD环境搭建,本篇开始介绍vNext微服务框架的开发环境搭建. 环境准备 官方介绍的系统架构图如下: 上图中身份服务和网关服务已经集成在系统中 ...

  8. [Abp vNext微服务实践] - 业务开发

    前几篇分别介绍了abp vNext微服务框架.开发环境搭建和vue element admin前端框架接入,在vue element admin中实现用户角色管理基本功能后就可以开始进行业务开发了,本 ...

  9. abp vNext微服务框架分析

    本文转载自:https://www.cnblogs.com/william-xu/p/11245738.html abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了 ...

随机推荐

  1. 让IIS支持解析.json格式文件

    原文出处链接及本声明. 原文链接:https://blog.csdn.net/jumtre/article/details/72630730 1.IIS内点击网站进入网站主页设置界面: 2.双击MIM ...

  2. Jmeter 逻辑控制器 之 交替控制器

    马上国庆节了,没有安排新版本的上线任务,所以最近自学时间比较充裕,决定把Jmeter好好学习学习,并把学习过程分享到博客中,今天呢,学习交替控制器. 一.认识交替控制器 如下,在线程组下面创建一个交替 ...

  3. Python 零基础知识学习

      在开始学习Python之前,首先进入python shell ,输入:import this 命令,如下图所示: Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Py ...

  4. 双目结构光三维扫描仪获得的三维点云模型(GIF)

  5. centOS7下的静态Ip的配置。

    centOS7下NAT的静态网卡的配置 最近在cenOS7下搭建大数据,发现centOS7配置静态ip的必要性.这篇博文就来谈谈如何VM虚拟机中配置centOS7的静态ip.如有不足,还望志同道合者纠 ...

  6. 《精通并发与Netty》学习笔记(10 - 详解NIO (一) Channel、Buffer )

    一.Java NIO 概述 Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Bu ...

  7. Hbase 学习记录

    说明: 公司最近要使用HBase 用于(冷)历史数据 存储,和简单离线计算.在一次讨论会上,我发表意见,为什么把近期数据流程热点数据库中,并且继续异步流入到 历史数据库HBase 里面.提供高效查询等 ...

  8. CVPapers - Computer Vision Resource

    To add links (PDF, project,...) you can use the online tool. Computer Vision Paper Indexes ICCV:  20 ...

  9. elasticsearch备份脚本

    1.主要文件 [root@k8s elasticsearch]# tree . ├── backup_es.sh ├── indices_file.txt ├── recover_es.sh └── ...

  10. IO阻塞模型、IO非阻塞模型、多路复用IO模型

    IO操作主要包括两类: 本地IO 网络IO 本地IO:本地IO是指本地的文件读取等操作,本地IO的优化主要是在操作系统中进行,我们对于本地IO的优化作用十分有限 网络IO:网络IO指的是在进行网络操作 ...