【转】abp vNext微服务框架分析
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是学习的不二选择。
【转】abp vNext微服务框架分析相关推荐
- abp vNext微服务框架分析
abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究.我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.net人员来 ...
- ABP vNext微服务架构详细教程——结束语
ABP vNext微服务架构详细教程--简介 ABP vNext微服务架构详细教程--架构介绍 ABP vNext微服务架构详细教程--身份管理服务 ABP vNext微服务架构详细教程--基础服务层 ...
- ABP vNext微服务架构详细教程——分布式权限框架(上)
1 简介 ABP vNext框架本身提供了一套权限框架,其功能非常丰富,具体可参考官方文档:https://docs.abp.io/en/abp/latest/Authorization 但是我们使用 ...
- ABP vNext微服务架构详细教程——项目部署
1 基础配置 在之前的文章中,我们已经配置了Kubernetes集群并安装了管理工具Kubesphere,文章地址为:https://mp.weixin.qq.com/s/MgpdMv5A-fYxN7 ...
- ABP vNext微服务架构详细教程——身份管理服务
1 框架搭建 ABP vNext创建包含app和module两种模板,其中app方式所创建的模板包含用户.角色.权限管理,ABP基础配置IdentityServer的基础配置数据等功能.module模 ...
- ABP vNext微服务架构详细教程——基础服务层
1 服务创建 在除身份管理相关服务以外的其他业务服务中,我们不需要包含用户角色权限管理功能模块,ABP vNext框架为我们提供了模块模式,其默认模板不包含身份管理相关模块,更适合用于搭建普通的业务微 ...
- ABP vNext微服务架构详细教程——架构介绍
总体架构 所有应用服务.API网关.身份认证服务均部署在Kubernetes容器中,由Kubernetes提供应用配置.服务治理.服务监控等功能. 客户端所有访问均通过Kubernetes的Nginx ...
- ABP vNext微服务架构详细教程——简介
简介 该系列文章主要展示ABP vNext框架在微服务架构下的用法,提供一套可落地的技术实现思路,并演示各服务在Kubernetes下的部署方案. 基础概念 ABP vNext 基于ASP.NET C ...
- ABP VNext 微服务演示,项目状态和路线图
在ABP vNext上的第一个公告之后,我们对代码库进行了很多改进(GitHub存储库上的1100多次提交).我们已经创建了功能,示例,文档等等.在这篇文章中,我想告诉你一些新闻和项目的状态. ABP ...
最新文章
- 牛X,一系列Chrome 灵魂插件!爱了爱了!
- 战友!6.19决战光荣日,一个真实的魔兽世界在等你!
- aws lambda_API网关和AWS Lambda进行身份验证
- C++ STL之Vector
- SpringMVC 异步交互 AJAX 文件上传
- JSP的4大域对象及范围(简)
- python3.1415926_Python3中操作字符串str必须记住的几个方法
- java控制台通讯录
- AEJoy —— 表达式之通过 sampleImage() 营造遮蔽效果【JS】
- Python进行Excel数据处理
- 数字音频压缩技术的历史及其发展现状
- 传奇服务器端显示时间问题,架设传奇出现is not a valid date and time时间错误
- 数据挖掘工具---Spark SQL使用
- Python智能机器人2(电脑应用的使用,聊天等功能)
- python-docx 修改word中文字和图片段落的行距
- 电子邮件成为当下网络攻击的主要传播途径
- 构建 WCF 路由器 part 2 from MSDN
- c语言可以设计那些游戏,语言游戏设计(c语言怎样设计游戏)
- patchca实现验证码验证
- 水利工程资料用什么软件
热门文章
- 《App后台开发运维与架构实践》第2章 App后台基础技术
- JavaScript——执行环境、变量对象、作用域链
- 如何:创建公钥/私钥对
- jQuery 事件 - bind() 方法
- MVC — 初步理解IIS工作流程
- 《BI项目笔记》多维数据集中度量值设计时的聚合函数
- svn在linux下的使用(svn命令行)ubuntu 删除 新增 添加 提交 状态查询 恢复
- 1143. Lowest Common Ancestor
- brew 安装 mysql5.7_Mac——brew替换源地址安装配置mysql@5.7版本
- tensorflow 指定cpu 但是还会运行 gpu_PyTorch VS TensorFlow 谁最强?这是标星 15000+ Transformers 库的运行结果...