使用Visual Studio 2010進行架構(gòu)驗證
原創(chuàng)【51CTO精選譯文】最近我參加了一個本地Visual Studio 2010啟動儀式,當初去的目的主要是想看看Team Foundation Server(TFS)的新特性,但真正令我印象深刻的是新增的一些架構(gòu)工具,以前我一直使用Visual Studio擴展工具NDepend,很高興現(xiàn)在在Visual Studio 2010中對架構(gòu)工具進行了改進,吸收了大部分NDepend的功能,請看版本對比表(http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx#compare),它僅在旗艦版中具有這個功能。
為了便于說明,我將使用一個假想的,有Web、業(yè)務(wù)和數(shù)據(jù)層,以及一些共享模型對象的應(yīng)用程序作為示例,如下圖所示。
圖 1 假想的應(yīng)用程序分層圖
這里沒有什么特別的,圖中顯示了每一層的名字,數(shù)字是代碼單元的編號(在這里,你可以加入獨立的命名空間或類)。為了創(chuàng)建一個圖表,我們需先創(chuàng)建一個新的Visual Studio 2010建模項目,在該項目上增加新的層圖,我使用設(shè)計器添加了形狀和依賴線,看起來還不錯,但我想讓它變得更好看。
為了將模塊放入某一層,你可以從解決方案資源管理器(Solution Explorer)或新的架構(gòu)瀏覽器(Architecture Explorer)進行拖放,兩種方法都可以找到你想找的對象,雖然方法不一樣,但結(jié)果是一樣的,當所有模塊分配到正確的層中后,你可以在圖表上點擊右鍵,然后選擇“驗證架構(gòu)(Validate Architecture)”。
Visual Studio 2010然后就會編譯你的解決方案,并驗證其架構(gòu),如果不出現(xiàn)錯誤,你將會看到如下的輸出信息:
1/28/2010 4:04:17 PM: Architecture validation is starting.
1/28/2010 4:04:23 PM: Architecture validation succeeded (0 suppressed).
現(xiàn)在我們嘗試添加一個非法調(diào)用,在這里,我首先在Biz項目上添加一個引用,但失敗了,因為它將會產(chǎn)生一個循環(huán)依賴,我想這在以前的版本中一樣存在,但我卻從沒遇到過。
增加了非法調(diào)用后,我再次驗證架構(gòu),解決方案將會重新編譯,這次的輸出信息如下:
1/28/2010 4:19:46 PM: Architecture validation is starting.
1/28/2010 4:19:55 PM: Architecture validation failed with 3 violation(s) (0 suppressed).
OK,我們的行為正如預(yù)期的那樣,點擊錯誤列表,可以看到錯誤的詳細信息。
圖 2 錯誤列表
因此,不僅在數(shù)據(jù)層的代碼觸發(fā)事件上增加了討厭的調(diào)用,引用本身也有,從這里的錯誤列表我們可以做許多事情。
在錯誤上點擊右鍵,從彈出的右鍵菜單中選擇“管理驗證錯誤”,然后點擊“抑制錯誤”,當然你這么做需要冒一定的風險,編譯的輸出信息如下:
1/28/2010 4:25:03 PM: Architecture validation is starting.
1/28/2010 4:25:09 PM: Architecture validation succeeded (3 suppressed).
如果你想立即修復(fù)錯誤,你可以雙擊錯誤信息獲取違規(guī)代碼,如果是一個正常的編譯失敗,你會看到一些語法錯誤,如果你使用TFS,可以選擇“創(chuàng)建工作項目”基于錯誤信息創(chuàng)建一個新的TFS工作項目。
通過設(shè)置建模項目的“驗證架構(gòu)”參數(shù),也可以將其包括在本地編譯過程中,TFS用戶也可以增加這一步,只需要在編譯標簽增加下面的MSBuild參數(shù)即可:
- /p:ValidateArchitecture=true
這對于團隊構(gòu)建特別有用,因為你可以阻止檢入可能會引起架構(gòu)問題的代碼。
我很高興地看到這些東西出現(xiàn)在VS 2010中,我不知道這些新的組件是否能達到NDepend的功能,但他們的出現(xiàn)也標志著Visual Studio 2010的進步,我希望這些工具能夠幫助我們真正改進,形成一個更高效的團體。
在編寫本文的時候,我發(fā)現(xiàn)最新的NDepend 3 Beta版完全集成到Visual Studio中了,我將另起一篇比較Visual Studio 2010中的DGQL查詢和NDepend的CQL。
原文出處:http://blogs.lessthandot.com/index.php/Architect/DesigningSoftware/validating-architecture-with-visual-stud-2010
原文名:Validating Architecture with Visual Studio 2010
作者:AlexCuse
【編輯推薦】