教你如何用好Visual Studio 2010層次驗證
原創(chuàng)【51CTO經(jīng)典譯文】在之前的“我喜歡的特性”這篇博文中,我講到如何利用Visual Studio 2010終極版的“依賴關(guān)系圖”特性去理解系統(tǒng)的結(jié)構(gòu)關(guān)系。親自動手完成一個項目對加深所了解的知識是很有益處的。接下來,我要講的就是層次驗證(Layer Validation),它能夠進(jìn)一步改善程序的架構(gòu)。
建立一個層次圖(Layer Diagram)
我們將使用上篇博文的“Tailspin Toys”應(yīng)用程序來進(jìn)行說明。既然我們已經(jīng)知道這個應(yīng)用程序的基本結(jié)構(gòu),接下來的目標(biāo)就是讓它和我們的架構(gòu)能夠很好的結(jié)合到一起。在這個例子中,應(yīng)用程序所采用的是模型-試圖-控制器(MVC)架構(gòu)。我們需要確認(rèn)的是,它真的是按照這種架構(gòu)模式來實現(xiàn)的。首先,我們通過Architecture(架構(gòu))菜單新建一個層次圖:
它將產(chǎn)生一個空的層次圖,我們可以在其中指定和規(guī)劃我們的架構(gòu)層次。不需做太多的工作,我們就可以在窗口上看到所有的基本層次:
雖然這看上去是一個合理的架構(gòu),但是我們需要確認(rèn)物理實現(xiàn)是否真的和邏輯上的結(jié)構(gòu)一一對應(yīng)。要做到這一點,我們可以把類的實現(xiàn)拖動到相應(yīng)的實現(xiàn)層次上:
當(dāng)把類的實現(xiàn)放置在正確的層次上后,右鍵點擊Design Surface(設(shè)計圖面)-> Generate Dependencies(產(chǎn)生依賴關(guān)系)就可以得到相應(yīng)的依賴關(guān)系圖:
一旦按照上面的步驟完成整個過程,你將會得到類似于下面的一個圖。層次資源管理器(Layer Explorer)可以用來瀏覽每一層次中的具體內(nèi)容:
#p#
改進(jìn)你的實施方法:
在這里我們有一副圖描述了哪些已經(jīng)被實際構(gòu)建。但是我對這幅圖有一個疑問:在MVC模式中我們不想讓View直接和Model對話。這種情況往往發(fā)生在所寫的代碼直接訪問數(shù)據(jù)層而沒有通過適當(dāng)?shù)臉I(yè)務(wù)邏輯層(一個很容易犯的低級錯誤)。下面就讓我們通過刪除這一個“箭頭符號”來解決這個問題:
在我們刪除這一“箭頭符號”后,我們可以用鼠標(biāo)右鍵單擊圖形,然后選擇驗證架構(gòu)(Validate Architecture):
在這里,Visual Studio將會分析所有的依賴關(guān)系,并查找其中任何違背這個層次圖的依賴關(guān)系,然后錯誤就會出現(xiàn)在錯誤列表中:
現(xiàn)在,我可以瀏覽并修改我的代碼了,并重復(fù)使用驗證架構(gòu)直到?jīng)]有任何錯誤為止。
在構(gòu)建中執(zhí)行分層:
這里我有一個清晰的架構(gòu)和相應(yīng)的實施方法。我們都知道接下來將發(fā)生什么:由于任務(wù)被執(zhí)行、錯誤被修復(fù),該代碼將再次從架構(gòu)中漂移(drift)。因此我們需要找到一種方法來保持同步。
為了解決這個問題,我們將添加一個新的TFS Build Definition,通過運(yùn)用Gated Check-in來執(zhí)行這一架構(gòu):
當(dāng)你運(yùn)用Gated Check-in的時候,所有你提交到TFS的變化抖必須首先通過全部的常規(guī)測試。在這種方法中,如果你存在錯誤,所有的變化將不會被應(yīng)用,也不會進(jìn)入構(gòu)建中。在這種情況下,我們只需要在進(jìn)程選項卡中多加一個步驟即可。
此時,構(gòu)建過程將啟動架構(gòu)驗證步驟,以防止任何違規(guī)事件對TFS進(jìn)行檢查。
總結(jié):
有幾個關(guān)鍵的概念需要明確:
如果你正在寫一個全新的代碼,你可以從邏輯設(shè)計開始并朝著實現(xiàn)你設(shè)計的方向努力。
如果你是從現(xiàn)有的代碼開始,你將發(fā)現(xiàn)你已經(jīng)擁有的東西,也能朝著一個完美的邏輯設(shè)計方向努力。
一旦你的物理和邏輯得到同步,你就可以用防止漂移(drift)的自動方法(如gated check-in)來實現(xiàn)你的設(shè)計。
【編輯推薦】
- Visual Studio 2010中Parallel類實現(xiàn)并行計算
- Visual Studio 2010中C++項目升級指南
- Visual Studio 2010中測試用例工作項類型介紹
- 在Visual Studio 2010選擇合適的項目測試方法
- 細(xì)數(shù)VS 2003到Visual Studio 2010的開發(fā)之路