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/11245738.html
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com