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