前面幾篇已經把廢話基本說完了,現在准備進入實戰階段。
第一步是把開發環境准備好,下面是本系列所使用的開發工具及其版本。為了避免你無法順利打開本系列提供的下載示例,建議你最好跟我使用的版本相同。
- Visual Studio 2013
- ReSharpe 最新版本,目前版本是8.2.2
ReSharpe是一個VS上面的插件,它不是必須的,但它能夠大幅提升你的編碼速度和代碼質量,特別是采用了像DDD這樣的架構,整個系統包含大量的Interface,你需要在接口和多個實現之間來回跳轉,VS在這方面缺乏支持,可以使用ReSharpe來彌補這個空缺。
一個例外是你的電腦運行速度非常慢,這種情況下建議不要安裝,不然你會完全動不了。
- NestIn 1.1.1。
NestIn也是VS上的一個插件,主要用來把兩個文件嵌套在一起,在某些情況下需要使用。
- CodeSmith 6.5
CodeSmith是一個模板生成器,用來進行自定義代碼生成。
- Sql Server 2012( 2008也行 )
- PowerDesigner 16.5
PowerDesigner是建模首選工具,不僅可以進行數據建模,還能進行流程圖、類圖、序列圖等UML設計。
- XMind 6
XMind是一個思維導圖工具,可以用它進行一些分析工作。
以上包含了所需要的開發工具,請你自行下載安裝,大部分工具都要收費,不過作為中國人,一個優勢是可以采用綠色版本,不用我說大家也知道怎么做了。在安裝過程中遇到問題,可以提問,我盡量抽時間給你解決。
除了開發工具以外,開發應用程序框架需要一定的抽象和封裝能力,下面我把一些應該具備的基礎知識列舉如下,並推薦一些經典圖書,為避免書有同名,我將作者也一並列出。
- 面向對象基礎
畢竟大家在使用面向對象語言,不管你是否使用DDD這樣的面向對象架構,都需要掌握一些基本知識,比如封裝、繼承、多態、接口、抽象類、抽象方法、虛方法等等。
推薦圖書:
- UML和模式應用(作者:Craig Larman,這本書是我最喜歡的面向對象著作,從這本書我了解了對象的特征和使用要點)
- 面向對象分析與設計 (作者:Grady Booch,作者是UML開山祖師之一,這是他的代表作)
- 架構模式基礎
本系列采用DDD架構進行演示,大家需要對一些常用的架構模式有所了解。
推薦圖書:
- 企業應用架構模式(作者:Martin Fowler,這本是架構模式的奠基之作,現在出來的架構模式名詞,大半是從這本書出來的。Martin Fowler可能是敏捷導師里面名氣最大的一位)
- 領域驅動設計(作者:Eric Evans,這本書出來以后,就一直是面向對象開發的標桿,是領域模型的標准用法)
- 敏捷軟件開發-原則、模式與實戰(作者:Robert C.Martin,這本也是架構模式方面的頂尖之作,特別是描述了五大架構原則SOLID)
- C#企業應用開發藝術-CSLA.NET框架開發實戰(作者:Rockford Lhotka,這本是.Net應用程序框架方面能找到的幾乎唯一一本從理論到實戰系統講述的著作)
- 實現領域驅動設計(作者:Vaughn Vernon,這本書新出來不久,內容非常豐富,是對原始DDD的一次升華)
- 領域驅動設計與模式實戰(作者:Jimmy Nilsson,作者算是自己人,也是搞.Net開發的,這非常難得,.Net方面DDD的著作很少,在書中描述了他從以數據庫為中心的設計,向以對象為中心的設計轉變)
- Microsoft.Net企業級應用架構設計(作者:Dino Esposito,這本也是.Netl架構設計的一本好書,特別是他們在附錄提供了一個Demo-NSK,可以參考)
- 領域驅動設計 C# 2008實現(作者:Tim McCarthy,這本是完全以實戰為主,為如何創建DDD層超類型提供了一些代碼參考,另外還對一些設計和開發中棘手的問題提供了一些解決方案)
推薦博客:
- http://www.cnblogs.com/daxnet/archive/2010/11/02/1867392.html,陳晴陽老兄的DDD系列是我見過寫得最好的,在此強烈推薦。
- http://www.cnblogs.com/happyframework/category/448744.html,這位老兄不知道叫什么名字,他這個DDD系列也很有學習價值,特別是解決了我之前遇到的刪除聚合中子對象數據庫記錄的問題。另外他還開源了一個應用程序框架,叫幸福框架,很值得參考。
- 設計模式基礎
對代碼進行抽象,一般需要建立一些靈活性,了解一些常用設計模式是必須的。
推薦圖書:
- Head First設計模式(作者:Eric Freeman,這本淺顯易懂,設計模式入門必看)
- 設計模式(作者:Erich Gamma,這本就是設計模式奠基之作,不過示例都是C++寫的,相當枯燥難懂,可以作為提高之用)
- TDD基礎(包括TDD、單元測試、重構)
使用TDD進行開發不是必須的,但如果想獲得更高的代碼質量和健壯性,這個就非常必要,我會在后面的框架實戰中采用TDD方式進行演示。
推薦圖書:
- 測試驅動開發的藝術(作者:Lasse Koskela,這本用來入門)
- 測試驅動開發(作者:Kent Beck,Kent Beck是極限編程創始人,這是他在TDD方面的開山之作)
- .Net單元測試藝術(作者:Roy Osherove,這本是單元測試方面最實用的一本)
- XUnit測試模式-測試碼重構(作者:Gerard Meszaros,這本提供了大量在實際工作中進行單元測試碰到問題時的解決方案)
- 重構-改善既有代碼的設計(作者:Martin Fowler,重構方面的權威著作,幫助你清除代碼壞習慣)
- 實現模式(作者:Kent Beck,在本書中,極限編程大師演示了大量可以改善代碼質量的小技巧)
- 代碼整潔之道-Clean Code(作者:Robert C.Martin,這是Bob大叔在重構方面的著作)
- 重構與模式(作者:Joshua Kerievsky,這本書介紹了使用設計模式更正確的方式-通過重構演化出模式,而不是預先進行大量擴展點設計,這樣可以獲得更簡單的系統)
上面列舉了一些經典的設計圖書,供希望在.Net開發中有所提升的朋友參考。當然,並不是說你需要把這些書全部看完才可以開始創建你的應用程序框架,而是給你指出一個努力的方向,很多設計問題在看了大師的著作之后會茅塞頓開。
另外,這些書不是小說,你不能指望看一遍就全部搞懂,很多書需要一遍遍的看。哪怕你感覺好像理解了,但卻用不起來,如果只在看書的時候懂,搞開發的時候連個影子也想不起來,那還有個屁用。經常看,把一些名詞先混個眼熟,然后慢慢在項目上實踐,一些常用的模式還是容易搞懂,有些比較生僻的沒有用上也沒關系,這可能是項目不夠復雜。
.Net應用程序框架交流QQ群: 386092459,歡迎有興趣的朋友加入討論。
謝謝大家的持續關注,我的博客地址:http://www.cnblogs.com/xiadao521/