教你如何用好Visual Studio 2010层次验证

原创
开发 后端
本文将为大家讲述作者最为喜欢的一项Visual Studio 2010功能——层次验证,帮助大家进一步改善程序的架构。

【51CTO经典译文】在之前的“我喜欢的特性”这篇博文中,我讲到如何利用Visual Studio 2010终极版的“依赖关系图”特性去理解系统的结构关系。亲自动手完成一个项目对加深所了解的知识是很有益处的。接下来,我要讲的就是层次验证(Layer Validation),它能够进一步改善程序的架构。

建立一个层次图(Layer Diagram)

我们将使用上篇博文的“Tailspin Toys”应用程序来进行说明。既然我们已经知道这个应用程序的基本结构,接下来的目标就是让它和我们的架构能够很好的结合到一起。在这个例子中,应用程序所采用的是模型-试图-控制器(MVC)架构。我们需要确认的是,它真的是按照这种架构模式来实现的。首先,我们通过Architecture(架构)菜单新建一个层次图:

 

层次图 

层次的选择

它将产生一个空的层次图,我们可以在其中指定和规划我们的架构层次。不需做太多的工作,我们就可以在窗口上看到所有的基本层次:

基本层次

 虽然这看上去是一个合理的架构,但是我们需要确认物理实现是否真的和逻辑上的结构一一对应。要做到这一点,我们可以把类的实现拖动到相应的实现层次上:

 

实现层次

当把类的实现放置在正确的层次上后,右键点击Design Surface(设计图面)-> Generate Dependencies(产生依赖关系)就可以得到相应的依赖关系图:

依赖关系图

一旦按照上面的步骤完成整个过程,你将会得到类似于下面的一个图。层次资源管理器(Layer Explorer)可以用来浏览每一层次中的具体内容:

具体内容

#p#

改进你的实施方法:

在这里我们有一副图描述了哪些已经被实际构建。但是我对这幅图有一个疑问:在MVC模式中我们不想让View直接和Model对话。这种情况往往发生在所写的代码直接访问数据层而没有通过适当的业务逻辑层(一个很容易犯的低级错误)。下面就让我们通过删除这一个“箭头符号”来解决这个问题:

 

改进方法

在我们删除这一“箭头符号”后,我们可以用鼠标右键单击图形,然后选择验证架构(Validate Architecture): 

 

选择架构验证

在这里,Visual Studio将会分析所有的依赖关系,并查找其中任何违背这个层次图的依赖关系,然后错误就会出现在错误列表中:

错误列表

现在,我可以浏览并修改我的代码了,并重复使用验证架构直到没有任何错误为止。

在构建中执行分层:

这里我有一个清晰的架构和相应的实施方法。我们都知道接下来将发生什么:由于任务被执行、错误被修复,该代码将再次从架构中漂移(drift)。因此我们需要找到一种方法来保持同步。

 

为了解决这个问题,我们将添加一个新的TFS Build Definition,通过运用Gated Check-in来执行这一架构:

TFS Build Definition

当你运用Gated Check-in的时候,所有你提交到TFS的变化抖必须首先通过全部的常规测试。在这种方法中,如果你存在错误,所有的变化将不会被应用,也不会进入构建中。在这种情况下,我们只需要在进程选项卡中多加一个步骤即可。

Gated Check-in

此时,构建过程将启动架构验证步骤,以防止任何违规事件对TFS进行检查。

总结:

有几个关键的概念需要明确:

如果你正在写一个全新的代码,你可以从逻辑设计开始并朝着实现你设计的方向努力。

如果你是从现有的代码开始,你将发现你已经拥有的东西,也能朝着一个完美的逻辑设计方向努力。

一旦你的物理和逻辑得到同步,你就可以用防止漂移(drift)的自动方法(如gated check-in)来实现你的设计。

【编辑推荐】

  1. Visual Studio 2010中Parallel类实现并行计算
  2. Visual Studio 2010中C++项目升级指南
  3. Visual Studio 2010中测试用例工作项类型介绍
  4. 在Visual Studio 2010选择合适的项目测试方法
  5. 细数VS 2003到Visual Studio 2010的开发之路

 

责任编辑:彭凡 来源: 51CTO
相关推荐

2010-09-17 08:50:30

Visual Stud

2010-09-25 08:50:00

Visual Stud

2011-08-02 08:48:58

Visual Stud

2010-02-26 09:18:24

Visual Stud

2009-12-02 09:43:38

Visual Stud

2009-11-10 13:43:37

Visual Stud

2010-04-08 16:49:26

Visual StudMVC 2.0

2009-11-13 09:05:05

Visual Stud

2010-02-22 16:43:33

Visual Stud

2009-11-11 09:48:06

Visual Stud

2010-06-29 09:02:59

Visual Stud

2022-06-27 17:40:14

大数据数据科学

2009-07-18 16:05:53

光纤拉远TD-SCDMA

2009-11-11 14:26:13

Visual Stud

2010-04-12 08:43:45

Visual Stud

2010-04-06 17:32:02

Visual Stud

2011-02-13 17:10:28

Visual Stud

2009-11-13 14:59:12

Visual Stud

2010-04-16 14:08:46

Visual Stud

2009-12-11 13:14:45

Visual Stud
点赞
收藏

51CTO技术栈公众号