天天看點

ABP Framework 研習社經驗總結(6.28-7.2)

ABP Framework 研習社經驗總結(6.28-7.2)

ABP Framework 研習社經驗總結(6.28-7.2):總結建群初衷,近期群裡讨論的八個活躍問題,及電子書下載下傳!

目錄

  • ABP Framework 研習社經驗總結(6.28-7.2)
    • 研習社初衷
    • 十天回顧
    • 研習社經驗總結(6.28-7.2)
      • 問題1:關于ABP版本
      • 問題2:關于DDD和三層架構差別
      • 問題3:ObjectMapper是不是和領域服務有些沖突?
      • 問題4:求 IssueTracking 項目源碼
      • 問題5:關于應用層分層問題
      • 問題6:關于自定義身份驗證
      • 問題7:業務編碼是在領域模型中生成,還是在應用服務?
      • 問題8:關于 ABP Framework的學習建議
    • 電子書下載下傳
    • dotNET兄弟會-公衆号

在翻譯 《實作領域驅動設計》—— 基于 ABP Framework 實作領域驅動設計實用指南 時,因為DDD理論和實踐的寬泛性,不同公司、不同行業、不同項目實作程度不同,覺得有必要為 ABP Framework 開發者提供一個良好的溝通、交流平台。

建群時間:

2021.6.23

專注 ABP Framework 技術讨論、經驗交流、資料共享!ABP Framework 研習社(QQ群:726299208) 歡迎更多的朋友加入,共同學習、共同成長!

首位成員:

忘憂草

讓人難忘!

ABP Framework 研習社經驗總結(6.28-7.2)

截止到今日(7.2),10天時間,群裡共入住

182位

小夥伴。

ABP Framework 研習社經驗總結(6.28-7.2)

群裡小夥伴,開發年限長,平時不閑聊,遇到感興趣的話題,也會引發刷屏式的讨論。

入住大神級人物,

@張善友

(dotnet跨平台公衆号作者,感謝文章推薦!)

@角落的白闆

(52ABP架構作者)。

很多ABP元老級玩家,

@嬌龍

(16年開始使用)

@野鬼

(15年開始用)

@黑羽

(在

0.n

版本時開始用)。

或許還潛伏着更多低調的高手,未被發現!

總結和提取 ABP Framework 研習社 大家讨論活躍的話題、關注度比較高的内容,供各位學習、交流!

by@失意憶的誓言 15:21:50

現在是研究abp還是abp vnext

發現大家在溝通過程中對于ABP新舊版本存在不統一,是以覺得有必要梳理下ABP的版本。

簡單回顧ABP的發展曆史:

ASP .NET 時代

ABP Framework 研習社經驗總結(6.28-7.2)

ASP .NET Boilerplate Project,簡稱ABP,是第一代開源架構。

ASP .NET Zero是基于 ASP .NET Boilerplate 架構的通用(模闆)解決方案。付費商業版。

ASP .NET Core 時代

.NET Core 時代來臨,ABP開發者考慮下一代版本的開發,開發代号

Abp vNext

,為了和第一代開源架構區分,這樣命名很好了解,因為

.Net Core

之前也稱為

.Net vnext

意為:下一代版本。

随着版本的逐漸完善,個人感覺 ABP開發者的平台化戰略越來越清晰,首先有一個統一平台 ABP.IO ,包括:文檔、架構、社群、支援及商業服務,這不僅僅是一個官方網站,我們可以看到官方更大的願景,圍繞 ABP Framework 打造開發者生态,比如:插件商店也在未來的開發計劃當中。

ABP.IO 平台之下,最核心是:開源架構 ABP Framework 和 商業版 ABP Commercial 。

這與 ASP.NET 時代下的 ASP.NET Boilerplate Project 和 ASP.NET Zero 相對應。

最新版ABP,準确地應該稱之為 ABP Framwork 。

ABP曆史小結

  • ASP.NET 時代
    • ASP.NET Boilerplate Project 開源架構
    • ASP.NET Zero 商業版
  • ASP.NET Core 時代
    • Abp vNext 前身
    • ABP.IO 平台
      • ABP Framework 開源架構
      • ABP Commercial 商業版

問題:三層架構和DDD究竟有什麼不一樣?

最大的差別在于設計思想的不同:DDD以領域為中心;三層以資料庫為中心。一個是領域驅動;一個是資料驅動。DDD使用領域對象封裝和實作需求的複雜性,領域可以複用;三層架構基于資料庫模組化,正常操作為:CRUD。

問題 by@黑羽:因為有了自動映射會導緻可能不走構造函數,進而導緻不走領域模型的構造函數中的業務邏輯?

@黑羽:我現在就是覺得 mapper違背一些規則。一開始覺得還行,後來覺得很不好用。

自動映射常用在領域服務中,接收參數,将 (輸入)資料傳輸對象 轉換為 領域對象;傳回資料,擷取 領域對象 轉換為 (輸出)資料傳輸對象 。

接收參數轉換為領域對象,如果建立領域對象時,需要屬性有效性驗證,不推薦使用 自動映射,盡管可以通過設定 自動映射規則,不建議将 業務規則 隐藏在自動映射配置中。

因為資料傳輸對象是一個POCO對象,是以在将 實體 自動映射為 (輸出)資料傳輸對象時,可以放心自動映射。

對象自動映射,不是實施領域驅動必須技術,當做是一個工具,酌情使用即可!

更多最佳實踐可以參看:

《基于ABP Framework 實作領域驅動設計》#構件/資料傳輸對象/對象映射

章節

Hager²º20 08:22:55

@iEricLee 群主早上好,看了你的文章,品質很高呀。提到的項目IssueTracking,有沒有可能給分享一份,具體的學習學習。

失意憶的誓言 08:28:15

那有沒有最佳實作方式的demo可以分享一下呢,麻雀雖小五髒俱全的那種

@Hager²º20 如果能有一個示例項目結合文章細品就更好了

DDD這玩意兒,就是一種設計思想,可具體落地時有時候就感覺無從下手。

這裡統一做一個回複:

IssueTracking

是一個虛拟項目,主要用來模拟業務場景和需求的演變,目前沒有與文章中相對應的單獨項目。

如果大家想研究DDD落地後的項目示例,其實在 ABP Framework 源碼中提供很多應用子產品,這些應用子產品都是遵循DDD最佳實踐和原則,挑自己感興趣的子產品研究即可。

推薦最新釋出的 CMS-Kit 子產品:傳送門:Github 源碼 。

問題:by@聽她說。 它後面說可以多個application層來對應多個不同的業務場景 你能做個案例出來不😁😁

在解決方案中可以添加

Admin.Application

Public.Application

Common.Application

應用層,共用領域層。應用層分别對應管理背景業務邏輯、前台業務邏輯、公共業務邏輯的處理,對應用層進行拆分可以讓項目結構更加清晰、可控。

由此也帶來開發商的便利,比如因為對背景管理單獨分層權限控制更加友善。

另外還可以按照不同用戶端來分層,比如:

Mobile.Application

WeChat.Application

Tablet.Application

來拆分應用層,處理不用用戶端的業務需求,是以應用層在分層上可以靈活的,隻需要遵循DDD基本原則都是DDD最佳實踐!

by@ 聽她說。 17:45:10

大家好,使用 abp vnext ,ids4,我想給使用者添加一個pin密碼然後使用pin密碼登入,擷取accesstoken,這樣能實作嗎?

解決方式:

by @Dr.Yao 18:57:43

闊以的。看

IExtensionGrantValidator

by @野鬼:生成業務編碼這個。不屬于領域服務。在我的概念裡面 它是屬于 業務服務,ApplicatonService裡面,我建立實體。

你必須傳一個 單号給我。這個單号是由應用産生的。

我要一個訂單号。這訂單号怎麼生成。不是我領域的事。是你 Application負責的事。

但我領域層會校驗這個 單号的唯一性、校驗單号的規則 。是否符合我的邏輯。

單号。早就生成好了。而且買現成的。

問題 by@草葉睡蜢 16:52:59

對于官方文檔,到底要怎麼看,先看啥後看啥,有沒有一個導航圖或者思維導圖。

我把官方文檔下載下傳下來,都是按字母排序的,根本分不清從哪裡開始着手。

有經驗的給分享一下學習路徑。

學習路徑建議:

  1. 先看快速入門的教程 Todo 、BookStore 把項目基礎功能運作起來,了解基本流程和架構。
  2. 然後再逐個架構功能擊破。子產品衆多可以挑自己能用到或感興趣的分析,最終會發現所有子產品其實都有統一的實作思路。
  3. 最後拿下架構層面内容:領域驅動、微服務、多租戶。

個人認為 ABP Framework 技術棧新而全,是.NET開發者的“屠龍刀”、“寶藏庫”。從代碼、項目、解決方案、技術架構,都有優雅的設計和實作,對于國中級.NET程式員,想要進一步提升自己的編碼功力、設計思想、架構經驗,學習和應用該架構,絕對是最佳途徑之一。

回顧系列文章:

  • 基于ABP落地領域驅動設計-01.全景圖
  • 基于ABP落地領域驅動設計-02.聚合和聚合根的最佳實踐和原則
  • 基于ABP落地領域驅動設計-03.倉儲和規約最佳實踐和原則
  • 基于ABP落地領域驅動設計-04.領域服務和應用服務的最佳實踐和原則
  • 基于ABP落地領域驅動設計-05.實體建立和更新最佳實踐
  • 基于ABP落地領域驅動設計-06.正确區分領域邏輯和應用邏輯

為了大家友善閱讀,整理成了電子書《基于ABP Framework 實作領域驅動設計》中文完整版_v1.0_iEricLee譯 點選下載下傳。

專注.Net開源技術及跨平台開發!緻力于建構完善的.Net開放技術文庫!為.Net愛好者提供學習交流家園!

ABP Framework 研習社經驗總結(6.28-7.2)

記錄技術修行中的反思與感悟,以碼傳心,以軟制道,知行合一!