abp vNext微服務框架分析

2022-06-13 13:00:14 字數 1711 閱讀 3058

本文**自:

abp vnext新框架的熱度一直都很高,於是最近上手將vnext的微服務demo做了一番研究。我的體驗是,vnext的微服務架構確實比較成熟,但是十分難以上手,對於沒有微服務開發經驗的.net人員來說幾乎是看不懂的,所以研究一番後再這裡做一些簡單的分析便於新手能夠快速理解並使用。

難點

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

難點一:identity server4身份驗證框架,該框架是根據.net core identity身份機制擴充套件的框架,vnext微服務中身份驗證服務就是基於該框架。官方文件:

難點二:ocelot閘道器框架,vnext中使用該框架提供統一的閘道器位址,vnext中給閘道器進行了分類,分為內部閘道器、後台管理閘道器、公共閘道器,這些閘道器分別**了下游不同的微服務。官方文件:

難點三:docker容器化管理,微服務開發中普遍應用到了容器化技術,基於該技術可實現快速構建和部署,大大提高微服務團隊協作效率,如果要選型微服務技術,該項難點必須攻克。

難點總結

以上列舉了vnext中重要的難點,其中identity server4身份服務是框架中最為重要的,也相當有難度。目前關於該框架的文件還不是很多,所以想要使用vnext實際開發,ids4框架應該首先研究。ocelot閘道器配置相對要簡單些,也沒有單獨的ocelot資料庫需要配置,只要配置好相應的下游微服務位址就可以了,上手比較快。docker容器和構建部署屬於devops,如果公司有錢可以買azure伺服器,azure非常的專業但是**昂貴,如果購買普通的雲服務那就只有用jenkins自己搭建了。

microservicedemo服務分析

服務分層

微服務層(microservices):

microservicedemo微服務層中提供了三個微服務,分別是:identityservice(使用者)、bloggingservice(部落格)、productservice(產品)。identityservice提供了使用者和角色資訊管理,但是介面並不在該服務中,vnext將介面實現在底層module中,也就是volo包中,這種實現方式可能在以後的定製開發中有些不靈活。bloggingservice服務提供了部落格管理,管理介面也不再服務中實現。productservice服務提供的是產品服務,同樣,該服務也沒有任何的介面實現,只是將模組層中product模組的介面發布出來,相當於productmanagement的host宿主。

這三個微服務可以單獨部署,也可以通過docker集群部署,服務中發布的介面可以直接呼叫,但是建議不要單獨呼叫服務中的介面,最好通過閘道器呼叫。docker部署效果:

實際開發中這些工程基本無需改動,因為工程內沒有任何業務**,僅有全域性autofac依賴注入框架註冊和身份以及.net core管道註冊。

閘道器層(gateways):

模組層(modules)

模組層中是業務**的實現層,該層中可以根據需要實現各種業務系統,如crm、oms、erp等等。模組層使用的是ddd架構風格,和aspnet zero風格一致,有了ddd的保駕護航,相信後面的業務開發也會非常的順暢,後面我會介紹模組中的實際業務開發。

總結

Abp vNext微服務實踐 服務通訊

服務通訊是微服務架構中必不可少的功能,服務通訊的效率決定了微服務架構的優略。常用的微服務通訊策略有兩種,分別是rpc http,其中rpc以grpc框架為代表使用者最多。abp vnext微服務架構中當然也有服務通訊策略,採用的是http方式進行服務通訊。雖然grpc高效安全,但是相關的.net框架...

微服務框架之SpringBoot分析

實現類會在refresh方法重新整理上下文前,準備上下文時呼叫,且通過order註解進行排序 事件型別匹配方式 原理 通過 對應的事件型別和傳入的事件型別進行匹配,進行獲取到對應的 進行執行 事件傳送順序 starting environmentprepared contextinitialized...

Abp vNext微服務實踐 新增中文語言

abp vnext中提供了多語言功能,預設語言是英文,沒有提供中文語言包。在業務開發中,定義許可權後需要用中文的備註提供角色選擇,本篇將介紹如何在abp vnext中加入中文語言。在zh.json中給許可權定義新增中文描述,json如下 在vs中選擇高階儲存 utf 8儲存。在productmana...