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架構設計交流2群: 579765441
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架構設計交流3群: 291304962