圖層圖表:方針
您可以描述應用程式的結構在高階藉由建立 圖層圖表 在 Visual Studio Ultimate。若要,確定您的程式碼一致。此設計,請驗證您的圖層圖表的程式碼在 Visual Studio Ultimate 或 Visual Studio Premium。可以在建置處理序也可以將圖層驗證。請 Channel 9 視訊:使用圖層圖表,設計和驗證您的結構參閱。
什麼是圖層圖表?
與傳統的架構圖表一樣,圖層圖表會識別設計的主要元件或功能單元及其相依性。圖表上的每個節點 (稱為「圖層」(Layer)) 代表命名空間、專案或其他成品的邏輯群組。您可以繪製應該存在設計中的相依性。與傳統的架構圖表不同之處在於,您可以驗證原始程式碼的實際相依性是否符合您已指定的預定相依性。您可以在 Team Foundation Server 上進行一般組建的驗證部分,以便確保程式碼在未來變更後仍繼續遵守系統的架構。請參閱 圖層圖表:參考。
如何設計或更新您的圖層圖表上的應用程式
下列步驟將概述如何在開發程序中使用圖層圖表。本主題的後續小節會詳細說明各個步驟。如果您正在開發新的設計,請省略參考現有程式碼的步驟。
注意事項 |
---|
這些步驟按照大約的順序列出。您可能會想要同時操作這些工作、根據您自己的情況重新排列它們,以及在開始專案中的各個反覆項目時重新審核這些工作。 |
建立圖層圖表 (針對整個應用程式或其中一個圖層)。
定義圖層以代表應用程式的主要功能區域或元件。根據其功能命名這些圖層,例如「展示」或「服務」。如果您有 Visual Studio 方案,您可以讓每個圖層與「成品」(Artifact) 的集合 (例如專案、命名空間、檔案等等) 產生關聯。
找出圖層之間的現有相依性。
編輯圖層和相依性,以便顯示您想要讓程式碼反映的更新設計。
設計應用程式的新區域,方法是建立圖層來代表主體架構區塊或元件,以及定義相依性來顯示每個圖層如何使用其他圖層。
編輯圖表的版面配置和外觀來協助您與同事討論圖表。
針對圖層圖表驗證程式碼,以凸顯程式碼與您所需要之架構之間的衝突。
更新程式碼以符合您的新架構。反覆開發和重構程式碼,直到驗證沒有顯示任何衝突為止。
在建置流程中加入圖層驗證,以便確保程式碼繼續遵守您的設計。
建立圖層圖表
圖層圖表必須建立在模型專案內。您可以將新圖層圖表加入到現有模型專案,為圖層圖表建立新模型專案或將現有的圖層圖表複製到相同模型專案中。
重要事項 |
---|
不要從模型專案將現有圖層圖表加入、拖曳、複製或到其他模型專案或方案中的其他位置。以此方法所複製的圖層圖表會和原始圖表擁有相同的參考,即使您已修改此圖表也一樣。這樣會導致圖層驗證無法正確執行,同時可能會造成其他問題,例如項目遺失或嘗試開啟圖表時發生其他錯誤。 |
請參閱 從程式碼建立圖層圖表。
定義圖層代表功能區域或元件
圖層代表「成品」(Artifact) 的邏輯群組,例如專案、程式碼檔案、命名空間、類別和方法。您可以從 Visual C# .NET 和 Visual Basic .NET 專案建立從成品生成的圖層,也可以將規格或計劃藉由連結文件附加至圖層 (例如, Word 文件或 PowerPoint 簡報)。每個圖層會以矩形形狀出現在圖表上,並顯示連結到該圖層的成品數目。圖層可以包含巢狀圖層,以描述更詳細的工作。
依照一般的方針,根據其功能命名圖層,例如「展示」或「服務」。如果成品彼此緊密相依,您就應該將它們放置在相同的圖層中。可分別更新或用於不同應用程式中的成品,則應該放置在不同的圖層中。若要深入了解圖層模式,請造訪「模式和實務」網站,網址為:https://go.microsoft.com/fwlink/?LinkId=145794 (英文)。
提示 |
---|
有些類型的成品可以連結至圖層,但是不支援針對圖層圖表進行驗證。若要了解成品是否支援驗證,請開啟 [圖層總管],然後檢查成品連結的 [支援驗證] 屬性。請參閱 圖層與成品之間的連結。。 |
當您更新不熟悉的應用程式時,可能會使用相依性圖形來協助探索和了解程式碼。這些圖形可以協助您找出程式碼中的叢集和相依性。您可能也會使用 [架構總管] 探索命名空間和類別 (這通常會正確對應至現有的圖層)。這可讓您更輕鬆地將成品指派給圖層。然後,您就可以使用圖層圖表來協助更新程式碼。
如需詳細資訊,請參閱下列主題:
尋找圖層之間的現有相依性
只要與某個圖層關聯的成品參考到與另一個圖層關聯的成品,相依性便會存在。例如,某個圖層中的類別會宣告在另一個圖層中具有類別的變數。您可以對現有相依性進行反向工程,以探索這些相依性。
注意事項 |
---|
您無法針對特定種類的成品進行其相依性的反向工程。例如,對連結到文字檔的圖層進行反向工程時,無法找出與該圖層之間的任何相依性。若要查看哪些成品具有可施以反向工程的相依性,請在一個或多個圖層上按一下滑鼠右鍵,然後按一下 [檢視連結]。在 [圖層總管] 中,檢查 [支援驗證] 資料行。如果成品的這個資料行顯示 [False],則無法進行該成品的相依性反向工程。 |
若要對圖層之間的現有相依性進行反向工程
- 選取一個或多個圖層、以滑鼠右鍵按一下選取的圖層,然後按一下 [產生相依性]。
通常,您會看到一些不應該存在的相依性。您可以編輯這些相依性,以便與預期的設計保持一致。
編輯圖層和相依性顯示預期的設計
想要描述您計劃對系統或預定架構的變更,請使用下列步驟編輯圖層圖表。您也可以考慮進行某些重構變更,以便在擴充程式碼前改善其結構。請參閱 改善程式碼的結構。
若要 |
請執行這些步驟 |
---|---|
刪除不應該存在的相依性 |
按一下相依性,然後按下 DELETE。 |
變更或限制相依性的方向 |
設定其 [Direction] 屬性。 |
建立新的相依性 |
使用 [相依性] 和 [雙向相依性] 工具。 若要繪製多個相依性,請按兩下工具。當您完成後,請按一下 [指標] 工具,或按 ESC 鍵。 |
指定與圖層關聯的成品不可相依於指定的命名空間 |
在圖層的 [Forbidden Namespace Dependencies] 屬性中輸入命名空間。請使用分號 (;) 來分隔命名空間。 |
指定與圖層關聯的成品不可屬於指定的命名空間 |
在圖層的 [Forbidden Namespaces] 屬性中輸入命名空間。請使用分號 (;) 來分隔命名空間。 |
指定與圖層關聯的成品必須屬於其中一個指定的命名空間 |
在圖層的 [Required Namespaces] 屬性中輸入命名空間。請使用分號 (;) 來分隔命名空間。 |
改善程式碼的結構
重構變更是不會影響應用程式行為,但有助於程式碼在未來更容易變更和擴充的改良作業。結構完善的程式碼具有方便您擷取至圖層圖表的設計。
例如,如果您針對程式碼中的每個命名空間建立圖層,然後對相依性進行反向工程,則圖層之間應該至少都有一組單向相依性。如果您使用類別或方法做為圖層而建立更詳細的圖表,其結果應該也會具有相同的特性。
若非如此,就表示此程式碼將很難在其生命週期內變更,而且較不適合使用圖層圖表進行驗證。
設計新的應用程式區域您的
當您開始進行新專案的開發,或在新專案中進行新的區域時,您可以先繪製圖層和相依性來協助識別主要元件,然後再開始開發程式碼。
盡可能在圖層圖表中顯示可識別的架構模式。例如,描述桌面應用程式的圖層圖表可能會包含展示、領域邏輯和資料存放區之類的圖層。涵蓋應用程式之單一功能的圖層圖表可能會有模型、檢視表和控制站之類的圖層。如需這類模式的詳細資訊,請參閱模式和實務:應用程式架構 (英文)。
如果您經常建立類似的模式,請建立自訂工具。請參閱 HOW TO:定義自訂模型工具箱項目。
建立每個圖層的程式碼成品,例如命名空間、類別或元件。這樣可讓您更輕鬆地追蹤程式碼,以及將程式碼成品連結至圖層。一旦您建立每個成品之後,請將它連結到適當的圖層。
您不需要將大部分類別和其他成品連結至圖層,因為它們都位於您已經連結至圖層的較大成品內部 (例如命名空間)。
針對新功能建立新的圖表。通常,您會有一個或多個描述整個應用程式的圖層圖表。如果您正在應用程式內部設計新功能,請勿加入或變更現有的圖表。請改為建立您自己的圖表,以便反映新的程式碼組件。新圖表中的圖層可能包括新功能的展示、領域邏輯和資料庫層。
當您建置應用程式時,就會針對整體圖表和更詳細的功能圖表驗證程式碼。
編輯展示和討論的配置
為協助您識別圖層和相依性,並且方便與小組成員討論相關內容,請以下列方式編輯圖表的外觀和配置:
變更圖層的大小、圖案和位置。
變更圖層和相依性的色彩。
- 選取一個或多個圖層或相依性、按一下滑鼠右鍵,然後按一下 [屬性]。在 [屬性] 視窗中,編輯 [Color] 屬性。
驗證程式碼物件圖表
在完成圖表的編輯後,您可以隨時以手動方式根據程式碼驗證此圖表,或是在每次執行本機組建或Team Foundation Build時自動驗證。
請參閱:
在建置流程中包含圖層驗證
更新程式碼以符合新的架構
在您第一次根據更新的圖層圖表驗證程式碼時,通常會出現錯誤。這些錯誤的可能成因如下:
成品指派給錯誤的圖層。在此情況下,請移動成品。
類別之類的成品以與架構發生衝突的方式使用另一個類別。在此情況下,請重構程式碼以移除相依性。
若要解決這些錯誤,請更新程式碼直到驗證時不再出現錯誤為止。這通常是反覆進行的程序。如需這些錯誤的詳細資訊,請參閱使用圖層圖表驗證程式碼。
注意事項 |
---|
當您開發或重構程式碼時,可能必須將新的成品連結至圖層圖表。但不一定有此必要。例如,如果您的圖層代表現有的命名空間,而且新的程式碼只是將更多資料加入至這些命名空間,就不需要進行此動作。 |
在開發過程中,您可以隱藏驗證期間已報告過的某些衝突。例如,您可能會想要隱藏已經處理的錯誤,或是與特定情節無關的錯誤。當您隱藏錯誤時,最好在 Team Foundation 中記錄工作項目。要執行這項工作,請參閱 使用圖層圖表驗證程式碼。
將圖層驗證在建置流程
若要確保未來對程式碼的變更能符合圖層圖表,請將圖層驗證納入方案的標準建置流程。每當其他小組成員建置方案時,程式碼與圖層圖表中相依性之間的任何差異都會報告成建置錯誤。如需包含圖層驗證的建置流程的更多詳細資訊,請參閱 使用圖層圖表驗證程式碼。