Лабораторная работа Code Discovery с помощью Architecture

advertisement
Лабораторная работа
Code Discovery с помощью Architecture
Tools в Visual Studio Ultimate 2013
Lab version:
12.0.21005.1
Last updated:
12/13/2013
СОДЕРЖАНИЕ
РЕЗЮМЕ ...................................................................................................................................................... 3
УПРАЖНЕНИЕ 1: ГЕНЕРАЦИЯ ДИАГРАММЫ ЗАВИСИМОСТЕЙ ....................................................... 3
УПРАЖНЕНИЕ 2: НАВИГАЦИЯ ПО ДИАГРАММЕ ЗАВИСИМОСТЕЙ................................................ 12
УПРАЖНЕНИЕ 3: РАБОТА С УЗЛАМИ ДИАГРАММЫ И ГРУППИРОВКА ......................................... 23
Резюме
Из этой лабораторной вы узнаете, как генерировать диаграммы и выполнять переходы по узлам
этой диаграммы в Visual Studio Ultimate 2013 для лучшего понимания архитектуры системы.
Prerequisites
Для выполнения лабораторной работы вам понадобится виртуальная машина с Visual Studio 2013.
Подробнее про то, где загрузить и как ее использовать, здесь.
Упражнения
Эта лабораторная работа включает в себя следующие упражнения:
1. Генерация диаграммы зависимостей
2. Навигация по диаграмме зависимостей
3. Работа с узлами диаграммы и группировка
Примерное время выполнения лабораторной работы: 30 минут.
Упражнение 1: Генерация диаграммы
зависимостеи
В этом упражнении вы увидите, как генерируется диаграмма взаимосвязей между как внешними
сборками, так и сборками приложения.
1. Войдите под аккаунтом Julia Ilyiana (VSALM\Julia). Пароль: P2ssw0rd.
2. Запустите Visual Studio 2013 и откройте Team Explorer.
3. Нажмите на Connect to Team Projects .
Изображение 1
Подключение к командному проекту
4. В Team Explorer – Connect, нажмите два раза на проекте Tailspin Toys.
Изображение 2
Проект Tailspin Toys
5. В Team Explorer – Home нажмите два раза на третьем решении TailspinToys (привязанном
к ветке Main).
6. Пересоберите решение (Build | Rebuild Solution)
7. Создайте новый график взаимосвязей (Architecture | Generate Dependency Graph | For
Solution). График хранится в формате Directed Graph Markup Language (DGML), который
позволяет работать с ним из Visual Studio 2013 и других стандартных инструментов.
Примечание: создание этого графика для всех проектов решения может занять
некоторое время – во время первой генерации графика создается индекс кода для всех
найденных взаимосвязей, что помогает ускорить последующие генерации.
Изображение 3
График взаимосвязей
8. Сейчас вы видите зависимости между сборками-частями решения и внешними. серые
линии разной толщины отображают степень взаимосвязи между узлами, с увеличением
степени с увеличением толщины. Каждый узел можно развернуть для просмотра
вложенных сущностей.
Изображение 4
Развертывание узлов
Примечание: то, что сделаете вы, может отличаться от скриншотов.
9. Очистите диаграмму, нажав Ctrl + A и Delete.
10. Вы можете создать диаграмму с более узким контекстом с помощью Solution Explorer и
Architecture Explorer, выбрав те типы, которые вы хотите видеть, и добавить при
необходимости новые.
11. Предположим, мы хотим посмотреть на взаимосвязи класса Product в проекте
Tailspin.Model. Нажмите правой кнопкой на проект Tailspin.Model и выберите Scope to
This.
Изображение 5
Ограничение Solution Explorer конкретным проектом
12. Введите в поисковом поле в Solution Explorer “Product” для поиска кода.
Изображение 6
Поиск текста в кодовой базе
13. Нажмите на окне результатов поиска и Ctrl + A.
Изображение 7
Результаты поиска
14. В Solution Explorer нажмите на Show on Code Map .
Изображение 8
Solution Explorer
15. Результирующая диаграмма показывает относящиеся к Product классы, члены и
взаимосвязи.
Изображение 9
Диаграмма взаимосвязей
Примечание: сущности можно переносить из Solution Explorer.
16. Сгенерировать диаграмму можно с использованием Architecture Explorer,
предоставляющий гибкий контроль над типами и членами на диаграмме. Откройте
Architecture Explorer из Architecture | Windows.
Изображение 10
Architecture Explorer
17. Предположим, что мы хотим увидеть, как относящиеся к Product типы и методы из
проекта Tailspin.Model взаимодействуют с проектом Tailspin.Web. В Architecture Explorer,
нажмите на Class View для просмотра доступных пространств имен.
Изображение 11
Class View
18. Введите в поисковое поле “Tailspin.Web” и нажмите Enter.
Изображение 12
Результаты поиска
19. Выберите все пространства имен, нажав Ctrl + A.
Изображение 13
Пространства имен
20. Выберите все типы Tailspin.Web.* , нажав CTRL+A.
Изображение 14
Типы Tailspin.Web.*
21. Перенесите выбранные типы на диаграмму зависимостей, нажимая CTRL.
Изображение 15
Добавление типов на диаграмму
22. Результатом должна быть диаграмма, показывающая, как веб-приложение
взаимодействует с классами, относящимися с Product из проекта Tailspin.Model.
Изображение 16
Диаграмма зависимостей
Примечание: подробне про Architecture Explorer см. лабораторную работу “Using the
Architecture Explorer in Visual Studio Ultimate 2013 to Analyze Your Code”.
Упражнение 2: навигация по
диаграмме зависимостеи
В этом упражнении вы узнаете о том, как управлять и переходить по узлам диаграммы
зависимостей.
1. Увеличьте масштаб, чтобы было лучше видно HomeController.
Примечание: Zoom можно сделать с панели управления или используя колесо мыши.
Изображение 17
Диаграмма
2. Выберите узел класса HomeController и наводите курсор на линии зависимостей, пока не
найдете Target Node от IProductRepository.
Изображение 18
Взаимосвязи между узлами
3. При наведении на линию взаимосвязи появляется навигационный элемент,
предоставляющий два действия, позволяющие переходить на узел-источник либо на
принимающий узел. Нажмите на стрелку, ведущую от HomeController для перехода к
IProductRepository.
Изображение 19
Переход к узлу диаграммы
4. Используя Zoom To Fit, разместите объекты на экране так, чтобы все помещалось и было
видно.
Изображение 20
Zoom To Fit
5. Теперь видно, что класс HomeController относится к интерфейсу IProductRepository
вызовами GetProduct и GetProductCategory.
Изображение 21
Диаграмма зависимостей
6. Нажав два раза на HomeController, можно перейти в исходный код класса.
Изображение 22
Переход от диаграммы к исходному коду
7. Здесь видно, как определенные в интерфейсе методы используются в коде.
Изображение 23
Код HomeController
8. Visual Studio 2012 Update 1 содержит новую функцию Code Map, помогающую
производить одновременную навигацию и визуализацию исходного кода. Используя
имеющуюся функциональность типа направленных графов, функция дает возможность
переходить по исходному коду и добавлять выбранные классы и поля прямо на
диаграмму. Нажмите правой кнопкой на метод Index класса HomeController и нажмите на
Show on Code Map.
Изображение 24
Визуализация метода из кода
9. Стандартным поведением перехода в исходный код является размещение диаграммы во
второй группе вкладок, чтобы была возможность видеть и исходный код, и диаграмму,
что помогает одновременно выполнять навигацию и визуализацию. Указатель в виде
зеленой стрелки показывается рядом с узлом Index. Определение метода Index
подсвечено в редакторе исходного кода.
Изображение 25
Code Map
10. Поставьте курсор на строке определения HomeController и обратите внимание на то, что
Code Map обновит диаграмму, разместив зеленую стрелку рядом с HomeController.
Изображение 26
Code Map
11. Code Map содержит и другие функции, полезные для визуализации в редакторе кода.
Нажмите правой кнопкой на методе Index и выберите Show Related Items on Code Map |
Show Methods This Calls. Эта функция показывает, как блок кода взаимодействует внутри
класса, с другими частями приложения и внешним кодом.
Изображение 27
Визуализация вызовов метода
Изображение 28
Диаграмма зависимостей
12. Нажмите Window | Close All Documents, не сохраняя изменения.
13. Посмотрим, как выявлять взаимосвязи со внешними сборками. Создайте новую
диаграмму, нажав Architecture | Generate Dependency Graph | For Solution.
14. Разверните Externals для обзора внешних сборок, используемых приложением.
Изображение 29
Внешние сборки в Externals
15. Увеличьте масштаб и разверните узел System.Web.dll в группе Externals.
Изображение 30
Узел System.Web.dll
16. Разверните узел System.Web.Routing.
Изображение 31
Узел System.Web.Routing
17. Нажмите на узле класса RouteTable для просмотра его взаимосвязей.
Изображение 32
Взаимосвязи класса RouteTable
18. Нажмите на линию взаимосвязи с Source Node из Tailspin.WebUpgraded.dll. Вместо
перехода в исходный код, как мы делали раньше, создадим новую диаграмму с
интересующими нас взаимосвязями. Нажмите Shift и +.
Изображение 33
Создание новой диаграммы для выбранной взаимосвязи
19. Метод MvcApplication.Application_Start вызывает get_Routes (свойство
RouteTable.Routes).
Изображение 34
Диаграмма взаимосвязи
20. Закройте диаграмму без сохранения изменений.
Упражнение 3: работа с узлами
диаграммы и группировка
В этом упражнении вы увидите, каким образом можно сократить сложность диаграммы
зависимостей с помощью удаления ненужных узлов, группировки и изменения свойств узлов.
1. Нажмите правой кнопкой на диаграмме и выберите Advanced | Group | Collapse All либо
пересоздайте диаграмму, нажав Architecture | Generate Dependency Graph | For Solution.
Изображение 35
Диаграмма зависимостей
2. Разверните узел Externals.
Изображение 36
Группа Externals
Примечание: толстые серые линии, идущие в Externals, обрываются на границе группы.
Цель этого – упрощение визуального восприятия диаграммы. Если вы уберете
группировку Externals, вы сможете увидеть все прямые взаимосвязи между внешними и
внутренними сборками и другую информацию.
3. Нажмите на mscorlib.dll и Delete. Это упростит диаграмму.
Изображение 37
Удаление узла с диаграммы
4. Удалите узел System.dll.
5. Нажмите на Externals, нажмите правой кнопкой и выберите Advanced | Group | Remove
Group. Это уберет группировку, но не узлы, хранящиеся внутри.
6. Удалите Tailspin.Test.Model.dll и
Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll. Это даст возможность лучше
понять, как развернутое приложение работает без компонентов тестирования.
Изображение 38
Упрощенная диаграмма
7. Все еще сложно разделить сборки приложения и сборки, ранее сгруппированные в
Externals. Добавим внешним сборкам свойство, которое изменит их цвет. Нажмите на + на
панели Legend и выберите Node Property | Is External.
Примечание: Можно нажать на Legend в панели управления.
Изображение 39
Создание свойства узла
8. Свойство Is External добавлено на панель Legend. Нажмите левой кнопкой на сером окне
рядом со свойством Is External и нажмите на Background… для открытия окна Color Set
Picker.
Изображение 40
Изменение цвета фона на основе свойства IsExternal
9. В Color Set Picker нажмите на True и выберите красный цвет. Нажмите на OK .
Изображение 41
Выбор цвета для свойства, если True
Изображение 42
Диаграмма зависимостей с разделением сборок по цвету
To give feedback please write to VSKitFdbk@Microsoft.com
Copyright © 2016 by Microsoft Corporation. All rights reserved.
Download