<sub id="bnhh1"></sub>

        <sub id="bnhh1"></sub>

        <sub id="bnhh1"></sub>
        <thead id="bnhh1"></thead>
        <sub id="bnhh1"></sub>

        abp vNext中的微服务通讯

        简介

        服务通讯是微服务架构中必不可少的功能,服务通讯的效率决定了微服务架构的优略。常用的微服务通讯策略有两种,分别是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服务内部通讯策略的身份和权限验证变得简单方便,可以说 "用户的请求-->接口身份和权限验证-->微服务接口身份和权限验证" 从始而终一气呵成,不用在服务通讯时构造token或者重新验证用户。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起来吧。

        相关文章
        相关标签/搜索
        4949天空彩与你同行小说 徐闻县| 宁明县| 昭通市| 孙吴县| 临朐县| 屯门区| 双牌县| 定远县| 尖扎县| 武强县| 孝昌县| 从江县| 阿勒泰市| 名山县| 敦煌市| 钟祥市| 吉林省| 德钦县| 鄂州市| 定西市| 宿松县| 南川市| 永年县| 衡山县| 鄄城县| 大新县| 慈利县| 郁南县| 郓城县| 宁阳县| 集安市| 家居| 平南县| 广德县| 西宁市| 临湘市| 洛浦县| http://fa.hz0j2r8vo.fun http://fa.hz0j1r7vo.fun http://fa.hz0j2r0vo.fun http://fa.hz0j1r1vo.fun http://fa.hz0j2r9vo.fun