abp vNext微服務框架分析

1、簡介

abp vNext新框架的熱度一直都很高,因而最近上手將vNext的微服務Demo作了一番研究。個人體驗是,vNext的微服務架構確實比較成熟,可是十分難以上手,對於沒有微服務開發經驗的.net人員來講幾乎是看不懂的,因此研究一番後再這裏作一些簡單的分析便於新手可以快速理解並使用。前端

2、難點

在開始分析前先介紹下該框架中的難點,沒有微服務開發經驗的可能要對如下難點進行研究。vue

難點分析

難點一:identity server4身份驗證框架,該框架是根據.net core identity身份機制擴展的框架,vNext微服務中身份驗證服務就是基於該框架。官方文檔:http://docs.identityserver.io/en/latest/web

難點二:ocelot網關框架,vNext中使用該框架提供統一的網關地址,vNext中給網關進行了分類,分爲內部網關、後臺管理網關、公共網關,這些網關分別代理了下游不一樣的微服務。官方文檔:https://ocelot.readthedocs.io/en/latest/docker

難點三:docker容器化管理,微服務開發中廣泛應用到了容器化技術,基於該技術可實現快速構建和部署,大大提升微服務團隊協做效率,若是要選型微服務技術,該項難點必須攻克。數據庫

難點總結

以上列舉了vNext中重要的難點,其中identity server4身份服務是框架中最爲重要的,也至關有難度。目前關於該框架的文檔還不是不少,因此想要使用vNext實際開發,ids4框架應該首先研究。ocelot網關配置相對要簡單些,也沒有單獨的ocelot數據庫須要配置,只要配置好相應的下游微服務地址就能夠了,上手比較快。docker容器和構建部署屬於DevOps,若是公司有錢能夠買Azure服務器,Azure很是的專業可是價格昂貴,若是購買普通的雲服務那就只有用Jenkins本身搭建了。後端

3、MicroserviceDemo微服務架構分析

abp vNext微服務Demo提供多個公共微服務和一個產品服務,分別是身份受權服務(AuthServer),後臺管理網關服務(BackendAdminAppGateway),內部網關服務(InternalGateway),門戶網站網關服務(PublicWebSiteGateway),博客服務(BloggingService),用戶管理服務(IdentityService),產品服務(ProductService)。在這些服務的基礎上能夠作各類業務開發,目前vNext的文檔還不夠完善,建議業務開發暫時集成在產品服務中。下面開始爲以上服務分別介紹,MicroserviceDemo中還有其餘幾個服務,由於用不上因此就不介紹了。api

服務分層

MicroserviceDemo對微服務進行了分層,分爲微服務層(microservices)、網關層(gateways)、應用層(applications)和模塊層(modules)。服務器

微服務層(microservices):

MicroserviceDemo微服務層中提供了三個微服務,分別是:IdentityService(用戶)、BloggingService(博客)、ProductService(產品)。IdentityService提供了用戶和角色信息管理,可是接口並不在該服務中,vNext將接口實如今底層module中,也就是volo包中,這種實現方式可能在之後的定製開發中有些不靈活。BloggingService服務提供了博客管理,管理接口也再也不服務中實現。ProductService服務提供的是產品服務,一樣,該服務也沒有任何的接口實現,只是將模塊層中product模塊的接口發佈出來,至關於ProductManagement的Host宿主。架構

這三個微服務能夠單獨部署,也能夠經過docker集羣部署,服務中發佈的接口能夠直接調用,可是建議不要單獨調用服務中的接口,最好經過網關調用。docker部署效果:mvc

實際開發中這些工程基本無需改動,由於工程內沒有任何業務代碼,僅有全局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的保駕護航,相信後面的業務開發也會很是的順暢,後面我會介紹模塊中的實際業務開發。

 4、總結

到這裏abp vNext微服務框架基本介紹完了,可以成功的部署和實際開發說明的框架自己的完善和強大,最近也將vue-element-admin框架登陸與vNext接入了,後續會有更多完善的全端介紹,感興趣的朋友能夠持續關注下。總之萬丈高樓平地起,只要想辦法就沒有實現不了的,對於想要進入微服務領域的.net攻城獅,abp vNext是學習的最佳選擇。

相關文章
相關標籤/搜索