基於DDD的現代ASP.NET開發框架--ABP系列文章總目錄

陽光銘睿發表於2015-05-25

ABP相關崗位招聘:給熱愛.NET新技術和ABP框架的朋友帶來一個高薪的工作機會 

ABP交流會錄影視訊:ABP架構設計交流群-7月18日上海線下交流會的內容分享(有高清錄影視訊的連結 

程式碼自動生成:分享一個與ABP配套使用的程式碼生成器原始碼

ABP系列文章總目錄:


1、ABP總體介紹 
2、ASP.NET Boilerplate入門 
3、ABP分層架構 
4、ABP模組系統 
5、ABP啟動配置 
6、ABP依賴注入 
7、ABP Session管理
8、ABP日誌管理
9、ABP設定管理
10、ABP領域層——實體(Entities
11、ABP領域層——倉儲(Repositories)
12、ABP領域層——工作單元(Unit Of work)
13、ABP領域層——資料過濾器(Data filters)
14、ABP領域層——領域事件(Domain events)
15、ABP應用層——應用服務(Application services)
16、ABP應用層——資料傳輸物件(DTOs)
17、ABP應用層——引數有效性驗證
18、ABP應用層——許可權驗證
19、ABP應用層——審計日誌
20、ABP展現層——動態生成WebApi
21、ABP展現層——Javascript函式庫
22、ABP展現層——導航欄設定
23、ABP展現層——異常處理
24、ABP基礎設施層——整合Entity Framework
25、ABP身份與許可權管理模組

 

我按照ABP官方文件的結構大概列出了我準備寫的文章系列,以後文章中的內容將會是部分為翻譯部分為自己的經驗和感受。這一系列文章也正好作為我團隊新成員的培訓教材。

  

背景介紹:

有幾次在技術交流會和QQ群上我提到ABP專案,幾乎沒有人知道這個開源專案,張善友蟋蟀等不少朋友問過我,怎麼在中文社群都搜不到ABP這個專案的介紹文章呢? 是呀,這麼好的東西,應該讓更多人知道。我在部落格園寫第一篇文章的時候就想介紹它,但因為工作太忙,文字表達效率太低,就一拖再拖。今天在netfocus湯兄的ENode群裡聊到ABP專案,有不少朋友還挺感興趣,所以建了一個QQ群(134710707),供大家以後討論ABP的架構設計、DDD話題。

去年我們公司在規劃一個新的O2O專案時,我重新考慮了技術選型(具體情況我在第1、2篇部落格文章裡有介紹http://www.cnblogs.com/mienreal/p/4340864.html)。我大量的學習了新技術和開源專案,決定要開發一套適合自己的框架,準備使用的思想和技術包括DDD領域驅動設計、分散式架構、模組化開發、ASP.NET MVC 5、Web Api、C# 5.0、EF 6、AutoMapper、SqlServer或MySql、Redis、XUnit、SPA等。

為了有一個好的參考物件,我研究了國內外10多個框架專案,最深入研究的有dax.net的Apworks、微軟的Orchard。後來在Github上按照關注度由高到低列出所有C#專案,我看了前1000個專案的介紹,在其中找到了這個讓我非常驚喜的ABP專案,它幾乎完全滿足我前面所列出的那些條件。它不僅功能強大,專案結構和編碼風格都非常優雅,很有藝術感。

我在ABP原始碼的基礎上,按照自己的需求做了一些修改,已用於實際開發專案數月,在這期間,我的技術也得到了很大提升。為了讓更多朋友瞭解和使用ABP,我會寫一系列的文章來介紹他的架構思想和運用方法,今天列個目錄和總體介紹。英文比較好的朋友可以直接看他的官方網站,文件已經寫得非常好了。

ABP的官方網站http://www.aspnetboilerplate.com

ABP在Github上的開源專案https://github.com/aspnetboilerplate

ABP框架於2014年5月4日首次在Github開源,截止到2015年5月25日,總共進行了1271次程式碼提交,49次版本釋出,現在的版本號是0.6.1.1。

 

我在其他專案中看到的很多優秀設計,在ABP專案中都已存在,而且可能實現得更好。ABP框架的程式碼,都通過xUnit進行了單元測試。作者一直在用ABP框架開發他們的實際專案,從Github和他官方論壇上的資訊可以看到,有很多國外的開發者在將ABP用作生產專案的基礎框架。如果需要直接使用ABP元件,可以通過Nuget安裝(在VS的Nuget包管理介面搜尋Abp)。

為了更好地將ABP適用於自己的專案,我對ABP的原始碼做了一些修改,而沒有直接使用ABP元件。

我的前篇文章中有介紹:新思想、新技術、新架構——更好更快的開發現代ASP.NET應用程式(續1)


我希望更多國內的架構師能關注到ABP這個專案,也許這其中有能幫助到您的地方,也許有您的參與,這個專案可以發展得更好。
今天只是作了一個大概介紹,希望有更多的朋友能去閱讀原始碼,然後參與討論。

 

歡迎加QQ群:

ABP架構設計交流群:134710707 ABP架構設計交流群      ABP架構設計交流2群: 579765441ABP架構設計交流群2

 


 

2015-5-28 13:30 補充

首先很感謝那麼多朋友對本系列文章的高度關注,QQ群剛建立3天(5月28日),就有400多人加入了。有些朋友是對新技術感興趣,有些對架構設計感興趣,有些對領域驅動設計(DDD)感興趣,而ABP剛好結合了這些熱門的話題。

有些DDD的忠實愛好者可能發現了ABP框架並沒有實現所有DDD的概念,而且在簡單的示例中也完全沒有體現出DDD的設計思想。

在此我補充談一下我的想法:

因為我是創業團隊的技術合夥人,工作非常很忙,同時也因為能力有限,我能做的就是讓更多的人瞭解到ABP框架在技術和設計模式上的精妙從而併產生研究它的興趣,通過大家的共同努力才能對.NET技術社群產生積極的影響。

由於想在儘量短的時間讓更多人對ABP有個大致瞭解,我現在只是簡單大概地翻譯了原作者的文章和例子,並沒有按照DDD的規範來做。對於還沒有太瞭解DDD的朋友,我沒辦法在這麼短的文章講清楚(網上已經有很多好的DDD文章,我在QQ群裡也共享了一些DDD的學習資料)。我是想等大家對ABP框架和用法有一些瞭解以後,我們們再開發一個完整的功能(比如團購)來實踐DDD,先設計領域模型,再一步一步編碼實現。

DDD推出來已經11年了,為什麼極少公司把它用於專案生產呢?我的感覺:一是因為DDD本身確實有難度,又要顛覆以前慣用的資料庫驅動思維,對個人能力有挑戰;二是因為完全按照DDD來做,對不能熟悉運用的團隊來說,會影響開發效率,延長開發週期,對公司眼前利益有挑戰。但是用DDD思想開發的專案,可維護性要高很多。怎麼才可以又要好又要快的呢? 我覺得一個高質量的基礎架構就非常重要,有了好的框架,我們就可以減少重複寫程式碼的時間,可以把更多精力花在領域設計上,從而縮短開發週期。這樣就能達到我在第一篇文章所說的“新思想、新技術、新架構——更好更快的開發現代ASP.NET應用程式”。儘管ABP沒有完全實現DDD,儘管它還有不完善的地方,正如作者所說“它是一個讓我們開發新的現代WEB應用程式的新起點”。我們就在這個起點上,來不斷完善吧。大家共同努力,讓新思想、新技術、新架構流行起來!

希望英文能力比較好的朋友可以參與翻譯原作者的文件,這樣我就可以騰出精力來準備ABP原始碼解讀和談實際使用中的經驗。

 

歡迎加QQ群:

ABP架構設計交流群:134710707 ABP架構設計交流群 

ABP架構設計交流2群: 579765441ABP架構設計交流群2

ABP架構設計交流3群: 291304962

 

相關文章