abp vNext微服务框架分析
abp vNext新框架的熱度一直都很高,于是最近上手將vNext的微服務Demo做了一番研究。我的體驗是,vNext的微服務架構確實比較成熟,但是十分難以上手,對于沒有微服務開發(fā)經驗的.net人員來說幾乎是看不懂的,所以研究一番后再這里做一些簡單的分析便于新手能夠快速理解并使用。
難點
在開始分析前先介紹下該框架中的難點,沒有微服務開發(fā)經驗的可能要對以下難點進行研究。
難點一:identity server4身份驗證框架,該框架是根據.net core identity身份機制擴展的框架,vNext微服務中身份驗證服務就是基于該框架。官方文檔:http://docs.identityserver.io/en/latest/
難點二:ocelot網關框架,vNext中使用該框架提供統(tǒng)一的網關地址,vNext中給網關進行了分類,分為內部網關、后臺管理網關、公共網關,這些網關分別代理了下游不同的微服務。官方文檔:https://ocelot.readthedocs.io/en/latest/
難點三:docker容器化管理,微服務開發(fā)中普遍應用到了容器化技術,基于該技術可實現(xiàn)快速構建和部署,大大提高微服務團隊協(xié)作效率,如果要選型微服務技術,該項難點必須攻克。
難點總結
以上列舉了vNext中重要的難點,其中identity server4身份服務是框架中最為重要的,也相當有難度。目前關于該框架的文檔還不是很多,所以想要使用vNext實際開發(fā),ids4框架應該首先研究。ocelot網關配置相對要簡單些,也沒有單獨的ocelot數(shù)據庫需要配置,只要配置好相應的下游微服務地址就可以了,上手比較快。docker容器和構建部署屬于DevOps,如果公司有錢可以買Azure服務器,Azure非常的專業(yè)但是價格昂貴,如果購買普通的云服務那就只有用Jenkins自己搭建了。
MicroserviceDemo服務分析
abp vNext微服務Demo提供多個公共微服務和一個產品服務,分別是身份授權服務(AuthServer),后臺管理網關服務(BackendAdminAppGateway),內部網關服務(InternalGateway),門戶網站網關服務(PublicWebSiteGateway),博客服務(BloggingService),用戶管理服務(IdentityService),產品服務(ProductService)。在這些服務的基礎上可以做各種業(yè)務開發(fā),目前vNext的文檔還不夠完善,建議業(yè)務開發(fā)暫時集成在產品服務中。下面開始為以上服務分別介紹,MicroserviceDemo中還有其他幾個服務,因為用不上所以就不介紹了。
服務分層
MicroserviceDemo對微服務進行了分層,分為微服務層(microservices)、網關層(gateways)、應用層(applications)和模塊層(modules)。
微服務層(microservices):
MicroserviceDemo微服務層中提供了三個微服務,分別是:IdentityService(用戶)、BloggingService(博客)、ProductService(產品)。IdentityService提供了用戶和角色信息管理,但是接口并不在該服務中,vNext將接口實現(xiàn)在底層module中,也就是volo包中,這種實現(xiàn)方式可能在以后的定制開發(fā)中有些不靈活。BloggingService服務提供了博客管理,管理接口也不再服務中實現(xiàn)。ProductService服務提供的是產品服務,同樣,該服務也沒有任何的接口實現(xiàn),只是將模塊層中product模塊的接口發(fā)布出來,相當于ProductManagement的Host宿主。
這三個微服務可以單獨部署,也可以通過docker集群部署,服務中發(fā)布的接口可以直接調用,但是建議不要單獨調用服務中的接口,最好通過網關調用。docker部署效果:
實際開發(fā)中這些工程基本無需改動,因為工程內沒有任何業(yè)務代碼,僅有全局Autofac依賴注入框架注冊和身份以及.net core管道注冊。
網關層(gateways):
gateway服務都是網關服務,如果要開發(fā)后臺管理系統(tǒng)(B端),只需提供auth-server和backend-adminapp-gateway端口給前端即可。public-website-gateway是門戶網站網關服務提供博客和前臺(C端)網站統(tǒng)一網關;internal-gateway是內部網關服務提供微服務系統(tǒng)調用,該服務并沒有提供api接口,僅僅在系統(tǒng)內部可以調用;backend-adminapp-gateway是后臺管理系統(tǒng)網關提供B端系統(tǒng)統(tǒng)一網關。網關的工程結構非常簡單,在了解ocelot配置后,對下游服務做好配置就可以使用。
應用層(applications):
MicroserviceDemo中還提供了簡單的應用服務實現(xiàn),分別是:AuthServer.Host(身份服務)、BackendAdminApp.Host(后端web應用)、ConsoleClientDemo(控制臺應用)、PublicWebSite.Host(公共web應用)。其中AuthServer最重要,也是整個微服務中的核心所在,AuthServer集成了identity server4框架,提供微服務統(tǒng)一的身份授權認證。AuthServer提供了簡單的登錄頁面和跳轉服務,但這些都是基于mvc開發(fā),如果想要改為spa開發(fā)就要對.net core身份機制和ids4框架十分了解。由于我打算直接改為spa項目,所以后面的應用就不再介紹了,如果對mvc比較有興趣的可以深入了解。
模塊層(modules)
模塊層中是業(yè)務代碼的實現(xiàn)層,該層中可以根據需要實現(xiàn)各種業(yè)務系統(tǒng),如CRM、OMS、ERP等等。模塊層使用的是ddd架構風格,和aspnet zero風格一致,有了ddd的保駕護航,相信后面的業(yè)務開發(fā)也會非常的順暢,后面我會介紹模塊中的實際業(yè)務開發(fā)。
?總結
到這里abp vNext微服務框架基本介紹完了,能夠成功的部署和實際開發(fā)說明的框架本身的完善和強大,最近也將vue-element-admin框架登錄與vNext接入了,后續(xù)會有更多完善的全端介紹,感興趣的朋友可以持續(xù)關注下。總之萬丈高樓平地起,只要想辦法就沒有實現(xiàn)不了的,對于想要進入微服務領域的.net攻城獅,abp vNext是學習的不二選擇。
原文鏈接:https://www.cnblogs.com/william-xu/p/11245738.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結
以上是生活随笔為你收集整理的abp vNext微服务框架分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 尝鲜体验 VS Code Python
- 下一篇: .NET Conf 2019日程(北京时