淺談如何用Visual Studio 2010搭建架構
Posted on 2011-07-26 10:40 Saar閱讀(185) 評論(0)編輯收藏
Layer Diagram 最早應該出現在TechEd 2008,它不僅可以清晰展示應用程序架構,而且能夠為幫助架構師隨時檢驗代碼之間的引用關系是否與層圖一致,可謂既好看又好用。本文以Visual Studio 2010為例,一步步看來看如何為一個應用程序創建層圖并且以此來對應用程序進行校驗。
首先來看“好看”的部分,這是我為最近的一個小項目畫的層圖:
呵呵,我美工功底較差,顏色問題啥的大家湊合一下吧;這個層圖“好看”在于:
其一,它把整個解決方案的架構信息清楚的呈現出來了(色塊)——從***下的數據訪問,中間的業務邏輯,夾在業務邏輯和ViewModel中間的服務,再到上面的ViewModel和UI,一目了然;
其二,各層之間的依賴關系明確(箭頭)——服務層依賴于業務邏輯層,業務邏輯層依賴于數據訪問層,這三個層都依賴于實體層,實體層不依賴于任何其它層……
怎么畫出來的?以一個最簡單的三層架構的代碼為例:
創建一個三層架構的項目,或者你敢不敢下載下面的代碼試試^v^:
(UI-BLL-DAL)
(由于是下載的代碼,VS可能會有安全提示)
點擊主菜單Architecture –>New Diagram:
選擇“Layer Diagram”,給它取個名字:
此時,VS會要求我們建一個Modeling的項目來容納層圖。
一樣,取名,確定就行了。
這樣,我們的***個層圖就創建好了——空的啊。
讓我們來給它添一些層。首先,從UI開始,點擊工具箱里的層,然后,在層圖設計器上點擊一下,一個層就建好了。雙擊Layer1,改名叫“UI”。
同樣操作,我們為BLL、DAL和Entity建立各自的層。
為層與層之間設置依賴關系。從工具箱選擇“依賴”(單向箭頭),從UI畫向BLL,表示:UI對BLL有直接依賴。同樣的方法,讓BLL依賴于DAL,這三個層同時依賴于Entity。
接下來,我們就要在層與實體項目之間建立映射。這里有一些選項,我們可以將層映射到文件、Assemblies、命名空間、類等,映射關系的建立也可以通過解決方案瀏覽器或者架構瀏覽器來完成。這里這使用架構瀏覽器為例,在層與命名空間之間建立映射關系。
打開架構瀏覽器:主菜單 –>Architecture –>Windows –>Architecture Explorer。
點擊Class View –>然后,把Simple3Tier.UI拽到UI層上,這樣,我們就把Simple3Tier.UI映射到了UI層上。
這樣,我們就可以看到UI層右上角多了一個1,表明它與一個對象形成了映射關系,同時,點擊層圖上的UI,在右側的層瀏覽器(Layer Explorer)中,我們可以看到它到底映射到哪一個對象。
同樣,我們把BLL/DAL/Entity分別映射到對應的圖形上。我們這樣項目的層圖就大功告成了:
完成了層圖,就可以用來驗證應用程序了。讓我們右擊空白區域,點擊“驗證架構”。如果你是下載的上文中提供的項目,那么,就應該“中招”了^v^——3個錯誤:
我們稍微看一下錯誤信息:看來是因為UI對DAL有依賴。而我們的層圖中沒有這樣的依賴關系——或者不允許這種依賴關系的存在。
因此,至少有兩種改法,***,給層圖添加一個依賴關系:從UI到DAL。我想大部分時間我們不會這么做,大家懂的;第二,修改代碼。
我們以修改代碼為例,雙擊一行錯誤,層圖會幫助我們定位到代碼(Main方法),修改代碼如下:
- BizClass bizClass = newBizClass();
- var result = bizClass.GetMessage();
- // DAL.DataClass dataClass = new DAL.DataClass();
- // var result = dataClass.GetMessager().Message;
- System.Console.WriteLine(result);
右擊錯誤,點擊“Go to”,選擇“層圖”。回到層圖后,重點右擊驗證。再看Error List,錯誤就沒有了。
層圖可以幫助我們校驗代碼依賴關系。當代碼依賴關系與架構不符時,層圖可以幫助我們找到錯誤代碼,以保證整個架構不被破壞。這一點在大型項目多人開發時非常重要。
如果想要在Build時自動進行架構校驗,只要修改層圖文件的Build Action屬性為Validate就可以了。
資源:
Existing Layer Diagrams: Application Architecture Guide Layer Diagrams
Skinner’s Blog: Layer Diagram
MSDN:Layer Diagrams: Guidelines
MSDN: How to: Create Layer Diagrams from Artifacts
Little knowledge is dangerous.
原文鏈接:http://www.cnblogs.com/xiaomi7732/archive/2011/07/27/2117806.html
【編輯推薦】