BCVP开发者说第3期:Adnc
沉靜歲月,淡忘流年
1
項目簡介
Adnc
??? Adnc是一個輕量級的.NetCore微服務(wù)快速開發(fā)框架,同時也可以應(yīng)用于單體架構(gòu)系統(tǒng)的開發(fā)。框架基于JWT認證授權(quán)、集成了一系列微服務(wù)配套組件,代碼簡潔、易上手、學習成本低、開箱即用。
????框架前端基于Vue、后端服務(wù)基于.NetCore3.1搭建,也是一個前后端分離的框架。webapi遵循RESTful風格,框架包含用戶、角色、權(quán)限、部門管理;字典、配置管理;登錄、審計、異常日志管理等基礎(chǔ)的后臺管理模塊。
????框架對配置中心、依賴注入、日志、緩存、模型映射、認證/授權(quán)、倉儲、服務(wù)注冊/發(fā)現(xiàn)、健康檢測、性能與鏈路監(jiān)測、隊列、ORM、EventBus等模塊進行更高一級的自動化封裝,更易于開發(fā)Asp.NET Core微服務(wù)項目。
原項目地址:
https://github.com/AlphaYu/Adnc
作者博客:
https://www.cnblogs.com/alphayu
2
框架功能
?
在線項目演示:
http://adnc.aspdotnetcore.net
賬號:alpha2008
密碼:alpha2008
?(登錄頁面)
(健康檢測中心)
(操作日志)
(性能鏈路檢測)
用戶中心
? 1、用戶管理
? 2、角色管理
? 3、菜單管理
? 4、部門管理
運維中心
? 1、性能鏈路監(jiān)測
? 2、接口文檔
? 3、健康檢查
? 4、事件總線
? 5、字典管理
? 6、參數(shù)管理
? 7、任務(wù)管理
? 8、登錄日志
? 9、操作日志
3
框架技術(shù)棧
(系統(tǒng)所用到的技術(shù)棧)
ServerApi基于.NET CORE 3.1搭建。
后端主要技術(shù)棧
| Ocelot | 基于 .NET Core 編寫的開源網(wǎng)關(guān) |
| Consul | 配置中心、注冊中心組件 |
| Refit | 一個聲明式自動類型安全的RESTful服務(wù)調(diào)用組件,用于同步調(diào)用其他微服務(wù) |
| SkyAPM.Agent.AspNetCore | Skywalking .NET Core探針,性能鏈路監(jiān)測組件 |
| AspNetCore.HealthChecks | 健康監(jiān)測組件,搭配consul的健康監(jiān)測 |
| Autofac | IOC容器組件 |
| Autofac.Extras.DynamicProxy | Autfac AOP擴展 |
| Efcore | 微軟的ORM組件 |
| Dapper | 輕量級ORM組件 |
| Z.EntityFramework.Plus.EFCore | 第三方高性能的EfCore組件 |
| NLog | 日志記錄組件 |
| AutoMapper | 模型映射組件 |
| Swashbuckle.AspNetCore | APIs文檔生成工具(swagger) |
| EasyCaching | 實現(xiàn)了一、二級緩存管理的一個開源的組件 |
| CAP | 實現(xiàn)事件總線及最終一致性(分布式事務(wù))的一個開源的組件 |
| RabbitMq | 異步消息隊列組件 |
| Polly | 一個 .NET 彈性和瞬態(tài)故障處理庫,允許開發(fā)人員以 Fluent 和線程安全的方式來實現(xiàn)重試、斷路、超時、隔離和回退策略 |
4
分層介紹
????
整體架構(gòu)圖
Adnc.Infras 基礎(chǔ)架構(gòu)相關(guān)工程
Adnc.Portal 微服務(wù)相關(guān)工程
Adnc.Infras 基礎(chǔ)架構(gòu)相關(guān)工程
01.Adnc.WebApi.Shared
該層實現(xiàn)了認證、鑒權(quán)、異常捕獲等公共類和中間件。所有微服務(wù)WebApi層的共享層,并且都需要依賴該層。
02.Adnc.Application.Shared
該層定義了DTO對象的基類、Rpc服務(wù)通用服務(wù)、應(yīng)用服務(wù)類基類以及操作日志攔截器。所有微服務(wù)Application層的共享層,并且都需要依賴該層。
03.Adnc.Core.Shared
該層定義了Entity對象的基類、業(yè)務(wù)服務(wù)接口基類、UOW接口與攔截器、倉儲接口、以及處理本地事務(wù)與分布式事務(wù)。所有微服務(wù)Core層的共享層,并且都需要依賴該層。
04.Adnc.Infr.Common
該層實現(xiàn)了一些通用幫助類。該層不依賴任何層。
10.Adnc.Infr.Gateway
該層是一個輸出項目,基于Ocelot實現(xiàn)的Api網(wǎng)關(guān),如果項目采用整體結(jié)構(gòu)開發(fā),該項目可以直接刪除。ocelot網(wǎng)關(guān)包含路由、服務(wù)聚合、服務(wù)發(fā)現(xiàn)、認證、鑒權(quán)、限流、熔斷、緩存、Header頭傳遞等功能。市面上主流網(wǎng)關(guān)還有Kong,Traefik,Ambassador,Tyk等。
11.Adnc.Infr.HealthCheckUI
該層是一個輸出項目, AspNetCore.HealthChecks組件的Dashboard,直接配置需要監(jiān)測的服務(wù)地址就可以了,沒有代碼,關(guān)鍵的代碼參考webapi層的AddHealthChecks()方法。
20.Adnc.Infr.Consul
該層集成了Consul,提供服務(wù)的自動注冊、發(fā)現(xiàn)以及系統(tǒng)配置讀寫。
21.Adnc.Infr.EasyCaching
該層集成了EasyCaching,負責一、二級緩存的管理,并重寫了EasyCaching攔截器部分代碼。
22.Adnc.Infr.EfCore
該層負責Adnc.Core.Shared倉儲接口與Uow的EfCore的實現(xiàn),負責mysql數(shù)據(jù)庫的操作。同時也集成了Dapper部分接口,用來處理復雜查詢。
23.Adnc.Infr.Mongo
該層負責Adnc.Core.Shared倉儲接口的Mongodb實現(xiàn),負責mongodb數(shù)據(jù)庫的操作。
24.Adnc.Infr.RabbitMq
該層集成了RabbitMq。封裝了發(fā)布者與訂閱者等公共類,方便更加便捷的調(diào)用rabbitmq。
Adnc.Portal 微服務(wù)相關(guān)工程
該層都是具體微服務(wù)業(yè)務(wù)的實現(xiàn)。
Adnc.Usr 用戶中心微服務(wù),實現(xiàn)了用戶、角色、權(quán)限、部門管理。
Adnc.Maint 運維中心微服務(wù),實現(xiàn)了登錄、審計、異常日志管理以及一些配套組件的外鏈。
Adnc.Cus 客戶中心微服務(wù),該層主要是一些demo。
每個微服務(wù)的Migrations層是Efcore用來做數(shù)據(jù)遷移的,遷移的日志文件存放在各自Migrations目錄中。
基于Net/Core,快速搭建 API & SPA 及微服務(wù)應(yīng)用組織
BASE NETCORE (VUE) PROJECT TEAM
每一個.NET開發(fā)者都可以通過自己的開源項目(最好可以配套簡單發(fā)表些文章)在這里進行分享,BCVP開發(fā)者組織的意義就是激發(fā)和挖掘更多的作品,可能偏基礎(chǔ),但是都會有價值。目的就是希望:每個人能將從社區(qū)學到的知識,進行自己消化和總結(jié),濃縮成一個個獨立的項目,接著投入到社區(qū),最后讓更多的初學者去了解、去學習、去思想碰撞,從而達到學習來源于社區(qū),最后反哺于社區(qū)的良好循環(huán)目的,我們都是學生,也都是下一批初學者的老師,這才應(yīng)該是一個社區(qū)正向推動的方法。
地址:
https://github.com/BaseCoreVueProject
可以在Home倉庫里,查看具體的流程說明,只要你愿意分享,就來吧。
加入我們
總結(jié)
以上是生活随笔為你收集整理的BCVP开发者说第3期:Adnc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 真实经历:整整一年了,他是这样从程序员转
- 下一篇: Kuma 1.0 GA发布,70多项新功