Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,824 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Практическое занятиеИзучение Кода с использованиемИнструментов Архитектуры в VisualStudio Ultimate 2012Версия практической: 11.0.51106.01 Обновление 1Последнее обновление: 27.11.2012
  2. 2. СОДЕРЖИМОЕОПИСАНИЕ.................................................................................................................................................3УПРАЖНЕНИЕ 1: ВВЕДЕНИЕ В ВОЗМОЖНОСТИ ГЕНЕРИРОВАНИЯ ГРАФА ЗАВИСИМОСТЕЙ .3УПРАЖНЕНИЕ 2: ВВЕДЕНИЕ В ВОЗМОЖНОСТИ НАВИГАЦИИ ГРАФА ЗАВИСИМОСТЕЙ.........14УПРАЖНЕНИЕ 3: РАБОТА С УЗЛАМИ ГРАФА И ГРУППИРОВКА ....................................................26
  3. 3. ОписаниеВ этой практической работе вы узнаете, как создавать и просматривать графы зависимости с VisualStudio Ultimate 2012 в порядке для лучшего понимания архитектуры системы.Предварительные требованияЧтобы выполнить это практическое занятие, вам необходима виртуальная машина Visual Studio2012 предоставляемая Microsoft. Для получения дополнительной информации по получению ииспользованию этой виртуальной машины, пожалуйста, см. это сообщение в блоге.Обновление практической работыДля Обновления 1 были сделаны следующие изменения для данного практического занятия: Добавлен дополнительный шаг для Упражнения 2 - введение в возможности соответствиякода.УпражненияЭта практическая работа содержит следующие упражненния:1. Введение в возможности Генерирования Графа Зависимостей2. Введение в возможности Навигации Графа Зависимостей3. Работа с Узлами Графа и ГруппировкаОценочное время выполнения заданий: 30 минут.Упражнение 1: Введение ввозможности Генерирования ГрафаЗависимостейВ этом упражнении вы узнаете, как создать граф зависимостей, который показывает отношениямежду типами сборки приложений (таких как вызовы, наследования, возвратов и так далее), атакже типов внешних сборок.1. Зарегистрироваться как Julia. Пароли у всех пользователей P2ssw0rd.
  4. 4. 2. Запустите Microsoft Visual Studio из Start | All Programs | Microsoft Visual Studio 2012 |Visual Studio 2012.3. Нажмите ссылку Connect to Team Foundation Server на Стартовой Странице.Рисунок 1Подключение к Team Foundation Server4. Выберите TailspinToysCollection и нажмите Connect для продолжения. Если появитсязапрос на подтверждение, выберите Yes.Рисунок 2Выбор проекта TailspinToysCollection5. Откройте Source Control Explorer, нажав на ссылке в Team Explorer | Home.
  5. 5. 6. В Source Control Explorer перейдите к Tailspin Toys | Development | Iteration 2 и выполнитедвойной щелчок мыши на файле TailspinToys.sln для открытия решение Tailspin Toys.Рисунок 3Открытие проекта7. Перестройте решение (Build | Rebuild Solution из главного меню). Этот шаг может занятьнесколько минут до завершения.8. Самый быстрый способ начать работу - это генерирование общего графа зависимостей длявсего решения. Создайте новый граф зависимостей (Architecture | Generate DependencyGraph | For Solution). Граф зависимостей хранится в формате Directed Graph MarkupLanguage (далее DGML), который позволяет вам работать с ним с помощью Visual Studio2012, а также других стандартных инструментов.Примечание: Создание графа зависимостей для всех проектов в решении первоначальноможет занять несколько минут. При создании графа зависимостей в первый раз,создается индекс кода для всех зависимостей, которые встречаются, чтобы улучшитьпроизводительность последующих операций.
  6. 6. Рисунок 4Граф зависимостей для всего решения9. На данный момент у нас только представление зависимостей между сборками, которыеявляются частью решения, и внешними сборками. Серые линии различной толщиныпредставляют величину отношений взаимозависимостей между сборками, чем большетолщина линии, тем больше связь. Каждый узел сборки может быть динамически раскрыт,чтобы показать содержащиеся дочерние узлы, которые мы будем изучать в следующемупражнении.Рисунок 5Узлы могут раскрываться динамическиПримечание: Представление сгенерированного графа зависимостей, которые вы видите,может отличаться от показанного на рисунке. Вам, возможно, потребуется
  7. 7. дополнительно масштабировать, прокрутить и визуально найти объекты, указанные вшагах практической работы.10. Очистите диаграмму, нажав Ctrl + A и затем клавишу Delete.11. Можно также начать с создания граф зависимостей с более узкой области с помощьюSolution Explorer или Architecture Explorer. Это позволит вам выбрать только те типы иличлены, которые вы хотите видеть, и затем создать новый граф или добавить эти элементына существующий граф.12. Скажем, мы заинтересованы в поиске зависимостей и других отношений класса Product, врамках проекта Tailspin.Model. Сузьте область Solution Explorer, щелкнув правой кнопкоймыши на узел проекта Tailspin.Model и выбрав параметр Scope to This.Рисунок 6Ограничение по определенному проекту в Solution Explorer13. В поле поиска Solution Explorer введите “Product” для выполнения поиска. Это быстронайдет и подсветит код, который содержит искомую строку.
  8. 8. Рисунок 7Поиск текста в типах и членах решения14. Выберите результаты поиска, нажав в любом месте и выбрав Ctrl + A.
  9. 9. Рисунок 8Выбор всего результата поиска15. На панели инструментов Solution Explorer нажмите кнопку Show on Code Map.Рисунок 9Добавление выбранных типов и методов из Solution Explorer в активный граф16. Полученный граф теперь показывает выбранный и связанные классы с Product, члены и ихотношения друг с другом.
  10. 10. Figure 10Граф, показывающий выбранные типы и членыПримечание: Можно также перетащить типы и члены из окна Solution Explorer в граф.Ваш граф может выглядеть немного иначе.17. Еще одним способом для создания или добавления графа зависимостей являетсяиспользование Architecture Explorer, который обеспечивает тонкую настройку навигации ивыбора типов и членов. Откройте Architecture Explorer из Architecture | Windows.Рисунок 11Начальное представление Architecture Explorer
  11. 11. 18. Допустим, что мы хотим видеть, как связанные типы и методы Product из проектаTailspin.Model относятся к проекту Tailspin.Web. В Architecture Explorer выберите параметрClass View для просмотра всех доступных пространств имен.Рисунок 12Начало навигации в Class View19. В поле поиска над списком имен введите «Tailspin.Web» и нажмите Enter, чтобы показатьтолько пространства имен, определенных в рамках проекта Tailspin.Web.Рисунок 13Ограничение результатов пространства имен с использованием фильтра20. Выберите все пространства имен с помощью Ctrl + A для получения списка всехсодержащихся типов.
  12. 12. Рисунок 14Продолжение навигации выбором пространства имен21. Как только все типы для пространства имен Tailspin.Web.* отображены, выберите их все(снова с использованием Ctrl + A).Рисунок 15Выбор всех перечисленных типов22. Нажмите мышкой и удерживайте на выбранных типах и затем начните перетаскивать натекущий граф зависимостей. Перед тем как отпустить на граф зажмите клавишу Ctrl ибросьте типы на граф. Модификатор элемента управления вызовет родительскиеконтейнеры для добавления типов на диаграмму.
  13. 13. Рисунок 16Объединение дополнительных типов на существующих граф23. В результате объединения новые типы с существующим графом приведет кпредставлению, которое обеспечивает некоторое понимание как веб-приложениеотносится к классам Product из проекта Tailspin.Model.
  14. 14. Рисунок 17Часть представления графа, который показывает, как выбранные сущности связаныПримечание: Для изучения как использовать Architecture Explorer смотритепрактическую работу “Использование Architecture Explorer в Visual Studio Ultimate 2012для анализа вашего кода”.Упражнение 2: Введение в возможности Навигации ГрафаЗависимостейВ этом упражнении мы узнаем больше о том, манипулировать и выполнять навигацию в графезависимостей.1. Начнем с графа, который мы подготовили в ходе последнего задания, увеличьте ираспределите по необходимости, для того получить хорошее представление узла классаHomeController.Примечание: Масштабировать можно с помощью кнопок на панели инструментов графаили просто с помощью колеса прокрутки мыши.
  15. 15. Рисунок 18Часть представления графа с классом HomeController2. Выберите узел класса HomeController и задержите курсор мыши над линией связи пока непоявится один из Target Node для IProductRepository.Рисунок 19Просмотр связей между узлами графа
  16. 16. 3. Элемент управления навигацией, который появляется при наведении на линии связи,предоставляет два действия, которые позволяют перемещаться к исходному или целевомуузлу. Нажмите на стрелку, указывающую от узла класса HomeController для навигации кIProductRepository.Рисунок 20Навигация к другому узлу графа4. Используйте кнопку Zoom To Fit на панели инструментов графа для подгонки всего дляотображения на экране.Рисунок 21Расположение кнопки Zoom To Fit5. Вы должны теперь видеть, как класс HomeController связан с интерфейсомIProductRepository, с помощью вызовов GetProduct и GetProductCategory.
  17. 17. Рисунок 22Граф зависимостей, который показывает, как класс HomeController используетIProductRepository6. Вы также можете перейти из графа непосредственно к связанному коду. Дваждыщелкните на узле HomeController для загрузки HomeController.cs в окне редакторакода.
  18. 18. Рисунок 23Переход из графа к источнику7. Здесь вы можете увидеть точно, как методы, определенные в интерфейсе,используются в коде.Рисунок 24Представление кода для HomeController8. Обновление 1 содержит новую функцию, называемую Code Map, чтобы облегчитьодновременную навигацию и визуализацию кода. Опираясь на существующуюфункциональность, такую как ориентированные графы, она позволяет вам перемещатьсяпо вашему исходному коду и добавлять выбранные классы, члены, поля и так далеенепосредственно в представление графа. Например, щелкните правой кнопкой мыши на
  19. 19. методе Index в рамках класса HomeController и выберите Show on Code Map изконтекстного меню.Рисунок 25Визуализация метода напрямую из редактора исходного кода9. Поведение по умолчанию при переходе к источнику — это размещение графазависимостей в группе вторичных вкладок, чтобы исходный код и граф были видны в однои то же время. Это дополнительно обеспечивает одновременную навигацию ивизуализацию. Кроме того обратите внимание, что указатель с зеленой стрелкойотображается рядом с узлом индекса в представлении графика и что определение методаиндекс выделен в окне редактора исходного кода.Рисунок 26Функциональность Code Map в действииПримечание: При использовании функции Code Map полезно делать граф и исходныйкод видимыми в одно и то же время, либо с помощью групп вкладок или плавающегопредставления графа и поместив его в своем собственном окне (при использованиинескольких мониторов). Visual Studio автоматически сделает это для вас в некоторыхобстоятельствах, но если у вас уже есть открытый граф в той же группе вкладок, что ифайл исходного кода, они будут восстанавливаться в той же группе вкладок.10. Поместите курсор на строку, которая определяет класс HomeController, еще раз обратитевнимание, что функцию Code Map также обновляет представление графа, показываязеленую стрелку рядом с узлом HomeController.
  20. 20. Рисунок 27Code Map синхронизирует представление кода и графов11. Функция Code Map также предоставляет ряд других функций визуализации через редакторкода. Щелкните правой кнопкой мыши на определении метода Index и выберите ShowRelated Items on Code Map | Show Methods This Calls. В более сложных методах это можетпомочь показать, как часть кода взаимодействует со своим собственным классом, другимиархитектурными слоями приложения и внешним кодом.Рисунок 28Визуализация вызовов методов из кода
  21. 21. Рисунок 29Граф, показывающий методы вызываемые методом Index12. Теперь давайте рассмотрим, как мы можем перемещаться по графу, чтобы определить,как мы используем внешние сборки. Создайте новый граф зависимостей из Architecture |Generate Dependency Graph | For Solution.13. Разверните группу Externals для поиска внешних сборок, используемых приложениемTailspin.
  22. 22. Рисунок 30Развертывание группы Externals14. Увеличьте и перейдите в узел System.Web.dll в группе Externals так чтобы вы видели всеиспользуемые пространства имен.Рисунок 31Развертывание узла System.Web.dll15. Найдите и разверните узел System.Web.Routing, чтобы увидеть содержимое.
  23. 23. Рисунок 32Развертывание узла Systm.Web.Routing16. Выберите узел класса RouteTable для просмотра линий связей.Рисунок 33Узел класса RouteTable, показывающий входящие ссылки17. Найдите и выберите линию связи от исходного узла в Tailspin.WebUpgraded.dll. Мы моглибы просто использовать кнопки со стрелками для перехода к исходному узлу, как мыделали это ранее, но на этот раз, давайте создадим новый граф, который просто содержитотношения, которые в настоящее время мы заинтересованы найти. Чтобы создать новыйграф, нажмите с shift-том левой кнопкой мыши в центре на кнопку +.
  24. 24. Рисунок 34Создание нового графа показывает выбранные связи18. В результирующем графе вы можете видеть, что метод MvcApplication.Application_Startвызывает метод get_Routes (по сути, свойство RouteTable.Routes).
  25. 25. Рисунок 35Граф, показывающие выбранные связи19. Закройте схемы ссылок без сохранения изменений.
  26. 26. Упражнение 3: Работа с УзламиГрафа и ГруппировкаВ этом упражнении вы узнаете, как уменьшить сложность графа зависимостей, путем удалениянежелательных узлов, регулируя группировки узлов и изменения свойств узла графа.1. Если продолжаете предыдущее упражнение, закройте графа ссылок и вернитесь кначальному графу зависимостей. Затем выберите Advanced | Group | Collapse All.. Влюбом случае, перегенерируйте граф, выбрав Architecture | Generate Dependency Graph |For Solution.Рисунок 36Граф зависимостей для всего решения2. Разверните узел Externals из графа зависимостей для открытия внешних сборок,используемых приложением Tailspin.Рисунок 37Открытая группа Externals, которая показывает входящие связи
  27. 27. Примечание: Толстые серые линии связи подключены к группе Externals, останавливаясьна границе группы. Цель этого заключается в том, чтобы уменьшить визуальнуюсложность графа зависимостей. Если вы удалите группировку Externals, вы сможетеувидеть все линии прямой связи между внешними и внутренними сборками, а такжеболее подробно между сборками, которые сгруппированы в пределах Externals.3. Выберите узел сборки mscorlib.dll и нажмите клавишу Delete, чтобы удалить его из графа.Обоснование удаления этого узла, а также многих других широко используемых внешнихсборок и типов, может быть в том, что они добавляют слишком много шума в граф и непозволяет в нем легко ориентироваться.Рисунок 38Удаление узла из графа4. Удалите узел System.dll из группы Externals.5. Выберите группу Externals, щелкните правой кнопкой мыши и Advanced | Group | RemoveGroup. Это позволит удалить группировку, но не узлы графа, содержащиеся в ней.6. Удалите узел Tailspin.Test.Model.dll из графа. Мы должны удалить этот узел, чтобыполучить лучшее видение как развернутое приложение работает без компонентовтестирования.
  28. 28. Рисунок 39Упрощенный граф зависимостей7. Хотя удаление группы Externals дает нам лучшее представление о том, что происходит, этоделает его трудно различимым между сборками приложения и теми, которые были ранеесгруппированы, как Externals. Это может быть исправлено путем добавления свойства узладля окрашивания в другой цвет для внешней сборки. Нажмите кнопку + на панели Legendи выберите Node Property | Is External.
  29. 29. Рисунок 40Создание свойства узла, которое ссылается на IsExternal8. Это свойство узда Is External добавляется к панели Legend. Левой кнопкой мыши нажмитена сером поле справа от свойства Is External и выберите свойство Background..., чтобызагрузить окно Color Set Picker.Рисунок 41Модификация цвета фона на основе свойства IsExternal9. В окне Color Set Picker, выберите True в выпадающем поле и выберите красный цвет (илидругой отличный от синего цвета) и нажмите кнопку ОК.
  30. 30. Рисунок 42Выбор другого цвета для свойства, когда оно справедливо
  31. 31. Рисунок 43Граф зависимостей, показывающий узлы внешних ссылок красным цветомСвои отзывы и предложения вы можете отправить по электроннойпочте: VSKitFdbk@Microsoft.com© 2013 г. Корпорация Microsoft. Все права защищены.

×