我最喜欢的VS2010新功能之:依赖关系图和DGML

来源:互联网 发布:晨曦清单计价软件 编辑:程序博客网 时间:2024/06/11 02:47

[原文发表地址] Favorite VS2010 Features: Dependency Graphs and DGML

[原文发表时间] Tuesday, February 02, 2010 8:00 AM

VS2010发布的脚步离我们越来越近,在此,我将我喜欢的VS2010新功能给大家逐一介绍。本文将讨论一下依赖关系图及其底层支持,DGML。

生成依赖关系图

我肯定,在某些时候,你加入了一个不是由你创建的团队(或者继承了一个代码库)。我想这是一个好机会去使用依赖关系图,因为如果使用依赖关系图你就不再需要永无休止的去了解一大堆关于该项目的的文档集及该项目架构。难道你不想让自己尽快熟悉自己所投身的项目。依赖关系图应运而生。

使用VS2010 Ultimate能够很容易的生成一个依赖关系图,只要选择Architecture, Generate Dependency Graph菜单就可以了。

下面这个例子中,我们借助Tailspin sample application项目来生成命名空间依赖关系图。VS将会遍历该项目程序的二进制代码,搜索所有的命名空间依赖关系并且生成一个DGML数据文件。视图最高级从命名空间最高级别的依赖的最高级开始(程序集边界):

从这里你可以导航依赖关系,还可以深入查看更详细的信息。鼠标短暂停留在某结点项上,将会显示该项的详细信息。同样的,停留在链接上也会提供该链接的更多信息(如方法调用或引用)。点击展开按钮,图片会显示下级详细项信息:

你还可以继续浏览链接和节点项到一个粒度更细微的级别。本例中某命名空间下的类关系图如下:

然后,你还可以继续深入到源码本身。

结构浏览器

除了系统的可视化视图外,我们还可以使用结构浏览器深入研究我们的应用程序。激活结构浏览器很简单:

结构浏览器窗口允许你通过鼠标直接点击和输入过滤关键字两种方式深入到内容内部。下图我们查找包含’Model’字符串的命名空间下的所有类,然后再深入查看该命名空间下类的内部定义。

结构浏览器支持可订制功能,允许你创建并保存查询,方便后续查询。

DGML(Directed Graph Markup Language)

依赖关系图使用DGML DOM存储在XML中。使用DGML很简单(Cameron在这里有个入门)。如果你打开上面的例子,你会发现所有Tailspin应用的原始数据。

这使该系统异常强大,因为Visual Studio中的DGML查看器能够查看所有DGML格式文档,包括你自己使用工具使用自己的工具创建的DGML文件。例如:VS自带了一个解释如何使用鼠标和DGML查看器交互的内置帮助文件。该文件本身就是一个DGML文件:

系统有很多容易扩展的地方。如:我们已经有第三方软件提高依赖关系图的信息量,包含诸如运行分析覆盖率等更多数据信息。

总结

本文只是简单介绍了浏览已有软件结构的几种新方法。后续为了帮助你更深入的理解本系统,我们想提供一些工具,允许你扩展结构(或者必要时修复)。这些工具支持描述程序的逻辑层次关系,强制部署新的变化在程序有新的变化的时候,可以强制对程序的结构进行分层部署。

0 0
原创粉丝点击