原创 造輪子之集成GraphQL

先簡單對比以下GraphQL和WebAPI:GraphQL和Web API(如RESTful API)是用於構建和提供Web服務的不同技術。 數據獲取方式: Web API:通常使用RESTful API,客戶端通過發送HTTP請求(

原创 造輪子之種子數據

在前面我們基本把應用框架的基礎設施搭建完成。接下來我們就得着手處理一下種子數據的問題。在一個基礎框架裏面,種子數據很重要,比如一些基礎數據,初始用戶等等,這些都需要初始化,否則程序啓動卻無法使用就很尷尬了。 IDataSeeder 首先定

原创 造輪子之消息實時推送

前面我們的EventBus已經弄好了,那麼接下來通過EventBus來實現我們的消息推送就是自然而然的事情了。說到消息推送,很多人肯定會想到Websocket,既然我們使用Asp.net core,那麼SignalR肯定是我們的首選。接下來

原创 造輪子之EventBus

前面基礎管理的功能基本開發完了,接下來我們來優化一下開發功能,來添加EventBus功能。EventBus也是我們使用場景非常廣的東西。這裏我會實現一個本地的EventBus以及分佈式的EventBus。分別使用MediatR和Cap來實現

原创 造輪子之屬性注入配合懶加載構建服務抽象基類

在前面實現管理API的時候,可以看到我們用的挺多功能是沒有通過構造函數注入的。比如緩存DistributedCache,MemoryCache,對象映射Mapper,多語言L,當前用戶CurrentUser等等。這些全都初始化在WheelS

原创 造輪子之角色管理

在asp.net core identity中已經有RoleManager,我們只需要封裝一下API操作Role即可完成我們角色管理相關功能,這裏API打算只提供分頁查詢,創建以及刪除,不提供修改API。 實現RoleManageAppS

原创 造輪子之用戶管理

跟角色管理一樣,asp.net core identity中已經包含了UserManager,我們只需要簡單包裝一下邏輯即可完成我們的用戶管理相關功能。 這裏只打算添加分頁查詢,創建以及修改用戶的API,不提供刪除API。 實現UserM

原创 造輪子之菜單管理

前面完成了基礎管理的相關API,接下來就得做一個菜單管理了,用於對接管理後臺前端界面。 設計菜單結構 菜單是一個多級結構,所以我們得設計一個樹形的。包含自己上級和下級的屬性。同時預留Permission用於做可選的權限限制。 namesp

原创 造輪子之多語言管理

多語言也是我們經常能用到的東西,asp.net core中默認支持了多語言,可以使用.resx資源文件來管理多語言配置。但是在修改資源文件後,我們的應用服務無法及時更新,屬實麻煩一些。我們可以通過擴展IStringLocalizer,實現我

原创 造輪子之自定義授權策略

前面我們已經弄好了用戶角色這塊內容,接下來就是我們的授權策略。在asp.net core中提供了自定義的授權策略方案,我們可以按照需求自定義我們的權限過濾。這裏我的想法是,不需要在每個Controller或者Action打上Authoriz

原创 造輪子之權限管理

上文已經完成了自定義授權策略,那麼接下來就得完善我們的權限管理了。不然沒有數據,如何鑑權~ 表設計 創建我們的表實體類: namespace Wheel.Domain.Permissions { public class Perm

原创 造輪子之統一請求響應格式

在上文中我們實現了統一業務異常處理,在異常響應中我們也使用了統一的響應格式返回給客戶端。接下來我們就講一下約定統一的氫氣響應格式。在業務開發中,一個規範統一的請求響應格式可以提高我們的前後端開發對接效率,同時清晰的結構提高了可讀性。 響應

原创 造輪子之自動依賴注入

在我們造輪子的起初,基建非常重要,而依賴注入是我們使用頻率最高的一項,頻繁的手動注入太麻煩,所以我們來實現一下自動化注入。 技術選型 在ASP.NET Core中,有兩種常見的依賴注入方式:原生依賴注入和三方依賴注入。 原生依賴注入

原创 造輪子之日誌

在日常使用中日誌也是我們必不可少的一環,在原生日誌組件中支持的日誌驅動比較少,所以我們需要使用一些三方日誌組件來擴展我們的日誌記錄。 集成Serilog 三方日誌組件有很多,如NLOG,LOG4NET等等,這裏個人習慣,使用Serilog

原创 造輪子之統一業務異常處理

異常處理也是我們必不可少的一環,藉助Asp.netCore的UseExceptionHandler中間件,我們可以很輕易的配置我們的業務異常處理邏輯。 自定義業務異常類 首先我們定義一個業務異常類,繼承Exception,添加一個Code