中級框架分層設計——從數據開始

来源:https://www.cnblogs.com/GoodDog/archive/2020/07/19/13303184.html
-Advertisement-
Play Games

我一直思考框架設計該如何簡單,如何降低開發者難度,最後想出了相處了一個比較滿意的框架設計。 框架大致分為 前端UI -後端API-資料庫: 前端UI和後端API通過DTO 模型交互 後端API和資料庫通過ORM 模型交互 資料庫以及ORM模型之間的關係: 鑒於項目可能復用多個資料庫,後端工程師可能需 ...


我一直思考框架設計該如何簡單,如何降低開發者難度,最後想出了相處了一個比較滿意的框架設計。

框架大致分為   前端UI   -後端API-資料庫:

前端UI和後端API通過DTO 模型交互

後端API和資料庫通過ORM 模型交互

資料庫以及ORM模型之間的關係:

鑒於項目可能復用多個資料庫,後端工程師可能需要掌握多種資料庫SQL語句以及對應SQL語句優化,加大開發難度。

鑒於SQL語句掌握能力和SQL語句優化能力,我的覺得框架應該使用ORM技術 把 數據表拆解成ORM模型,模型與模型之間無關聯。

我們在代碼裡面獲取單表ORM模型,然後組裝成前臺需要的DTO模型。

這個想法取決於DDD領域聚合思想,為了降低領域開發模式,把每個單表看成聚合根。

這樣有一下幾個好處:

  • 執行效率     前端語言的執行效率,和資料庫語言執行效率,都沒有後端執行效率高
  • 優化難度     前端>資料庫>後端   
  • 問題複雜     問題高度內聚在後端,方便調試以及跟蹤
  • 開發難度     開發人員只需要掌握對應開發語言,專註代碼邏輯和代碼優化

 

前端UI獲取的DTO模型和後端API獲取的ORM 模型之間的關係:

從資料庫獲取ORM 模型  可以直接通過Map 直接轉為簡單DTO模型,然後簡單DTO模型通過代碼組裝成 複雜DTO模型  傳輸給前端UI,完成DTO模型復用。

 

這個框架思路 不是為了阿裡騰訊構思,只為中小級公司構思,簡化問題流程,加快開發。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近使用goland 和 clion 進行開發時;發現不能使用中文輸入法;就是很尷尬; 通過搜索教程,我使用的時sogou輸入法,使用的時fcitx 框架;需要配置環境變數; 這時候,我們需要在啟動腳本裡加入: export XMODIFIERS="@im=fcitx" export GTK_IM_ ...
  • 目前CSDN,博客園,簡書同步發表中,更多精彩歡迎訪問我的gitee pages MapReduce精通(一) MapReduce入門 MapReduce定義 MapReduce優缺點 優點 缺點 MapReduce核心思想 總結:分析WordCount數據流走向深入理解MapReduce核心思想。 ...
  • 有些時候想直接從資料庫查詢數據,並導出,但一些類型或狀態存儲的是01等數字,你想顯示對應的文字,這個時候就可以使用case...when語句了。 結構 case...when...then...when...then...else...end 示例 SELECT id,title,CASE type ...
  • FROM_UNIXTIME FROM_UNIXTIME(unix_timestamp[,format]) 將時間戳轉換成日期時間表示。如'YYYY-MM-DD hh:mm:ss' 或 YYYYMMDDhhmmss NOW NOW([fsp]) 返回當前時間的日期時間表示,如'YYYY-MM-DD h ...
  • 按照要求,每個取top 20,既然是隨機的取,那麼就SQL Server Order by newid()就是了,然後把所有數據union起來就得了。所以我立即給出了答案: select top 20 * from xxx where type=1 order by newid() union se ...
  • 一、緊接連載25的內容 解釋ForceOfflineReceiver類 使用AlertDialog.Builder來構建一個對話框,註意裡面有一個成員方法setCancelabel()將設置為不可以取消,否則一點擊Back鍵,又可以使用程式了,這就是導致了兩地登錄,是不符合我們的規定的。 使用set ...
  • 最近學習了一小段時間的React,對一些React開發組件的基礎有了一點認識,跟著教學視頻,自己實現了一個ToDoList組件的功能,今天把做這個組件的過程記錄一下,加深學習印象,給同樣的前端入門者做一個參考。 ...
  • 不帶註釋的 <script>function ajax(json) { json.type = json.type ? json.type : 'get'; json.async = json.async == false ? false : true; json.contentType = jso ...
一周排行
    -Advertisement-
    Play Games
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...