一、简介

abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究。我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.net人员来说几乎是看不懂的,所以研究一番后再这里做一些简单的分析便于新手能够快速理解并使用。

二、难点

在开始分析前先介绍下该框架中的难点,没有微服务开发经验的可能要对以下难点进行研究。

难点分析

难点一:identity server4身份验证框架,该框架是根据.net core identity身份机制扩展的框架,vNext微服务中身份验证服务就是基于该框架。官方文档:http://docs.identityserver.io/en/latest/

难点二:ocelot网关框架,vNext中使用该框架提供统一的网关地址,vNext中给网关进行了分类,分为内部网关、后台管理网关、公共网关,这些网关分别代理了下游不同的微服务。官方文档:https://ocelot.readthedocs.io/en/latest/

难点三:docker容器化管理,微服务开发中普遍应用到了容器化技术,基于该技术可实现快速构建和部署,大大提高微服务团队协作效率,如果要选型微服务技术,该项难点必须攻克。

难点总结

以上列举了vNext中重要的难点,其中identity server4身份服务是框架中最为重要的,也相当有难度。目前关于该框架的文档还不是很多,所以想要使用vNext实际开发,ids4框架应该首先研究。ocelot网关配置相对要简单些,也没有单独的ocelot数据库需要配置,只要配置好相应的下游微服务地址就可以了,上手比较快。docker容器和构建部署属于DevOps,如果公司有钱可以买Azure服务器,Azure非常的专业但是价格昂贵,如果购买普通的云服务那就只有用Jenkins自己搭建了。

三、MicroserviceDemo微服务架构分析

abp vNext微服务Demo提供多个公共微服务和一个产品服务,分别是身份授权服务(AuthServer),后台管理网关服务(BackendAdminAppGateway),内部网关服务(InternalGateway),门户网站网关服务(PublicWebSiteGateway),博客服务(BloggingService),用户管理服务(IdentityService),产品服务(ProductService)。在这些服务的基础上可以做各种业务开发,目前vNext的文档还不够完善,建议业务开发暂时集成在产品服务中。下面开始为以上服务分别介绍,MicroserviceDemo中还有其他几个服务,因为用不上所以就不介绍了。

服务分层

MicroserviceDemo对微服务进行了分层,分为微服务层(microservices)、网关层(gateways)、应用层(applications)和模块层(modules)。

微服务层(microservices):

MicroserviceDemo微服务层中提供了三个微服务,分别是:IdentityService(用户)、BloggingService(博客)、ProductService(产品)。IdentityService提供了用户和角色信息管理,但是接口并不在该服务中,vNext将接口实现在底层module中,也就是volo包中,这种实现方式可能在以后的定制开发中有些不灵活。BloggingService服务提供了博客管理,管理接口也不再服务中实现。ProductService服务提供的是产品服务,同样,该服务也没有任何的接口实现,只是将模块层中product模块的接口发布出来,相当于ProductManagement的Host宿主。

这三个微服务可以单独部署,也可以通过docker集群部署,服务中发布的接口可以直接调用,但是建议不要单独调用服务中的接口,最好通过网关调用。docker部署效果:

实际开发中这些工程基本无需改动,因为工程内没有任何业务代码,仅有全局Autofac依赖注入框架注册和身份以及.net core管道注册。

网关层(gateways):

gateway服务都是网关服务,如果要开发后台管理系统(B端),只需提供auth-server和backend-adminapp-gateway端口给前端即可。public-website-gateway是门户网站网关服务提供博客和前台(C端)网站统一网关;internal-gateway是内部网关服务提供微服务系统调用,该服务并没有提供api接口,仅仅在系统内部可以调用;backend-adminapp-gateway是后台管理系统网关提供B端系统统一网关。网关的工程结构非常简单,在了解ocelot配置后,对下游服务做好配置就可以使用。

应用层(applications):

MicroserviceDemo中还提供了简单的应用服务实现,分别是:AuthServer.Host(身份服务)、BackendAdminApp.Host(后端web应用)、ConsoleClientDemo(控制台应用)、PublicWebSite.Host(公共web应用)。其中AuthServer最重要,也是整个微服务中的核心所在,AuthServer集成了identity server4框架,提供微服务统一的身份授权认证。AuthServer提供了简单的登录页面和跳转服务,但这些都是基于mvc开发,如果想要改为spa开发就要对.net core身份机制和ids4框架十分了解。由于我打算直接改为spa项目,所以后面的应用就不再介绍了,如果对mvc比较有兴趣的可以深入了解。

模块层(modules)

模块层中是业务代码的实现层,该层中可以根据需要实现各种业务系统,如CRM、OMS、ERP等等。模块层使用的是ddd架构风格,和aspnet zero风格一致,有了ddd的保驾护航,相信后面的业务开发也会非常的顺畅,后面我会介绍模块中的实际业务开发。

四、总结

到这里abp vNext微服务框架基本介绍完了,能够成功的部署和实际开发说明的框架本身的完善和强大,最近也将vue-element-admin框架登录与vNext接入了,后续会有更多完善的全端介绍,感兴趣的朋友可以持续关注下。总之万丈高楼平地起,只要想办法就没有实现不了的,对于想要进入微服务领域的.net攻城狮,abp vNext是学习的最佳选择。

文章目录: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微服务实践] - 服务通讯

    简介 服务通讯是微服务架构中必不可少的功能,服务通讯的效率决定了微服务架构的优略.常用的微服务通讯策略有两种,分别是rpc.http,其中rpc以gRpc框架为代表使用者最多.abp vNext微服务 ...

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

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

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

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

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

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

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

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

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

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

  9. [Abp vNext微服务实践] - vue-element-admin登录二

    简介: Vue Element Admin是基于vue.element ui开发的后台管理ui,abp vNext是abp新一代微服务框架.本篇将会介绍如何改造Vue Element Admin权限验 ...

随机推荐

  1. 对于新手用c#中的delegate(委托)和event(事件)

    一.delegate到底是什么东西 delegate允许你传递一个类A的方法m给另一个类B的对象,使得类B的对象能够调用这个方法m,说白了就是可以把方法当作参数传递.delegate既可以引用静态函数 ...

  2. 测试框架nunit之assertion断言使用详解

    任何xUnit工具都使用断言进行条件的判断,NUnit自然也不例外,与其它的xUnit(如Junit.phpUnit.pythonUnit)相比,由于大量使用了Generic.Attribute等语言 ...

  3. H310C,B365,M.2 NVME SSD,USB3.0,安装 WIN7 64 位

    华擎H310CM ITX NVME SSD 上安装WIN7 64位 核心关键点:xHCI USB3.0驱动,nvme驱动,nvme win7补丁. 硬件配置:I5 9400F, 华擎H310CM IT ...

  4. 【tensorflow】softmax_cross_entropy_with_logits与sparse_softmax_cross_entropy_with_logits

    softmax_cross_entropy_with_logits与sparse_softmax_cross_entropy_with_logits都是对最后的预测结果进行softmax然后求交叉熵 ...

  5. 【GStreamer开发】GStreamer基础教程14——常用的element

    目标 本教程给出了一系列开发中常用的element.它们包括大杂烩般的eleemnt(比如playbin2)以及一些调试时很有用的element. 简单来说,下面用gst-launch这个工具给出一个 ...

  6. windows环境下安装: VMware 15 + centos 7

    第一步: 下载 centos7  http://isoredirect.centos.org/centos/7/isos/x86_64/ 选择阿里云镜像下载,速度最快 注意: 尽量使用下载工具下载, ...

  7. layui开关switch显示不全问题

    先看效果: 开关显示不全,高度也不对称. 解决: 在所用到的html/jsp中自己加css .layui-form-switch { width: 52px; height: 23px; } 再看效果 ...

  8. AndFix Bug 热修复框架原理及源码解析

    作为阿里巴巴开源的 Android 应用热修复工具——AndFix,帮助 Anroid 开发者修复应用的线上问题.Andfix 是 “Android hot-fix” 的缩写. 1.什么是AndFix ...

  9. os删除文件或者文件夹

    最近在使用os.remove删除目录时报错了,这里记录下os操作文件或者目录的常用方法 递归删除文件或文件夹 import shutil shutil.rmtree() 文件的重命名 os.renam ...

  10. jar 常用操作

    查看 jar 包中的文件列表,并进行重定向 jar -tvf a.jar > a.txt 更新文件到 jar 中,目录需对应 jar -uf a.jar com/a.class a.class ...