目前為止,最佳架子獎: 聖殿騎士!!!
評選理由:
老油條了,沒啥好說的....分層的描述很准確。
特別是WebModel(ViewModel)的理解和描述很到位,避免了搞ViewModel的設計過渡之嫌,如果你有設計ViewModel的話....
可惜缺乏對數據訪問層的描述,不知道會不會陰溝里翻船...
01,User Interface即UI層:該層作為數據輸入和展示的界面,是與用戶交互的有效途徑,所以它起着至關重要的作用。往往給人第一印象的就是UI層,在設計的時候也要根據不同的技術或者不同的要求進行斟酌。通常可以把UI分為B/S UI、C/S UI以及WEB服務。在這里就是我們的ASP.NET項目。
02,WebModelCommon:這層作為UI與領域邏輯的中間層,它的充當了橋梁、篩選、過濾和驗證的作用。它主要包括兩個工程,WebHelper主要提供給UI一些常用操作。WebLogic主要對UI與領域邏輯的數據進行轉換、篩選、驗證及過濾操作。
03,Business Logic:Domain Model (Data Model Layer)始終是應用程序的核心,必須投入大量精力,按照面向對象的分析和設計 (OOAD) 最佳做法進行設計同時按照OOP進行開發。
04,FrameWork:主要包括數據訪問框架、通用權限框架、異常和日志處理框架、IOC框架、AOP框架等基礎或常用功能。
05,SOA:這一層不是必須的,根據項目的具體情況進行取舍,如果業務比較復雜且交互項目繁多,那么SOA可以減輕我們的負擔;如果業務比較單一且相對簡單,就可以直接調用或者使用Web Service/Remoting/WCF作為通信框架即可。在實施SOA的過程中,可以自己使用WCF+WF搭建一個小型輕量級的SOA框架,也可以使用諸如Biztalk等軟件。
06,Reference:這里主要包括第三方的框架和組件項目,把這些文件分門別類地集中放在此目錄下。
07,Solution Items:項目的規范、流程、重要文件等。
08,Test:這里主要放置測試需要的一些信息,如測試版本、測試文檔等。
09,Publish:這個文件夾主要放置發布的版本。
作者的獲獎感言:比較關心有沒有獎品? 其實這個架構比較復雜一點(考慮到經常擴展和升級),如果小項目,就沒有必要這么折騰了。當時是支持多國家、多設備,比如同樣的項目可以在新加坡和美國根據IP的不同來自動尋址訪問,同時根據設備的不同而又有兩套路徑,手機用戶導航到手機網站頁面,PC用戶就到正常頁面。關於數據訪問層,有一個適配器,可以通過配置選擇ORM(自己寫的一套類庫,封裝在Framework里面)還是經典方式(SQL和存儲過程等全部單獨寫在XML文件里面,通過讀取XML文件進行調用,這樣維護和版本升級比較方便,同時為了降低系統的負載同時提高用戶的響應能力,我們采用了MSMQ和SSB來組織消息隊列)。另外數據層都有Mock data for testing,這樣就能保證項目擴展和升級造成的相互依賴而耗費過多的時間和精力。如果有時間,可以寫一篇文章出來大家探討!
回復感言:
獎品是必須的,針對此架構寫一篇詳細的文章,並附上源碼。
小項目確實沒必要搞這么復雜,可以參考帖子里的“土鱉實戰派”,那個分層我覺得就挺實在的。
Mock data for testing是個好辦法,有空介紹些好的Mock框架。
最佳吐槽獎: [秦時明月] !!!
他只在評論里淡淡的回復了一句:“其實我只想說一點:大家都亂了.”。輕輕的來,不留一片架子。不過弦哥是不會放過他的......
於是乎弦哥到他的博客http://www.cnblogs.com/humble/里搜刮了一番,發現了他其實也有架子,“Moon.ORM”,“Qin.Data”(和秦時明月這個名字遙相呼應,文藝青年哈)......
其實我想說的是, 無論是所謂“大道至簡”的秦時明月,還是主流的 聖殿騎士,單從技術實現來說可以說條條大路通羅馬...無所謂對錯...
但在現實中聖殿騎士的路子可以上的台面去企業做培訓,而秦時明月可能更多的是孤芳自賞,其中緣由,大家可以探討...
陰溝翻船獎 Artech:
我先來拋磚引玉:
傳說中的弦哥:
tips:
1."解決方案文件夾"能幫助你很好的規划項目結構
2.通過對"解決方案文件夾"前面加數字1,2,3,4....,能讓項目按你想要的順序排序
3.公司名.項目名.包名.架構名的命名空間 命名約定能讓你的項目結構更清晰
4.分項目的多少還是要根據項目具體情況和架構設計,分太多編譯速度慢不說,其實用起來也麻煩
一晴 :
點評:一個比較簡單的博客網站,用的是MVC,命名啥的還是比較規范的。
建議:可以把Controller和Model從網站項目中提出來
點評:典型的Petshop控,BLL+DAL+MODEL+網站 的三層架構,通過工廠模式來調用DAL
建議:可以進一步嘗試DDD,並用DI依賴注入代替工廠模式
微軟根據DDD架構做的一個分層示范項目,NLayerAppV2:
下載網址:http://microsoftnlayerapp.codeplex.com/workitem/6687
微軟的一個CRM項目:
下載網址:http://orchard.codeplex.com/
點評:尼瑪這分的太多了............
.Net下大名鼎鼎的CMS ,DotNetNuke(DNN):
下載網址:http://www.dotnetnuke.com/
點評:大部分我覺得挺好的,划分合理,結構清晰,就是“Providers”里面搞那么多”解決方案文件夾“搞毛啊!!!
臭名昭著的PetShop4.0:
點評:這些年來毒害了不少無知菜鳥,成就了不少裝X磚家.....人家拿來和java測效率的項目,你們拿來研究架構?
一線碼農 :
點評:此碼農初窺門徑,命名規范,結構合理清晰,.Test是亮點,說明已經上了DDT,值得表揚,不過說確實分的有點太細了...
建議:“ZhuangHuang”這個拼音立馬把檔次降低了,建議改成英文,裝X!!!懂不!!!裝潢....地可兒瑞特..decorate
Jaws:
點評:小寫和縮寫的命名方式看上去有點小清新的味道,比較像java那邊的習慣,說!你是不是那邊來的細作!!
建議:CSS,JS,JSON這種有必要都分成單獨的項目嗎?搞的和DNN一樣....
道法自然:
點評:從各方面看,無可挑剔,相當專業。基於Plugin的設計很考驗功力...........你是來砸場子的嗎?!!!
建議:給出源碼供廣大童鞋學習...
魂淡:
點評:從用英文的Visual Studio可以看出此人比我還能裝...,采用WCF實現分布式架構,命名准確專業,結構清晰合理。
難能可貴的是形式上沒有一點照貓畫虎的痕跡,但又處處體現出設計和模式的思想。鑒定為高手..
建議:你丫簽出那么多項目,別人想加文件咋整!!!
劉海川:
點評:照貓畫虎,乏善可陳
建議:多向樓上那位學習...從用英文Visual Studio開始!!!~~~
kiler :
點評:土鱉實戰派!!公用類+業務邏輯+數據庫訪問+實體+網站。分層目的明確,表達直截了當,沒有絲毫多余的設計和矯揉造作的命名。
建議:實戰之余也可多看看一些經典的設計和架構理論。
雙擊:
點評:做網站的屌絲,貼架子還不忘發廣告....,比較好奇Component里都有些什么東東
項目網址:http://www.jielongdaquan.com/
柳柳英俠 :
點評:命名方面有些Petshop的遺風,但又有一些比較潮的設計思想。
建議:接口單獨放一層值得商榷,去看看馬丁大叔的依賴反轉,並深入理解。
對於Model方面分了 PO,ViewModel和DTO,是否有設計過渡之嫌?
林之空間:
點評:傍着Camstar的高帥富,DesignerClient在手,其他的都是浮雲..........
園子里阿不同學:
點評:從架子看,功力扎實,設計老道。但並不潮.....
聖殿騎士:
01,User Interface即UI層:該層作為數據輸入和展示的界面,是與用戶交互的有效途徑,所以它起着至關重要的作用。往往給人第一印象的就是UI層,在設計的時候也要根據不同的技術或者不同的要求進行斟酌。通常可以把UI分為B/S UI、C/S UI以及WEB服務。在這里就是我們的ASP.NET項目。
02,WebModelCommon:這層作為UI與領域邏輯的中間層,它的充當了橋梁、篩選、過濾和驗證的作用。它主要包括兩個工程,WebHelper主要提供給UI一些常用操作。WebLogic主要對UI與領域邏輯的數據進行轉換、篩選、驗證及過濾操作。
03,Business Logic:Domain Model (Data Model Layer)始終是應用程序的核心,必須投入大量精力,按照面向對象的分析和設計 (OOAD) 最佳做法進行設計同時按照OOP進行開發。
04,FrameWork:主要包括數據訪問框架、通用權限框架、異常和日志處理框架、IOC框架、AOP框架等基礎或常用功能。
05,SOA:這一層不是必須的,根據項目的具體情況進行取舍,如果業務比較復雜且交互項目繁多,那么SOA可以減輕我們的負擔;如果業務比較單一且相對簡單,就可以直接調用或者使用Web Service/Remoting/WCF作為通信框架即可。在實施SOA的過程中,可以自己使用WCF+WF搭建一個小型輕量級的SOA框架,也可以使用諸如Biztalk等軟件。
06,Reference:這里主要包括第三方的框架和組件項目,把這些文件分門別類地集中放在此目錄下。
07,Solution Items:項目的規范、流程、重要文件等。
08,Test:這里主要放置測試需要的一些信息,如測試版本、測試文檔等。
09,Publish:這個文件夾主要放置發布的版本。
點評:老油條了,沒啥好說的....分層的描述很准確。
特別是WebModel(ViewModel)的理解和描述很到位,避免了搞ViewModel的設計過渡之嫌。如果你有設計ViewModel的話.......
詳細學習地址:http://www.cnblogs.com/KnightsWarrior/archive/2010/12/09/1900832.html
建議:把FrameWork給大伙開開源..........