31
Практическое занятие Изучение Кода с использованием Инструментов Архитектуры в Visual Studio Ultimate 2012 Версия практической: 11.0.51106.01 Обновление 1 Последнее обновление: 27.11.2012

Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

  • Upload
    -

  • View
    1.687

  • Download
    7

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Практическое занятие

Изучение Кода с использованием

Инструментов Архитектуры в Visual

Studio Ultimate 2012

Версия практической: 11.0.51106.01 Обновление 1

Последнее обновление: 27.11.2012

Page 2: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

СОДЕРЖИМОЕ

ОПИСАНИЕ ................................................................................................................................................. 3

УПРАЖНЕНИЕ 1: ВВЕДЕНИЕ В ВОЗМОЖНОСТИ ГЕНЕРИРОВАНИЯ ГРАФА ЗАВИСИМОСТЕЙ . 3

УПРАЖНЕНИЕ 2: ВВЕДЕНИЕ В ВОЗМОЖНОСТИ НАВИГАЦИИ ГРАФА ЗАВИСИМОСТЕЙ ......... 14

УПРАЖНЕНИЕ 3: РАБОТА С УЗЛАМИ ГРАФА И ГРУППИРОВКА .................................................... 26

Page 3: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Описание

В этой практической работе вы узнаете, как создавать и просматривать графы зависимости с Visual

Studio Ultimate 2012 в порядке для лучшего понимания архитектуры системы.

Предварительные требования

Чтобы выполнить это практическое занятие, вам необходима виртуальная машина Visual Studio

2012 предоставляемая Microsoft. Для получения дополнительной информации по получению и

использованию этой виртуальной машины, пожалуйста, см. это сообщение в блоге.

Обновление практической работы

Для Обновления 1 были сделаны следующие изменения для данного практического занятия:

Добавлен дополнительный шаг для Упражнения 2 - введение в возможности соответствия

кода.

Упражнения

Эта практическая работа содержит следующие упражненния:

1. Введение в возможности Генерирования Графа Зависимостей

2. Введение в возможности Навигации Графа Зависимостей

3. Работа с Узлами Графа и Группировка

Оценочное время выполнения заданий: 30 минут.

Упражнение 1: Введение в

возможности Генерирования Графа

Зависимостей В этом упражнении вы узнаете, как создать граф зависимостей, который показывает отношения

между типами сборки приложений (таких как вызовы, наследования, возвратов и так далее), а

также типов внешних сборок.

1. Зарегистрироваться как Julia. Пароли у всех пользователей P2ssw0rd.

Page 4: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

2. Запустите Microsoft Visual Studio из Start | All Programs | Microsoft Visual Studio 2012 |

Visual Studio 2012.

3. Нажмите ссылку Connect to Team Foundation Server на Стартовой Странице.

Рисунок 1

Подключение к Team Foundation Server

4. Выберите TailspinToysCollection и нажмите Connect для продолжения. Если появится

запрос на подтверждение, выберите Yes.

Рисунок 2

Выбор проекта TailspinToysCollection

5. Откройте Source Control Explorer, нажав на ссылке в Team Explorer | Home.

Page 5: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

6. В Source Control Explorer перейдите к Tailspin Toys | Development | Iteration 2 и выполните

двойной щелчок мыши на файле TailspinToys.sln для открытия решение Tailspin Toys.

Рисунок 3

Открытие проекта

7. Перестройте решение (Build | Rebuild Solution из главного меню). Этот шаг может занять

несколько минут до завершения.

8. Самый быстрый способ начать работу - это генерирование общего графа зависимостей для

всего решения. Создайте новый граф зависимостей (Architecture | Generate Dependency

Graph | For Solution). Граф зависимостей хранится в формате Directed Graph Markup

Language (далее DGML), который позволяет вам работать с ним с помощью Visual Studio

2012, а также других стандартных инструментов.

Примечание: Создание графа зависимостей для всех проектов в решении первоначально

может занять несколько минут. При создании графа зависимостей в первый раз,

создается индекс кода для всех зависимостей, которые встречаются, чтобы улучшить

производительность последующих операций.

Page 6: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 4

Граф зависимостей для всего решения

9. На данный момент у нас только представление зависимостей между сборками, которые

являются частью решения, и внешними сборками. Серые линии различной толщины

представляют величину отношений взаимозависимостей между сборками, чем больше

толщина линии, тем больше связь. Каждый узел сборки может быть динамически раскрыт,

чтобы показать содержащиеся дочерние узлы, которые мы будем изучать в следующем

упражнении.

Рисунок 5

Узлы могут раскрываться динамически

Примечание: Представление сгенерированного графа зависимостей, которые вы видите,

может отличаться от показанного на рисунке. Вам, возможно, потребуется

Page 7: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

дополнительно масштабировать, прокрутить и визуально найти объекты, указанные в

шагах практической работы.

10. Очистите диаграмму, нажав Ctrl + A и затем клавишу Delete.

11. Можно также начать с создания граф зависимостей с более узкой области с помощью

Solution Explorer или Architecture Explorer. Это позволит вам выбрать только те типы или

члены, которые вы хотите видеть, и затем создать новый граф или добавить эти элементы

на существующий граф.

12. Скажем, мы заинтересованы в поиске зависимостей и других отношений класса Product, в

рамках проекта Tailspin.Model. Сузьте область Solution Explorer, щелкнув правой кнопкой

мыши на узел проекта Tailspin.Model и выбрав параметр Scope to This.

Рисунок 6

Ограничение по определенному проекту в Solution Explorer

13. В поле поиска Solution Explorer введите “Product” для выполнения поиска. Это быстро

найдет и подсветит код, который содержит искомую строку.

Page 8: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 7

Поиск текста в типах и членах решения

14. Выберите результаты поиска, нажав в любом месте и выбрав Ctrl + A.

Page 9: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 8

Выбор всего результата поиска

15. На панели инструментов Solution Explorer нажмите кнопку Show on Code Map.

Рисунок 9

Добавление выбранных типов и методов из Solution Explorer в активный граф

16. Полученный граф теперь показывает выбранный и связанные классы с Product, члены и их

отношения друг с другом.

Page 10: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Figure 10

Граф, показывающий выбранные типы и члены

Примечание: Можно также перетащить типы и члены из окна Solution Explorer в граф.

Ваш граф может выглядеть немного иначе.

17. Еще одним способом для создания или добавления графа зависимостей является

использование Architecture Explorer, который обеспечивает тонкую настройку навигации и

выбора типов и членов. Откройте Architecture Explorer из Architecture | Windows.

Рисунок 11

Начальное представление Architecture Explorer

Page 11: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

18. Допустим, что мы хотим видеть, как связанные типы и методы Product из проекта

Tailspin.Model относятся к проекту Tailspin.Web. В Architecture Explorer выберите параметр

Class View для просмотра всех доступных пространств имен.

Рисунок 12

Начало навигации в Class View

19. В поле поиска над списком имен введите «Tailspin.Web» и нажмите Enter, чтобы показать

только пространства имен, определенных в рамках проекта Tailspin.Web.

Рисунок 13

Ограничение результатов пространства имен с использованием фильтра

20. Выберите все пространства имен с помощью Ctrl + A для получения списка всех

содержащихся типов.

Page 12: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 14

Продолжение навигации выбором пространства имен

21. Как только все типы для пространства имен Tailspin.Web.* отображены, выберите их все

(снова с использованием Ctrl + A).

Рисунок 15

Выбор всех перечисленных типов

22. Нажмите мышкой и удерживайте на выбранных типах и затем начните перетаскивать на

текущий граф зависимостей. Перед тем как отпустить на граф зажмите клавишу Ctrl и

бросьте типы на граф. Модификатор элемента управления вызовет родительские

контейнеры для добавления типов на диаграмму.

Page 13: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 16

Объединение дополнительных типов на существующих граф

23. В результате объединения новые типы с существующим графом приведет к

представлению, которое обеспечивает некоторое понимание как веб-приложение

относится к классам Product из проекта Tailspin.Model.

Page 14: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 17

Часть представления графа, который показывает, как выбранные сущности связаны

Примечание: Для изучения как использовать Architecture Explorer смотрите

практическую работу “Использование Architecture Explorer в Visual Studio Ultimate 2012

для анализа вашего кода”.

Упражнение 2: Введение в возможности Навигации Графа

Зависимостей

В этом упражнении мы узнаем больше о том, манипулировать и выполнять навигацию в графе

зависимостей.

1. Начнем с графа, который мы подготовили в ходе последнего задания, увеличьте и

распределите по необходимости, для того получить хорошее представление узла класса

HomeController.

Примечание: Масштабировать можно с помощью кнопок на панели инструментов графа

или просто с помощью колеса прокрутки мыши.

Page 15: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 18

Часть представления графа с классом HomeController

2. Выберите узел класса HomeController и задержите курсор мыши над линией связи пока не

появится один из Target Node для IProductRepository.

Рисунок 19

Просмотр связей между узлами графа

Page 16: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

3. Элемент управления навигацией, который появляется при наведении на линии связи,

предоставляет два действия, которые позволяют перемещаться к исходному или целевому

узлу. Нажмите на стрелку, указывающую от узла класса HomeController для навигации к

IProductRepository.

Рисунок 20

Навигация к другому узлу графа

4. Используйте кнопку Zoom To Fit на панели инструментов графа для подгонки всего для

отображения на экране.

Рисунок 21

Расположение кнопки Zoom To Fit

5. Вы должны теперь видеть, как класс HomeController связан с интерфейсом

IProductRepository, с помощью вызовов GetProduct и GetProductCategory.

Page 17: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 22

Граф зависимостей, который показывает, как класс HomeController использует

IProductRepository

6. Вы также можете перейти из графа непосредственно к связанному коду. Дважды

щелкните на узле HomeController для загрузки HomeController.cs в окне редактора

кода.

Page 18: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 23

Переход из графа к источнику

7. Здесь вы можете увидеть точно, как методы, определенные в интерфейсе,

используются в коде.

Рисунок 24

Представление кода для HomeController

8. Обновление 1 содержит новую функцию, называемую Code Map, чтобы облегчить

одновременную навигацию и визуализацию кода. Опираясь на существующую

функциональность, такую как ориентированные графы, она позволяет вам перемещаться

по вашему исходному коду и добавлять выбранные классы, члены, поля и так далее

непосредственно в представление графа. Например, щелкните правой кнопкой мыши на

Page 19: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

методе Index в рамках класса HomeController и выберите Show on Code Map из

контекстного меню.

Рисунок 25

Визуализация метода напрямую из редактора исходного кода

9. Поведение по умолчанию при переходе к источнику — это размещение графа

зависимостей в группе вторичных вкладок, чтобы исходный код и граф были видны в одно

и то же время. Это дополнительно обеспечивает одновременную навигацию и

визуализацию. Кроме того обратите внимание, что указатель с зеленой стрелкой

отображается рядом с узлом индекса в представлении графика и что определение метода

индекс выделен в окне редактора исходного кода.

Рисунок 26

Функциональность Code Map в действии

Примечание: При использовании функции Code Map полезно делать граф и исходный

код видимыми в одно и то же время, либо с помощью групп вкладок или плавающего

представления графа и поместив его в своем собственном окне (при использовании

нескольких мониторов). Visual Studio автоматически сделает это для вас в некоторых

обстоятельствах, но если у вас уже есть открытый граф в той же группе вкладок, что и

файл исходного кода, они будут восстанавливаться в той же группе вкладок.

10. Поместите курсор на строку, которая определяет класс HomeController, еще раз обратите

внимание, что функцию Code Map также обновляет представление графа, показывая

зеленую стрелку рядом с узлом HomeController.

Page 20: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 27

Code Map синхронизирует представление кода и графов

11. Функция Code Map также предоставляет ряд других функций визуализации через редактор

кода. Щелкните правой кнопкой мыши на определении метода Index и выберите Show

Related Items on Code Map | Show Methods This Calls. В более сложных методах это может

помочь показать, как часть кода взаимодействует со своим собственным классом, другими

архитектурными слоями приложения и внешним кодом.

Рисунок 28

Визуализация вызовов методов из кода

Page 21: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 29

Граф, показывающий методы вызываемые методом Index

12. Теперь давайте рассмотрим, как мы можем перемещаться по графу, чтобы определить,

как мы используем внешние сборки. Создайте новый граф зависимостей из Architecture |

Generate Dependency Graph | For Solution.

13. Разверните группу Externals для поиска внешних сборок, используемых приложением

Tailspin.

Page 22: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 30

Развертывание группы Externals

14. Увеличьте и перейдите в узел System.Web.dll в группе Externals так чтобы вы видели все

используемые пространства имен.

Рисунок 31

Развертывание узла System.Web.dll

15. Найдите и разверните узел System.Web.Routing, чтобы увидеть содержимое.

Page 23: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 32

Развертывание узла Systm.Web.Routing

16. Выберите узел класса RouteTable для просмотра линий связей.

Рисунок 33

Узел класса RouteTable, показывающий входящие ссылки

17. Найдите и выберите линию связи от исходного узла в Tailspin.WebUpgraded.dll. Мы могли

бы просто использовать кнопки со стрелками для перехода к исходному узлу, как мы

делали это ранее, но на этот раз, давайте создадим новый граф, который просто содержит

отношения, которые в настоящее время мы заинтересованы найти. Чтобы создать новый

граф, нажмите с shift-том левой кнопкой мыши в центре на кнопку +.

Page 24: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 34

Создание нового графа показывает выбранные связи

18. В результирующем графе вы можете видеть, что метод MvcApplication.Application_Start

вызывает метод get_Routes (по сути, свойство RouteTable.Routes).

Page 25: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 35

Граф, показывающие выбранные связи

19. Закройте схемы ссылок без сохранения изменений.

Page 26: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Упражнение 3: Работа с Узлами

Графа и Группировка

В этом упражнении вы узнаете, как уменьшить сложность графа зависимостей, путем удаления

нежелательных узлов, регулируя группировки узлов и изменения свойств узла графа.

1. Если продолжаете предыдущее упражнение, закройте графа ссылок и вернитесь к

начальному графу зависимостей. Затем выберите Advanced | Group | Collapse All.. В

любом случае, перегенерируйте граф, выбрав Architecture | Generate Dependency Graph |

For Solution.

Рисунок 36

Граф зависимостей для всего решения

2. Разверните узел Externals из графа зависимостей для открытия внешних сборок,

используемых приложением Tailspin.

Рисунок 37

Открытая группа Externals, которая показывает входящие связи

Page 27: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Примечание: Толстые серые линии связи подключены к группе Externals, останавливаясь

на границе группы. Цель этого заключается в том, чтобы уменьшить визуальную

сложность графа зависимостей. Если вы удалите группировку Externals, вы сможете

увидеть все линии прямой связи между внешними и внутренними сборками, а также

более подробно между сборками, которые сгруппированы в пределах Externals.

3. Выберите узел сборки mscorlib.dll и нажмите клавишу Delete, чтобы удалить его из графа.

Обоснование удаления этого узла, а также многих других широко используемых внешних

сборок и типов, может быть в том, что они добавляют слишком много шума в граф и не

позволяет в нем легко ориентироваться.

Рисунок 38

Удаление узла из графа

4. Удалите узел System.dll из группы Externals.

5. Выберите группу Externals, щелкните правой кнопкой мыши и Advanced | Group | Remove

Group. Это позволит удалить группировку, но не узлы графа, содержащиеся в ней.

6. Удалите узел Tailspin.Test.Model.dll из графа. Мы должны удалить этот узел, чтобы

получить лучшее видение как развернутое приложение работает без компонентов

тестирования.

Page 28: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 39

Упрощенный граф зависимостей

7. Хотя удаление группы Externals дает нам лучшее представление о том, что происходит, это

делает его трудно различимым между сборками приложения и теми, которые были ранее

сгруппированы, как Externals. Это может быть исправлено путем добавления свойства узла

для окрашивания в другой цвет для внешней сборки. Нажмите кнопку + на панели Legend

и выберите Node Property | Is External.

Page 29: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 40

Создание свойства узла, которое ссылается на IsExternal

8. Это свойство узда Is External добавляется к панели Legend. Левой кнопкой мыши нажмите

на сером поле справа от свойства Is External и выберите свойство Background..., чтобы

загрузить окно Color Set Picker.

Рисунок 41

Модификация цвета фона на основе свойства IsExternal

9. В окне Color Set Picker, выберите True в выпадающем поле и выберите красный цвет (или

другой отличный от синего цвета) и нажмите кнопку ОК.

Page 30: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 42

Выбор другого цвета для свойства, когда оно справедливо

Page 31: Изучение кода с использованием инструментов архитектуры в Visual Studio Ultimate 2012

Рисунок 43

Граф зависимостей, показывающий узлы внешних ссылок красным цветом

Свои отзывы и предложения вы можете отправить по электронной

почте: [email protected]

© 2013 г. Корпорация Microsoft. Все права защищены.