Skip to content
April 20, 2012 / ahriman hpc mode

Использование Architecture Explorer в Visual Studio 2010 Ultimate

В процессе разбора функциональности Visual Studio 2010 Ultimate наткнулся на полезнейшую функцию – Architecture Explorer. Architecture Explorer предоставляет простой интерфейс для анализа связей в вашем приложении, между проектами, между типами, сборками и так далее. С помощью Architecture Explorer можно генерировать красивые DGML-диаграммы, чем мы и займемся.

Допустим, у нас есть некоторое Silverlight-решение, который состоит из 4 проектов. Для того, чтобы проанализировать проект, нам необходимо добраться до Architecture Explorer:

1) Откройте проект (можно взять как свой, так и любой проект, например, из Visual Studio 2010 Training Kit) в Visual Studio 2010.

2) Соберите проект (Build, Rebuild Solution).

3) В меню View выберите Architecture Explorer (рис.1) либо нажмите CTRL+\, CTRL+R.

image

Рис.1. Вызов Architecture Explorer из меню View.

4) Откроется интерфейс работы с Architecture View (рис.2). По умолчанию в нем, естественно, ничего не отображается.

image

Рис. 2. Интерфейс Architecture View.

5) Пойдём по порядку. Class view позволяет увидеть все пространства имён, доступные в решении. Нажмите на Class View и в окошке в правой части появятся соответствующие данные (рис. 3).

image

Рис.3. Просмотр пространств имен решения.

6) В моем проекте 9 пространств имен. Щелкнув два раза по любому из них (Visual Studio при этом может весьма задуматься, это зависит от мощности компьютера и величины проекта).Щелкнув же один раз на пространстве имен, мы получим немного правее список типов, доступных в данном пространстве имен (рис. 4).

image

Рис. 4. Типы в пространстве имён.

7) Аналогично – щелкнув два раза, перейдем к коду типа, щелкнув один раз, получим еще более детальные сведения об объекте, а именно – его членов (рис. 5).

image

Рис. 5. Получение членов типа из пространства имён.

8) Но и это еще не всё. Щелкнув один раз на члене типа, мы можем получить его содержание – методы, свойства и так далее (рис. 6).

image

Рис. 6. Получение содержимого члена типа.

9) И самое вкусное, на мой взгляд, что остаётся напоследок – при выборе метода мы можем просмотреть вызовы методов, которые в нем происходят. А потом посмотреть на методы, которые вызываются методами, которые были вызваны… и так далее. Прекрасный способ анализировать большие приложения. (рис. 7). Обратите внимание, что Architecture Explorer работает со скомпилированным кодом, используя рефлекшн, однако это режим по умолчанию, можно также работать с кодом внутри скомпилированной сборки.

image

Рис. 7. Просмотр вызовов методов.

При работе с данной функциональностью мы можем также фильтровать получаемые объекты (рис. 8).

image

Рис. 8. Фильтрация получаемых объектов.

В этом окошке также видно, сколько соответствующих объектов находится на этом уровне.

Работаем дальше. Давайте нажмём на любую из колонок с названием подокна (например, Types). Появится окно, с помощью которого можно организовать дополнительные опции фильтрации, группировки и т.д.(рис. 9). Выберем в нем Calls и потом Generic Arguments. Обратите внимание, что не для каждого объекта будут показаны сведения, а только, например, для методов.

image

Рис. 9. Дополнительные возможности.

image

Рис.10

Если вы выбрали Return Types, то можно, естественно, посмотреть методы, которые доступны для данного типа, который возаращается данным объектом. В целом, интерфейс можно зацикливать как угодно, и это очень удобно. Главное – не запутаться (рис.11).

image

Рис. 11.

Перейдем к следующему этапу – созданию диаграмм. Для создания диаграммы на нужно нажать на соответствующую кнопку в меню в интерфейсе Architecture Explorer (рис. 12).

image

Рис. 12. Кнопка создания диаграммы.

Обратите внимание, что данная кнопка учитывает вложенность ваших действий и количество открытых окошек в интерфейсе. Если их будет очень много – диаграмма может получиться весьма развесистая. На рис .13 представлена диаграмма, которая получилась у меня с учетом четырех открытых окон – Namespaces, Types, Members, Calls.

image

Рис. 13. Созданная диаграмма DGML.

DGML-диаграммы являются стандартным типом, взаимодействие с которым интегрировано в среду разработки Visual Studio 2010, что значит, что мы можем редактировать, удалять элементы, в целом, крутить как хотим получившуюся диаграмму. Можно применять изменения как на уровне всей диаграммы, так и на уровне какого-либо элемента (рис. 14).

image

Рис. 14. Созданная диаграмма DGML, управление элементами.

Из диаграммы мы опять же можем посмотреть код элемента, посмотреть DGML, сохранить диаграмму в универсальном формате .XPS и так далее. Также вы можете переносить из интерфейса Architecture Explorer какие-либо элементы на диаграмму и зависимости будут автоматически определены, а диаграмма обновится (рис. 15).

image

Рис. 15. Перенос элемента из интерфейса Architecture Explorer на диаграмму DGML

Закрывая рассказ про Class View из интерфейса Architecture Explorer, нажмите кнопку Clear Columns для очищения интерфейса (рис. 16).

image

Рис. 16. Кнопка Clear Columns.

Переходим к следующему – Solution View. Solution View позволяет анализировать все решение на более высоком уровне. Нажмите на Solution View, чтобы появился список проектов, содержащихся в решении (рис. 17).

image

Рис. 17. Solution View.

Выберите какой-либо проект. Справа от него в окошке появится список файлов, содержащихся в проекте. В окошке со списком файлов можно воспользоваться текстовым полем для фильтрации файлов, допустим, по маске “.cs”. (рис. 18).

image

Рис. 18. Использование фильтрации в списке файлов.

Выберите все файлы cs и нажмите кнопку Create New Graph. Вам будет выведена диаграмма со всеми файлами исходников (рис. 19).

image

Рис. 19. Диаграмма файлов.

Вернитесь в интерфейс Architecture Explorer и выберите в Node Navigation отображение классов Classes, после чего выделите несколько классов (иначе диаграмма может получиться слишком развесистая и с ней будет просто-напросто сложно работать) и нажмите Create New Graph (рис. 20, рис. 21).

image

Рис. 20. Выбор отображения классов.

image

Рис. 21. Созданная диаграмма классов и зависимостей.

И, наконец, подходим к возможностям Architecture Explorer по анализу внешних скомпилированных сборок .NET. Для этого вернитесь в интерфейс Architecture Explorer и нажмите кнопку Select Files. Появится диалог открытия файла.

Перейдите по файловой системе в папку c:\windows\microsoft.net\framework\v4.0.30319 и нажмите Enter.Найдите файл System.Drawing.dll (либо любую другую сборку) и нажмите Enter. В окне интерфейса Architecture Explorer появится выбранная вами сборка. Укажите отображение только классов с помощью Node View (рис. 22).

image

Рис. 23. Отображение классов сборки.

Введите в строку фильтрации над списком классов что-нибудь, например, Image, для того, чтобы диаграмма хотя бы влезла на один экран. После этого выберите все классы и нажмите Create New Graph. Полученная диаграмма весьма красиво отображает схему зависимостей между классами сборки. (рис. 24).

image

Рис. 24. Диаграмма классов, полученных из скомпилированной сборки .NET

Последние пара слов будут о режимах отрисовки. В верхнем меню Visual Studio доступна панель режимов отрисовки (рис. 25).

image

Рис .25. Режим Quick Clusters.

Вы можете выбрать различные режимы в стиле “слева-направо” и “сверху-вниз”, либо Quick Clusters (элементы будут сбалансированы в диаграмме), либо Butterfly Mode (узлы и элементы, которые не напрямую ссылаются на класс, будут удалены с диаграммы). Кроме этого, можно посмотреть матрицу зависимостей и посмотреть, насколько друг от друга зависимы различные элементы на диаграмме (рис. 26).

image

Рис. 26. Просмотр матрицы зависимостей.

В целом, Architecture Explorer предоставляет множество возможностей по анализу структуры вашего приложения.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: