一、簡介
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
QQ群:1083795392