我有多個 API 控制器具有GET/POST需要資料庫訪問(讀/寫)的功能。所以我已經創建dbcontext并通過建構式注入將它注入到每個控制器中。然后在GET/POST函式中,我使用物體框架查詢語法,如:
_context.TableName.Where...Select...ToListAsync()
我被要求審查這一點,而不是注入dbcontext,從中創建服務并將服務注入控制器。
我是否正確理解這意味著該服務將具有功能(例如GetData(),InsertData(val))。在此服務功能中將是與資料庫互動的物體框架查詢。然后我必須將服務注入控制器,以便當函式GET/POST想要與資料庫互動時,它們可以使用服務函式。我相信這是為了分離物體框架查詢語法并將其放入服務類而不是控制器中。
這樣的架構叫什么?
uj5u.com熱心網友回復:
它稱為存盤庫模式/分層架構。
uj5u.com熱心網友回復:
它被稱為存盤庫模式,通過在服務/存盤庫中提取資料庫邏輯,您可以使其更具可讀性。
理想情況下,您的 api 層應該只擔心以下幾點
- api 端點
- 版本控制
- 一般例外處理
- 認證和授權
資料庫或業務邏輯應該在單獨的層中,該層處理所有業務邏輯和資料庫訪問。
如果你想更深入,你也可以分離業務層和資料庫層,所以你的api會將請求轉發到業務層,業務層將執行所需的業務邏輯,用于資料庫訪問業務邏輯將呼叫資料庫層獲取資料。這種方法的主要優點是如果你想改變資料庫提供者你只需要修改資料庫層,這種方法被稱為3 層架構。
** 編輯 **
這是帶有 .net 5 Api 和 Angular 12 以及 Sql 服務器的示例 Web 應用程式
uj5u.com熱心網友回復:
“分層架構”將業務層和資料庫層與表示層分開,也稱為 n 層架構。
最常見的 3 層架構; https://www.oreilly.com/library/view/software-architecture-patterns/9781491971437/ch01.html
你所說的這 3 層似乎有很大的不同!
但簡而言之
- 前端/UI/展示/架構層*(DDD)
- 邏輯/服務層/業務層/域層*(DDD)
- 后端/資料層/存盤層*/基礎設施*(DDD)
* 只是意味著故事還有更多內容
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/454622.html
上一篇:分配列舉值c#
